PostOnce · Schema

WorkflowSettings

CompanySocial MediaAutomationMarketing

Properties

Name Type Description
content_filters object
platform_settings object
destination_publish_settings object
View JSON Schema on GitHub

JSON Schema

postonce-workflow-settings-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/postonce/main/json-schema/postonce-workflow-settings-schema.json",
  "title": "WorkflowSettings",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/postonce-api-openapi.json#/components/schemas/WorkflowSettings",
  "type": "object",
  "properties": {
    "content_filters": {
      "type": "object",
      "properties": {
        "types": {
          "type": "object",
          "properties": {
            "text": {
              "type": "boolean"
            },
            "image": {
              "type": "boolean"
            },
            "quote": {
              "type": "boolean"
            },
            "video": {
              "type": "boolean"
            }
          }
        },
        "hashtags": {
          "type": "object",
          "properties": {
            "include": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "exclude": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "platform_settings": {
      "type": "object",
      "properties": {
        "tiktok": {
          "type": "object",
          "properties": {
            "keep_source_thumbnail": {
              "type": "boolean",
              "default": true,
              "description": "When false, TikTok workflow posts do not prepend the source thumbnail as the first video frame."
            }
          }
        }
      }
    },
    "destination_publish_settings": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "minimum_interval_minutes": {
            "type": "integer",
            "minimum": 1
          },
          "caption_position": {
            "type": "string",
            "enum": [
              "before",
              "after"
            ],
            "description": "Placement of custom caption text. Defaults to after."
          },
          "remove_comment_dm_prompts": {
            "type": "boolean",
            "default": false,
            "description": "Remove comment/DM prompts from the original caption for this destination before applying custom before/after text. Supported on the same platforms as caption_ending."
          },
          "adapt_caption": {
            "type": "boolean",
            "default": false,
            "description": "Rewrite the caption for this destination with AI at publish time, after comment/DM prompt removal and before custom text. Links are always kept. If the rewrite fails, the original caption is published. Supported on the same platforms as caption_ending."
          },
          "adapt_caption_instructions": {
            "type": "string",
            "maxLength": 1000,
            "description": "Optional style instructions for the AI rewrite. When set, they replace the built-in guidance for the destination platform."
          },
          "caption_ending": {
            "type": "string",
            "maxLength": 2000,
            "description": "Optional custom caption text for this destination. Placement follows caption_position (after by default). Empty clears it. Supported for Instagram, Threads, X, Facebook, LinkedIn, Bluesky, Pinterest, YouTube and TikTok. Platform caption limits also apply."
          },
          "snapchat": {
            "type": "object",
            "required": [
              "publish_targets"
            ],
            "properties": {
              "publish_targets": {
                "type": "array",
                "minItems": 1,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": [
                    "spotlight",
                    "public_story"
                  ]
                }
              },
              "locale": {
                "type": "string",
                "pattern": "^[a-z]{2}_[A-Z]{2}$",
                "default": "en_US"
              }
            }
          },
          "threads": {
            "type": "object",
            "properties": {
              "caption_max_length": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 500,
                "description": "Maximum outgoing Threads caption length for this destination. Custom limits prefer whole words; 500 preserves default behavior."
              }
            }
          },
          "instagram": {
            "type": "object",
            "anyOf": [
              {
                "required": [
                  "publish_as_trial_reel"
                ]
              },
              {
                "required": [
                  "remove_mentions"
                ]
              }
            ],
            "properties": {
              "remove_mentions": {
                "type": "boolean",
                "default": false,
                "description": "Remove @ from mentions in this Instagram destination's outgoing captions. Preserves usernames and email addresses."
              },
              "publish_as_trial_reel": {
                "type": "boolean",
                "default": false,
                "description": "When true, eligible single-video Instagram Reels publish as Trial Reels for non-followers with manual graduation. Images and carousels publish normally."
              }
            }
          },
          "reddit": {
            "type": "object",
            "required": [
              "subreddit"
            ],
            "properties": {
              "subreddit": {
                "type": "string"
              },
              "post_type": {
                "type": "string",
                "enum": [
                  "auto",
                  "self",
                  "link"
                ],
                "default": "auto"
              },
              "flair_id": {
                "type": "string"
              },
              "flair_text": {
                "type": "string"
              },
              "nsfw": {
                "type": "boolean",
                "default": false
              },
              "spoiler": {
                "type": "boolean",
                "default": false
              },
              "send_replies": {
                "type": "boolean",
                "default": true
              }
            }
          }
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/postonce-workflow-settings"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.