{"openapi":"3.1.0","info":{"title":"Postroom Scoped REST API","version":"1.1.0","description":"Owner-isolated, revocable keys. Preview creation never grants publishing approval. Optional automation is a separate workspace opt-in policy."},"servers":[{"url":"https://social.notacompanynameyet.com/api/v1"}],"paths":{"/accounts":{"get":{"operationId":"list_accounts","summary":"list accounts","x-required-scopes":["read"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Accounts"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/brand":{"get":{"operationId":"read_brand","summary":"read brand","x-required-scopes":["read"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/queue":{"get":{"operationId":"read_queue","summary":"read queue","x-required-scopes":["read"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"account_id","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Posts"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/posts/{id}":{"get":{"operationId":"read_post_status","summary":"read post status","x-required-scopes":["read"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostStatus"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/post_status":{"get":{"operationId":"read_post_status_alias","summary":"read post status alias","x-required-scopes":["read"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"post_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostStatus"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/preview":{"post":{"operationId":"create_preview","summary":"create preview","x-required-scopes":["preview"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable retry key; reuse only with identical method, path and input. Retained for 30 days.","schema":{"type":"string","pattern":"^[-A-Za-z0-9_.:]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Draft"}}}},"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Preview"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/workflow":{"post":{"operationId":"create_workflow_previews","summary":"create workflow previews","x-required-scopes":["preview"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable retry key; reuse only with identical method, path and input. Retained for 30 days.","schema":{"type":"string","pattern":"^[-A-Za-z0-9_.:]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRequest"}}}},"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowResponse"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"1–5 single-account drafts, saved as immutable one-hour previews. Optional accounts/brand flags additionally require read scope. Idempotency-Key becomes workflow_key. Concurrent identical retries recover per-item results without duplicating saved previews; expired previews need new input/key and review. No scheduling or arbitrary code execution."}},"/schedule":{"post":{"operationId":"schedule_approved_preview","summary":"schedule approved preview","x-required-scopes":["schedule"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable retry key; reuse only with identical method, path and input. Retained for 30 days.","schema":{"type":"string","pattern":"^[-A-Za-z0-9_.:]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"draft_id":{"type":"string","format":"uuid"},"confirmation":{"type":"string","const":"approve_exact_preview"},"brand_override":{"type":"string","const":"acknowledge_brand_rule_violations"}},"required":["draft_id","confirmation"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleResult"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cancel":{"post":{"operationId":"cancel_queued_post","summary":"cancel queued post","x-required-scopes":["schedule"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable retry key; reuse only with identical method, path and input. Retained for 30 days.","schema":{"type":"string","pattern":"^[-A-Za-z0-9_.:]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"post_id":{"type":"string","format":"uuid"}},"required":["post_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/automate":{"post":{"operationId":"apply_opted_in_automation","summary":"apply opted in automation","x-required-scopes":["schedule"],"security":[{"bearerKey":[]},{"headerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable retry key; reuse only with identical method, path and input. Retained for 30 days.","schema":{"type":"string","pattern":"^[-A-Za-z0-9_.:]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"draft_id":{"type":"string","format":"uuid"}},"required":["draft_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful request. Inspect per-item statuses; a preview is not scheduled or published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationResult"}}}},"400":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting or pending idempotent request. Do not blindly repeat writes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Invalid input, authentication, scope, ownership or service allowance refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Off by default. Requires independently enabled workspace policy, allowed channel, daily cap, passing exact rules and available/confident assessments. Otherwise held for human review. TikTok excluded."}}},"components":{"securitySchemes":{"bearerKey":{"type":"http","scheme":"bearer","bearerFormat":"pr_ or yet_ followed by 64 lowercase hex characters"},"headerKey":{"type":"apiKey","in":"header","name":"x-postroom-api-key"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false},"Draft":{"type":"object","properties":{"writing_assessment_consent":{"type":"boolean","description":"Optional: only true after the user agrees to send this draft and brand voice/reference examples to TypeSafe for an advisory writing-quality assessment. Never inferred."},"image_ratio":{"type":"string","const":"original"},"image_ratios":{"not":{}},"image_fit":{"type":"string","enum":["contain","cover"],"description":"contain pads in white and preserves the whole artwork; cover crops the centre. Ask before cropping."},"account_ids":{"type":"array","items":{"type":"string"},"maxItems":10},"caption":{"type":"string"},"captions":{"type":"object","additionalProperties":{"type":"string"}},"format":{"type":"string","enum":["text","image","video"]},"media_url":{"type":"string"},"media_urls":{"type":"array","items":{"type":"string"},"maxItems":20},"alt_text":{"type":"array","items":{"type":"string"},"maxItems":20},"timezone":{"type":"string","description":"IANA timezone for the local preview, for example Asia/Kolkata. Ask if unknown."},"scheduled_at":{"type":"string","description":"ISO 8601 timestamp with UTC Z or explicit timezone offset. Ask the user if their timezone is unknown."},"title":{"type":"string","maxLength":100,"description":"Required Pinterest Pin title. Suggest a concise title and show it in the preview; never silently substitute a caption."},"board_id":{"type":"string","description":"Explicitly selected Pinterest board ID from yet_pinterest_boards."},"board_ids":{"type":"object","additionalProperties":{"type":"string"},"description":"Selected Pinterest board per account ID. List boards first; ask which board unless the user already named exactly one matching board."},"link":{"type":"string","description":"Optional Pinterest destination HTTPS URL. Ask whether to include one; never invent it."},"topic_tag":{"type":"string"},"thread_replies":{"type":"array","items":{"type":"string"},"maxItems":9},"reply_control":{"type":"string"},"tiktok_consent":{"type":"boolean"},"tiktok_mode":{"type":"string","enum":["inbox"]},"tiktok_ai":{"type":"boolean"}},"required":["account_ids","caption","format","scheduled_at"],"additionalProperties":false},"Accounts":{"type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"platform":{"type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"}},"additionalProperties":true}}},"required":["accounts"],"additionalProperties":false},"Brand":{"type":"object","properties":{"brand":{"anyOf":[{"type":"object","properties":{"voice":{"type":"string"},"samples":{"type":"array","items":{"type":"string"}},"kit":{"type":"object","description":"Preserves complete kit including versioned kit.guidance v1.","additionalProperties":true}},"additionalProperties":true},{"type":"null"}]}},"required":["brand"],"additionalProperties":false},"Posts":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["posts"],"additionalProperties":false},"PostStatus":{"type":"object","description":"Owned saved post and actual provider receipt. Uncertain is not published.","additionalProperties":true},"Preview":{"type":"object","required":["draft_id","expires_at","scheduled","approval_required","preview","brand_assessments"],"properties":{"draft_id":{"type":"string","format":"uuid"},"expires_at":{"type":"string","format":"date-time"},"scheduled":{"const":false},"approval_required":{"const":true},"preview":{"type":"array","items":{"type":"object","additionalProperties":true}},"brand_assessments":{"type":"array","items":{"type":"object","additionalProperties":true}},"instruction":{"type":"string"}},"additionalProperties":true},"WorkflowRequest":{"type":"object","properties":{"include_accounts":{"type":"boolean","default":false},"include_brand":{"type":"boolean","default":false},"drafts":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","properties":{"writing_assessment_consent":{"type":"boolean","description":"Optional: only true after the user agrees to send this draft and brand voice/reference examples to TypeSafe for an advisory writing-quality assessment. Never inferred."},"image_ratio":{"type":"string","const":"original"},"image_ratios":{"not":{}},"image_fit":{"type":"string","enum":["contain","cover"],"description":"contain pads in white and preserves the whole artwork; cover crops the centre. Ask before cropping."},"account_ids":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string","format":"uuid"}},"caption":{"type":"string"},"captions":{"type":"object","additionalProperties":{"type":"string"}},"format":{"type":"string","enum":["text","image","video"]},"media_url":{"type":"string"},"media_urls":{"type":"array","items":{"type":"string"},"maxItems":20},"alt_text":{"type":"array","items":{"type":"string"},"maxItems":20},"timezone":{"type":"string","description":"IANA timezone for the local preview, for example Asia/Kolkata. Ask if unknown."},"scheduled_at":{"type":"string","description":"ISO 8601 timestamp with UTC Z or explicit timezone offset. Ask the user if their timezone is unknown."},"title":{"type":"string","maxLength":100,"description":"Required Pinterest Pin title. Suggest a concise title and show it in the preview; never silently substitute a caption."},"board_id":{"type":"string","description":"Explicitly selected Pinterest board ID from yet_pinterest_boards."},"board_ids":{"type":"object","additionalProperties":{"type":"string"},"description":"Selected Pinterest board per account ID. List boards first; ask which board unless the user already named exactly one matching board."},"link":{"type":"string","description":"Optional Pinterest destination HTTPS URL. Ask whether to include one; never invent it."},"topic_tag":{"type":"string"},"thread_replies":{"type":"array","items":{"type":"string"},"maxItems":9},"reply_control":{"type":"string"},"tiktok_consent":{"type":"boolean"},"tiktok_mode":{"type":"string","enum":["inbox"]},"tiktok_ai":{"type":"boolean"}},"required":["account_ids","caption","format","scheduled_at"],"additionalProperties":false}}},"required":["drafts"],"additionalProperties":false},"WorkflowResponse":{"type":"object","properties":{"workflow_key":{"type":"string"},"scheduled":{"const":false},"approval_required":{"const":true},"items":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":4},"item_key":{"type":"string"},"status":{"enum":["preview_saved","preview_expired","pending","failed"]},"scheduled":{"const":false},"approval_required":{"const":true},"preview":{"$ref":"#/components/schemas/Preview"},"error":{"type":"string"},"replayed":{"type":"boolean"}},"required":["index","item_key","status","scheduled","approval_required"],"additionalProperties":false}},"accounts":{"type":"array","items":{"type":"object","additionalProperties":true}},"brand":{"type":["object","null"],"additionalProperties":true},"instruction":{"type":"string"}},"required":["workflow_key","scheduled","approval_required","items","instruction"],"additionalProperties":false},"ScheduleResult":{"type":"object","description":"Queued records and saved receipt, not proof of provider publication.","additionalProperties":true},"AutomationResult":{"type":"object","properties":{"scheduled":{"type":"boolean"},"status":{"type":"string"},"reason":{"type":"string"}},"additionalProperties":true}}}}