{"openapi":"3.1.0","info":{"title":"NOWScale API","version":"2026-12-01","description":"Schedule and publish posts, upload media, answer comments and read analytics across every network NOWScale supports.","termsOfService":"https://nowscale.com/legal/api-terms"},"externalDocs":{"url":"https://docs.nowscale.dev"},"servers":[{"url":"https://api.nowscale.dev"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Keys"},{"name":"Workspace"},{"name":"Projects"},{"name":"Networks"},{"name":"Accounts"},{"name":"Analytics"},{"name":"Posts"},{"name":"Media"},{"name":"Comments"},{"name":"Reviews"},{"name":"Events"},{"name":"Webhooks"},{"name":"Usage"},{"name":"AI"},{"name":"Test helpers"}],"paths":{"/v1/me":{"get":{"operationId":"me.get","summary":"Retrieve the current key","description":"Returns the key making the request: its permissions, the Workspace it belongs to, who it acts as and the plan's limits.","tags":["Keys"],"parameters":[],"responses":{"200":{"description":"Retrieve the current key","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"api_key"},"id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string"},"kind":{"type":"string","enum":["workspace","personal"]},"livemode":{"type":"boolean"},"api_version":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"acting_as":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"workspace"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member"},"user_id":{"type":"string","minLength":1,"maxLength":128}},"required":["type","user_id"],"additionalProperties":false}]},"workspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string"},"type":{"type":"string","enum":["business","personal"]}},"required":["id","name","type"],"additionalProperties":false},"limits":{"type":"object","properties":{"requests_per_minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active_keys":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"webhook_endpoints":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sandboxes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests_per_minute","active_keys","webhook_endpoints","sandboxes"],"additionalProperties":false}},"required":["object","id","name","kind","livemode","api_version","scopes","project_ids","acting_as","workspace","limits"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"x-nowscale-scope":null,"x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/workspace":{"get":{"operationId":"workspace.get","summary":"Retrieve the Workspace","description":"Returns the Workspace this key belongs to and its developer platform limits.","tags":["Workspace"],"parameters":[],"responses":{"200":{"description":"Retrieve the Workspace","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"workspace"},"id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string"},"type":{"type":"string","enum":["business","personal"]},"limits":{"type":"object","properties":{"requests_per_minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active_keys":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"webhook_endpoints":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sandboxes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["requests_per_minute","active_keys","webhook_endpoints","sandboxes"],"additionalProperties":false}},"required":["object","id","name","type","limits"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["workspace:read"]}],"x-nowscale-scope":"workspace:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/projects":{"get":{"operationId":"projects.list","summary":"List Projects","description":"Lists the Projects this key can reach, oldest first. A key limited to some Projects sees only those.","tags":["Projects"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."}],"responses":{"200":{"description":"List Projects","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"project"},"id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string"},"status":{"type":"string","enum":["active","archived"]},"timezone":{"type":"string"},"approval_policy":{"type":"string","enum":["contributors","everyone"]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","name","status","timezone","approval_policy","created_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["projects:read"]}],"x-nowscale-scope":"projects:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/projects/{project_id}":{"get":{"operationId":"projects.get","summary":"Retrieve a Project","description":"Returns one Project this key can reach.","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve a Project","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"project"},"id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string"},"status":{"type":"string","enum":["active","archived"]},"timezone":{"type":"string"},"approval_policy":{"type":"string","enum":["contributors","everyone"]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","name","status","timezone","approval_policy","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["projects:read"]}],"x-nowscale-scope":"projects:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/networks":{"get":{"operationId":"networks.list","summary":"List networks and their rules","description":"Lists every network NOWScale publishes to, with the limits a post must respect there: media kinds, file types and sizes, duration, visibility choices, placements and how many media items one post may carry.","tags":["Networks"],"parameters":[],"responses":{"200":{"description":"List networks and their rules","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"network"},"id":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"name":{"type":"string"},"visibilities":{"type":"array","items":{"type":"string"}},"max_media_items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"text_only_posts":{"type":"boolean"},"max_duration_seconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"media_kinds":{"type":"array","items":{"type":"string","enum":["video","image","text"]},"description":"What one post may carry on this network."},"surfaces":{"type":"array","items":{"type":"string"},"description":"Placements a post can target, such as feed, reel or story. Empty when the network has one."},"video":{"anyOf":[{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"}},"max_bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["content_types","max_bytes"],"additionalProperties":false},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"}},"max_bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["content_types","max_bytes"],"additionalProperties":false},{"type":"null"}]},"thumbnail":{"anyOf":[{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"}},"max_bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["content_types","max_bytes"],"additionalProperties":false},{"type":"null"}]}},"required":["object","id","name","visibilities","max_media_items","text_only_posts","max_duration_seconds","media_kinds","surfaces","video","image","thumbnail"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["accounts:read"]}],"x-nowscale-scope":"accounts:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/accounts":{"get":{"operationId":"accounts.list","summary":"List connected accounts","description":"Lists the social accounts connected in the Projects this key can reach, oldest first.","tags":["Accounts"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"network","in":"query","required":false,"schema":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]}}],"responses":{"200":{"description":"List connected accounts","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"account"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"followers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","reconnect_required","error"]},"connected_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","network","name","handle","avatar_url","followers","status","connected_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["accounts:read"]}],"x-nowscale-scope":"accounts:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/accounts/{account_id}":{"get":{"operationId":"accounts.get","summary":"Retrieve an account","description":"Returns one connected account.","tags":["Accounts"],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve an account","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"account"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"followers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","reconnect_required","error"]},"connected_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","network","name","handle","avatar_url","followers","status","connected_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["accounts:read"]}],"x-nowscale-scope":"accounts:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/accounts/{account_id}/analytics":{"get":{"operationId":"accounts.analytics","summary":"Retrieve an account's analytics summary","description":"Reads the account's current counters from the network. YouTube and Instagram answer for the chosen range; TikTok and Facebook answer lifetime counters.","tags":["Analytics"],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"default":"28","description":"Days, for networks that report a range.","type":"string","enum":["7","28","90"]},"description":"Days, for networks that report a range."}],"responses":{"200":{"description":"Retrieve an account's analytics summary","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"account_analytics"},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"range_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["object","account_id","network","range_days","data"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["analytics:read"]}],"x-nowscale-scope":"analytics:read","x-nowscale-rate-class":"heavy","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/posts":{"get":{"operationId":"posts.list","summary":"List posts","description":"Lists posts, newest first, with each network target's status.","tags":["Posts"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed"]}},{"name":"scheduled_from","in":"query","required":false,"schema":{"description":"Only posts scheduled at or after this time (ISO 8601).","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Only posts scheduled at or after this time (ISO 8601)."},{"name":"scheduled_to","in":"query","required":false,"schema":{"description":"Only posts scheduled before this time (ISO 8601).","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Only posts scheduled before this time (ISO 8601)."}],"responses":{"200":{"description":"List posts","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:read"]}],"x-nowscale-scope":"posts:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}},"post":{"operationId":"posts.create","summary":"Create a post","description":"Creates a draft or a scheduled post in a Project. Scheduling needs the posts:publish permission and follows the Project's approval policy: without it, or when the policy asks, the post waits for review. Send an Idempotency-Key so a retry never creates a second post.","tags":["Posts"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":128},"title":{"type":"string","maxLength":150},"caption":{"type":"string","maxLength":5000},"media_ids":{"description":"Ordered media from POST /v1/media. The first item leads.","maxItems":35,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"alt_text":{"description":"Alt text by media id.","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":128},"additionalProperties":{"type":"string","maxLength":1500}},"visibility":{"type":"string","enum":["public","unlisted","private"]},"targets":{"description":"The accounts this post publishes to.","maxItems":100,"type":"array","items":{"type":"object","properties":{"account_id":{"type":"string","minLength":1,"maxLength":128},"scheduled_at":{"description":"When this account publishes. Defaults to the post's scheduled_at.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"settings":{"description":"This account's own settings, overriding network_settings for its network.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"additionalProperties":{}}},"required":["account_id"],"additionalProperties":false}},"scheduled_at":{"description":"When every target without its own scheduled_at publishes. Null or absent keeps a draft.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"draft":{"description":"Keep the post as a draft even when it has a schedule.","type":"boolean"},"network_settings":{"description":"Settings per network, applied to every target on that network.","type":"object","propertyNames":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"additionalProperties":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"additionalProperties":{}}}},"required":["project_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}},"draft_reason":{"anyOf":[{"type":"string","enum":["schedule_passed","publication_limit","project_restricted","network_locked","network_feature_locked","network_account_limit","limit_reached"]},{"type":"null"}],"description":"null when the post was saved as asked. Otherwise why a dated post was saved as a draft: schedule_passed (the time was before the start of the next minute), publication_limit (the plan's publication limit), project_restricted (the Project is archived or over the plan), network_locked, network_feature_locked or network_account_limit (the plan does not include that network, feature or account), limit_reached (another limit). Only in this response."}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets","draft_reason"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:write"]}],"x-nowscale-scope":"posts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/posts/{post_id}":{"get":{"operationId":"posts.get","summary":"Retrieve a post","description":"Returns one post with each network target's status.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:read"]}],"x-nowscale-scope":"posts:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}},"patch":{"operationId":"posts.update","summary":"Update a post","description":"Changes a post's text, media, targets, schedule or network settings. Fields you leave out keep their value; targets and media_ids replace the whole list.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":150},"caption":{"type":"string","maxLength":5000},"media_ids":{"description":"Ordered media from POST /v1/media. The first item leads.","maxItems":35,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"alt_text":{"description":"Alt text by media id.","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":128},"additionalProperties":{"type":"string","maxLength":1500}},"visibility":{"type":"string","enum":["public","unlisted","private"]},"targets":{"description":"The accounts this post publishes to.","maxItems":100,"type":"array","items":{"type":"object","properties":{"account_id":{"type":"string","minLength":1,"maxLength":128},"scheduled_at":{"description":"When this account publishes. Defaults to the post's scheduled_at.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"settings":{"description":"This account's own settings, overriding network_settings for its network.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"additionalProperties":{}}},"required":["account_id"],"additionalProperties":false}},"scheduled_at":{"description":"When every target without its own scheduled_at publishes. Null or absent keeps a draft.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"draft":{"description":"Keep the post as a draft even when it has a schedule.","type":"boolean"},"network_settings":{"description":"Settings per network, applied to every target on that network.","type":"object","propertyNames":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"additionalProperties":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"additionalProperties":{}}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}},"draft_reason":{"anyOf":[{"type":"string","enum":["schedule_passed","publication_limit","project_restricted","network_locked","network_feature_locked","network_account_limit","limit_reached"]},{"type":"null"}],"description":"null when the post was saved as asked. Otherwise why a dated post was saved as a draft: schedule_passed (the time was before the start of the next minute), publication_limit (the plan's publication limit), project_restricted (the Project is archived or over the plan), network_locked, network_feature_locked or network_account_limit (the plan does not include that network, feature or account), limit_reached (another limit). Only in this response."}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets","draft_reason"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:write"]}],"x-nowscale-scope":"posts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}},"delete":{"operationId":"posts.delete","summary":"Delete a post","description":"Deletes a post. Copies NOWScale already placed on networks are removed where the network allows it; the post shows status deleting until that finishes.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Delete a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","const":"deleting"}},"required":["object","id","status"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:delete"]}],"x-nowscale-scope":"posts:delete","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":true,"idempotent":true,"openWorld":true}}},"/v1/posts/{post_id}/metrics":{"get":{"operationId":"posts.metrics","summary":"Retrieve a post's metrics","description":"Reads lifetime views, likes, comments and shares of each published copy from its network. A copy the network cannot report returns nulls.","tags":["Analytics"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve a post's metrics","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_metrics"},"target_id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"external_id":{"type":"string"},"views":{"anyOf":[{"type":"number"},{"type":"null"}]},"likes":{"anyOf":[{"type":"number"},{"type":"null"}]},"comments":{"anyOf":[{"type":"number"},{"type":"null"}]},"shares":{"anyOf":[{"type":"number"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","target_id","account_id","network","external_id","views","likes","comments","shares","url"],"additionalProperties":false}}},"required":["object","data"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["analytics:read"]}],"x-nowscale-scope":"analytics:read","x-nowscale-rate-class":"heavy","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/media":{"get":{"operationId":"media.list","summary":"List media","description":"Lists uploaded videos, images and thumbnails, newest first.","tags":["Media"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"List media","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"media"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"kind":{"type":"string","enum":["video","image","thumbnail"]},"status":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","kind","status","content_type","size_bytes","created_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["media:read"]}],"x-nowscale-scope":"media:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}},"post":{"operationId":"media.create","summary":"Start a media upload","description":"Reserves a media item in a Project and returns where to send the file. Images and thumbnails take one PUT to upload_url; videos upload in parts (sign them with the parts endpoint). Finish with the complete endpoint.","tags":["Media"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":128},"kind":{"type":"string","enum":["video","image","thumbnail"]},"content_type":{"type":"string","minLength":3,"maxLength":127},"size_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["project_id","kind","content_type","size_bytes"],"additionalProperties":false}}}},"responses":{"201":{"description":"Start a media upload","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"media_upload"},"media_id":{"type":"string","minLength":1,"maxLength":128},"method":{"type":"string","enum":["single","multipart"]},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"single: PUT the file here with its Content-Type."},"part_size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"multipart: bytes per part (the last part may be smaller)."},"part_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"content_type":{"type":"string"}},"required":["object","media_id","method","upload_url","part_size","part_count","content_type"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["media:write"]}],"x-nowscale-scope":"media:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/media/{media_id}":{"get":{"operationId":"media.get","summary":"Retrieve media","description":"Returns one uploaded file.","tags":["Media"],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve media","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"media"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"kind":{"type":"string","enum":["video","image","thumbnail"]},"status":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","kind","status","content_type","size_bytes","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["media:read"]}],"x-nowscale-scope":"media:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/comments/threads":{"get":{"operationId":"comments.threads.list","summary":"List comment threads","description":"Lists comment conversations on the accounts this key can reach, most recent activity first.","tags":["Comments"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"account_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["needs_reply","completed","manual","sending","failed"]}}],"responses":{"200":{"description":"List comment threads","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"comment_thread"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["needs_reply","completed","manual","sending","failed"]},"video_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"conversation_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latest_activity_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"messages":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"comment"},"id":{"type":"string","minLength":1,"maxLength":128},"author_role":{"type":"string"},"author_name":{"type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"moderation_status":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","author_role","author_name","text","moderation_status","url","published_at"],"additionalProperties":false}}},"required":["object","id","account_id","network","status","video_id","video_title","conversation_version","latest_activity_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["comments:read"]}],"x-nowscale-scope":"comments:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/comments/threads/{thread_id}":{"get":{"operationId":"comments.threads.get","summary":"Retrieve a comment thread","description":"Returns one conversation with its messages, oldest first.","tags":["Comments"],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve a comment thread","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"comment_thread"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["needs_reply","completed","manual","sending","failed"]},"video_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"conversation_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latest_activity_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"messages":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"comment"},"id":{"type":"string","minLength":1,"maxLength":128},"author_role":{"type":"string"},"author_name":{"type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"moderation_status":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","author_role","author_name","text","moderation_status","url","published_at"],"additionalProperties":false}}},"required":["object","id","account_id","network","status","video_id","video_title","conversation_version","latest_activity_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["comments:read"]}],"x-nowscale-scope":"comments:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/media/{media_id}/parts":{"post":{"operationId":"media.parts","summary":"Sign video upload parts","description":"Returns a short-lived PUT URL for each part number of a video upload. Keep the ETag header of each part's response for the complete endpoint.","tags":["Media"],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"part_numbers":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"integer","minimum":1,"maximum":10000}}},"required":["part_numbers"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sign video upload parts","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"media_part_urls"},"media_id":{"type":"string","minLength":1,"maxLength":128},"urls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["object","media_id","urls"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["media:write"]}],"x-nowscale-scope":"media:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/media/{media_id}/complete":{"post":{"operationId":"media.complete","summary":"Complete a media upload","description":"Checks the uploaded file and makes it ready to attach to posts. Videos list every part with its ETag. Duration and size you report are checked again by each network at publish time.","tags":["Media"],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parts":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"part_number":{"type":"integer","minimum":1,"maximum":10000},"etag":{"type":"string","minLength":1,"maxLength":256}},"required":["part_number","etag"],"additionalProperties":false}},"duration_seconds":{"type":"number","exclusiveMinimum":0,"maximum":172800},"width":{"type":"integer","exclusiveMinimum":0,"maximum":16384},"height":{"type":"integer","exclusiveMinimum":0,"maximum":16384}},"additionalProperties":false}}}},"responses":{"200":{"description":"Complete a media upload","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"media"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"kind":{"type":"string","enum":["video","image","thumbnail"]},"status":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","kind","status","content_type","size_bytes","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["media:write"]}],"x-nowscale-scope":"media:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/posts/{post_id}/unschedule":{"post":{"operationId":"posts.unschedule","summary":"Unschedule a post","description":"Moves a scheduled post back to drafts. Targets already published stay published.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Unschedule a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:write"]}],"x-nowscale-scope":"posts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/posts/{post_id}/publish":{"post":{"operationId":"posts.publish","summary":"Publish a post now","description":"Starts publishing every pending target now. The post's status reports the outcome as each network answers.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Publish a post now","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:publish"]}],"x-nowscale-scope":"posts:publish","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/posts/{post_id}/duplicate":{"post":{"operationId":"posts.duplicate","summary":"Duplicate a post","description":"Copies a post, its media and targets into a new draft in the same Project.","tags":["Posts"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"201":{"description":"Duplicate a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:write"]}],"x-nowscale-scope":"posts:write","x-nowscale-rate-class":"heavy","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/posts/{post_id}/review":{"post":{"operationId":"posts.review.submit","summary":"Send a post for review","description":"Asks the Project's reviewers to approve a draft. Optionally assign a person or a Team.","tags":["Reviews"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assigned_user_id":{"type":"string","minLength":1,"maxLength":128},"assigned_team_id":{"type":"string","minLength":1,"maxLength":128}},"additionalProperties":false}}}},"responses":{"201":{"description":"Send a post for review","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post_review"},"post_id":{"type":"string","minLength":1,"maxLength":128},"review_status":{"type":"string","enum":["in_review","approved","rejected"]}},"required":["object","post_id","review_status"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:write"]}],"x-nowscale-scope":"posts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/posts/{post_id}/review/approve":{"post":{"operationId":"posts.review.approve","summary":"Approve a post","description":"Approves the post's open review. Send expected_revision from the review to make sure you approve the version you checked.","tags":["Reviews"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"reason":{"type":"string","maxLength":2000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Approve a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post_review"},"post_id":{"type":"string","minLength":1,"maxLength":128},"review_status":{"type":"string","enum":["in_review","approved","rejected"]}},"required":["object","post_id","review_status"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["reviews:write"]}],"x-nowscale-scope":"reviews:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/posts/{post_id}/review/reject":{"post":{"operationId":"posts.review.reject","summary":"Reject a post","description":"Rejects the post's open review with an optional reason for its author.","tags":["Reviews"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"reason":{"type":"string","maxLength":2000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Reject a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post_review"},"post_id":{"type":"string","minLength":1,"maxLength":128},"review_status":{"type":"string","enum":["in_review","approved","rejected"]}},"required":["object","post_id","review_status"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["reviews:write"]}],"x-nowscale-scope":"reviews:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/comments/threads/{thread_id}/replies":{"post":{"operationId":"comments.reply","summary":"Reply to a comment thread","description":"Posts a reply on the network, under the thread's top comment or the comment you name. Send the thread's conversation_version so a reply never lands on a conversation that changed since you read it. Replies go out as the account's owner; today only the person who connected the account can reply through it.","tags":["Comments"],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":10000},"expected_conversation_version":{"type":"integer","minimum":0,"maximum":9007199254740991},"reply_to_comment_id":{"description":"The comment to answer. Defaults to the thread's top comment.","type":"string","minLength":1,"maxLength":128}},"required":["text","expected_conversation_version"],"additionalProperties":false}}}},"responses":{"201":{"description":"Reply to a comment thread","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"comment_thread"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["needs_reply","completed","manual","sending","failed"]},"video_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"conversation_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latest_activity_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"messages":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"comment"},"id":{"type":"string","minLength":1,"maxLength":128},"author_role":{"type":"string"},"author_name":{"type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"moderation_status":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","author_role","author_name","text","moderation_status","url","published_at"],"additionalProperties":false}}},"required":["object","id","account_id","network","status","video_id","video_title","conversation_version","latest_activity_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["comments:write"]}],"x-nowscale-scope":"comments:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/comments/threads/{thread_id}/comments/{comment_id}/moderate":{"post":{"operationId":"comments.moderate","summary":"Moderate a comment","description":"Approves, hides, unhides, rejects or deletes a comment, or bans its author, where the network supports the action. Send the thread's conversation_version.","tags":["Comments"],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["approve","hide","unhide","reject","ban_author","delete"]},"expected_conversation_version":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action","expected_conversation_version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Moderate a comment","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"comment_thread"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["needs_reply","completed","manual","sending","failed"]},"video_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_title":{"anyOf":[{"type":"string"},{"type":"null"}]},"conversation_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latest_activity_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"messages":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"comment"},"id":{"type":"string","minLength":1,"maxLength":128},"author_role":{"type":"string"},"author_name":{"type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"moderation_status":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","author_role","author_name","text","moderation_status","url","published_at"],"additionalProperties":false}}},"required":["object","id","account_id","network","status","video_id","video_title","conversation_version","latest_activity_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["comments:moderate"]}],"x-nowscale-scope":"comments:moderate","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/events":{"get":{"operationId":"events.list","summary":"List events","description":"Lists this Workspace's events of the last 30 days, newest first. The same objects your webhook endpoints receive.","tags":["Events"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"type","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"List events","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128},"object":{"type":"string","const":"event"},"type":{"type":"string"},"api_version":{"type":"string"},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds since the epoch."},"livemode":{"type":"boolean"},"workspace_id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"data":{"type":"object","properties":{"object":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["object"],"additionalProperties":false}},"required":["id","object","type","api_version","created","livemode","workspace_id","project_id","data"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["events:read"]}],"x-nowscale-scope":"events:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/events/{event_id}":{"get":{"operationId":"events.get","summary":"Retrieve an event","description":"Returns one event of the last 30 days.","tags":["Events"],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve an event","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128},"object":{"type":"string","const":"event"},"type":{"type":"string"},"api_version":{"type":"string"},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds since the epoch."},"livemode":{"type":"boolean"},"workspace_id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"data":{"type":"object","properties":{"object":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["object"],"additionalProperties":false}},"required":["id","object","type","api_version","created","livemode","workspace_id","project_id","data"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["events:read"]}],"x-nowscale-scope":"events:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/webhook_endpoints":{"get":{"operationId":"webhook_endpoints.list","summary":"List webhook endpoints","description":"Lists the Workspace's webhook endpoints. Secrets are never listed.","tags":["Webhooks"],"parameters":[],"responses":{"200":{"description":"List webhook endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled_events":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"api_version":{"type":"string"},"include_comment_content":{"type":"boolean"},"status":{"type":"string","enum":["enabled","disabled"]},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, gone (the endpoint answered 410) or failing (five days of failures)."},"failing_since":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"secret_last4":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","url","description","enabled_events","project_ids","api_version","include_comment_content","status","disabled_reason","failing_since","secret_last4","created_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:read"]}],"x-nowscale-scope":"webhooks:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}},"post":{"operationId":"webhook_endpoints.create","summary":"Create a webhook endpoint","description":"Adds an https endpoint (port 443) that receives the events you choose, signed with its own whsec_ secret. The secret is in this response only; reveal it later in Settings.","tags":["Webhooks"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"description":{"type":"string","maxLength":200},"enabled_events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","post.created","post.published","post.partially_published","post.failed","post.deleted"]},"description":"Event types to receive, or [\"*\"] for all."},"project_ids":{"description":"Only events from these Projects. Empty or absent: every Project.","maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"include_comment_content":{"description":"Comment events carry the comment's text and author name.","type":"boolean"}},"required":["url","enabled_events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create a webhook endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled_events":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"api_version":{"type":"string"},"include_comment_content":{"type":"boolean"},"status":{"type":"string","enum":["enabled","disabled"]},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, gone (the endpoint answered 410) or failing (five days of failures)."},"failing_since":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"secret_last4":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"secret":{"type":"string","description":"The signing secret, shown once."}},"required":["object","id","url","description","enabled_events","project_ids","api_version","include_comment_content","status","disabled_reason","failing_since","secret_last4","created_at","secret"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/webhook_endpoints/{endpoint_id}":{"get":{"operationId":"webhook_endpoints.get","summary":"Retrieve a webhook endpoint","description":"Returns one endpoint, with the last four characters of its secret.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve a webhook endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled_events":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"api_version":{"type":"string"},"include_comment_content":{"type":"boolean"},"status":{"type":"string","enum":["enabled","disabled"]},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, gone (the endpoint answered 410) or failing (five days of failures)."},"failing_since":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"secret_last4":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","url","description","enabled_events","project_ids","api_version","include_comment_content","status","disabled_reason","failing_since","secret_last4","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:read"]}],"x-nowscale-scope":"webhooks:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}},"patch":{"operationId":"webhook_endpoints.update","summary":"Update a webhook endpoint","description":"Changes the URL, events, Projects or description, or turns the endpoint off and on. Turning it on clears a failing streak.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"description":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"enabled_events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","enum":["*","post.created","post.published","post.partially_published","post.failed","post.deleted"]},"description":"Event types to receive, or [\"*\"] for all."},"project_ids":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"include_comment_content":{"type":"boolean"},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update a webhook endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled_events":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"api_version":{"type":"string"},"include_comment_content":{"type":"boolean"},"status":{"type":"string","enum":["enabled","disabled"]},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, gone (the endpoint answered 410) or failing (five days of failures)."},"failing_since":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"secret_last4":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","url","description","enabled_events","project_ids","api_version","include_comment_content","status","disabled_reason","failing_since","secret_last4","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}},"delete":{"operationId":"webhook_endpoints.delete","summary":"Delete a webhook endpoint","description":"Deletes the endpoint and the deliveries still waiting for it.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Delete a webhook endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"deleted":{"type":"boolean","const":true}},"required":["object","id","deleted"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":true,"idempotent":true,"openWorld":true}}},"/v1/webhook_endpoints/{endpoint_id}/roll_secret":{"post":{"operationId":"webhook_endpoints.roll_secret","summary":"Roll a webhook secret","description":"Creates a new signing secret. The old one keeps signing alongside it for 24 hours (two signatures per delivery) unless expire_now is true.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expire_now":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Roll a webhook secret","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled_events":{"type":"array","items":{"type":"string"}},"project_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"api_version":{"type":"string"},"include_comment_content":{"type":"boolean"},"status":{"type":"string","enum":["enabled","disabled"]},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, gone (the endpoint answered 410) or failing (five days of failures)."},"failing_since":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"secret_last4":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"secret":{"type":"string"}},"required":["object","id","url","description","enabled_events","project_ids","api_version","include_comment_content","status","disabled_reason","failing_since","secret_last4","created_at","secret"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/webhook_endpoints/{endpoint_id}/test":{"post":{"operationId":"webhook_endpoints.test","summary":"Send a test event","description":"Queues a webhook_endpoint.test event to this endpoint, whatever its event filter.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Send a test event","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_delivery"},"id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","const":"pending"}},"required":["object","id","event_id","status"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/webhook_endpoints/{endpoint_id}/deliveries":{"get":{"operationId":"webhook_deliveries.list","summary":"List deliveries","description":"Lists an endpoint's deliveries of the last 30 days, newest first, with their attempts' outcome.","tags":["Webhooks"],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"description":"Items per page, 1 to 100.","type":"integer","minimum":1,"maximum":100},"description":"Items per page, 1 to 100."},{"name":"cursor","in":"query","required":false,"schema":{"description":"The next_cursor of the previous page.","type":"string","maxLength":512},"description":"The next_cursor of the previous page."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","delivering","succeeded","failed"]}}],"responses":{"200":{"description":"List deliveries","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"webhook_delivery"},"id":{"type":"string","minLength":1,"maxLength":128},"endpoint_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"event_type":{"type":"string"},"status":{"type":"string","enum":["pending","delivering","succeeded","failed"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next_attempt_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"last_status_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}]},"delivered_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","endpoint_id","event_id","event_type","status","attempts","next_attempt_at","last_status_code","last_error","delivered_at","created_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:read"]}],"x-nowscale-scope":"webhooks:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/webhook_deliveries/{delivery_id}/retry":{"post":{"operationId":"webhook_deliveries.retry","summary":"Retry a delivery","description":"Sends a delivery again now, keeping its webhook-id, whatever its status.","tags":["Webhooks"],"parameters":[{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Retry a delivery","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"webhook_delivery"},"id":{"type":"string","minLength":1,"maxLength":128},"endpoint_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"event_type":{"type":"string"},"status":{"type":"string","enum":["pending","delivering","succeeded","failed"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next_attempt_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"last_status_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}]},"delivered_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","endpoint_id","event_id","event_type","status","attempts","next_attempt_at","last_status_code","last_error","delivered_at","created_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["webhooks:write"]}],"x-nowscale-scope":"webhooks:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/usage":{"get":{"operationId":"usage.get","summary":"Retrieve API usage","description":"Counts this Workspace's API requests per day over the last 30 days, with errors and rate-limited requests.","tags":["Usage"],"parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"type":"integer","minimum":1,"maximum":30}}],"responses":{"200":{"description":"Retrieve API usage","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"usage"},"from":{"type":"string","description":"ISO 8601 date and time, UTC."},"to":{"type":"string","description":"ISO 8601 date and time, UTC."},"totals":{"type":"object","properties":{"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate_limited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["requests","errors","rate_limited"],"additionalProperties":false},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate_limited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","requests","errors","rate_limited"],"additionalProperties":false}}},"required":["object","from","to","totals","days"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["usage:read"]}],"x-nowscale-scope":"usage:read","x-nowscale-rate-class":"read","x-nowscale-idempotency":"safe","x-nowscale-annotations":{"readOnly":true,"destructive":false,"idempotent":true,"openWorld":false}}},"/v1/ai/comment_replies":{"post":{"operationId":"ai.comment_replies.create","summary":"Draft a reply to a comment","description":"Writes a short reply to one comment, in the comment's language, using the Workspace's Tokens. Send max_tokens: without it, or when the price is higher, the request is refused with the price and nothing is charged. Nothing is posted; reply with POST /v1/comments/threads/{thread_id}/replies when you are happy with it. In a sandbox the reply is simulated and free.","tags":["AI"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","minLength":1,"maxLength":600,"description":"The comment to answer. Treated as data, never as instructions."},"video_title":{"description":"Title of the video or post the comment is on, for context.","type":"string","maxLength":200},"language":{"default":"en","description":"BCP 47 tag for the reply when the comment's language is unclear.","type":"string","minLength":2,"maxLength":35},"max_tokens":{"description":"The most this call may cost, in Tokens.","anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,4})?$"}]}},"required":["comment"],"additionalProperties":false}}}},"responses":{"201":{"description":"Draft a reply to a comment","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"comment_reply"},"reply":{"type":"string"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A question the draft needs answered before it can be specific, if any."},"tokens":{"type":"string","description":"Tokens charged, as a decimal string."},"simulated":{"type":"boolean"}},"required":["object","reply","question","tokens","simulated"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["ai:use"]}],"x-nowscale-scope":"ai:use","x-nowscale-rate-class":"ai","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/test_helpers/accounts":{"post":{"operationId":"test_helpers.accounts.create","summary":"Add a test account","description":"Adds a simulated account of a network to a Project in this sandbox, at once. It never reaches the network: posts to it publish through the simulator, following its preset and your caption's magic values. Plan limits per network apply as for real accounts. Test keys only.","tags":["Test helpers"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"preset":{"default":"healthy","description":"How the simulated network behaves: healthy, reauth_required, expiring, slow (publishes 90 seconds late) or flaky (about 3 in 10 targets fail).","type":"string","enum":["healthy","reauth_required","expiring","slow","flaky"]},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["project_id","network"],"additionalProperties":false}}}},"responses":{"201":{"description":"Add a test account","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"account"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"followers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","reconnect_required","error"]},"connected_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","network","name","handle","avatar_url","followers","status","connected_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["accounts:write"]}],"x-nowscale-scope":"accounts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}},"/v1/test_helpers/accounts/{account_id}":{"post":{"operationId":"test_helpers.accounts.update","summary":"Change a test account's behaviour","description":"Switches a test account's preset, for example to reauth_required to see how your integration handles an account that must reconnect, then back to healthy. Test keys only.","tags":["Test helpers"],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"type":"string","enum":["healthy","reauth_required","expiring","slow","flaky"]}},"required":["preset"],"additionalProperties":false}}}},"responses":{"200":{"description":"Change a test account's behaviour","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"account"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"followers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["active","reconnect_required","error"]},"connected_at":{"type":"string","description":"ISO 8601 date and time, UTC."}},"required":["object","id","project_id","network","name","handle","avatar_url","followers","status","connected_at"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["accounts:write"]}],"x-nowscale-scope":"accounts:write","x-nowscale-rate-class":"write","x-nowscale-idempotency":"none","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":true,"openWorld":true}}},"/v1/test_helpers/posts/{post_id}/advance":{"post":{"operationId":"test_helpers.posts.advance","summary":"Advance a post","description":"Runs the simulator for this post now: every target whose time has come, including ones held by a delay, publishes or fails right away instead of on the next worker run. A target scheduled in the future stays scheduled; publish the post to send it now. Answers with the post after the simulator ran. Test keys only.","tags":["Test helpers"],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Makes a retry return the first response instead of acting twice (24 hours)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Advance a post","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting"]},"review_status":{"type":"string","enum":["not_required","draft","in_review","approved","rejected"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"visibility":{"type":"string"},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]},"created_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"updated_at":{"type":"string","description":"ISO 8601 date and time, UTC."},"targets":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"post_target"},"id":{"type":"string","minLength":1,"maxLength":128},"account_id":{"type":"string","minLength":1,"maxLength":128},"network":{"type":"string","enum":["youtube","tiktok","instagram","facebook","threads","bluesky","mastodon","pinterest","telegram","twitch","x","discord"]},"status":{"type":"string","enum":["pending","uploading","uploaded","published","failed"]},"stage":{"type":"string"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","description":"ISO 8601 date and time, UTC."},{"type":"null"}]}},"required":["object","id","account_id","network","status","stage","external_id","error_code","scheduled_at"],"additionalProperties":false}}},"required":["object","id","project_id","status","review_status","title","caption","visibility","scheduled_at","published_at","created_at","updated_at","targets"],"additionalProperties":false}}}},"default":{"description":"Problem details","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearerAuth":["posts:publish"]}],"x-nowscale-scope":"posts:publish","x-nowscale-rate-class":"write","x-nowscale-idempotency":"key","x-nowscale-annotations":{"readOnly":false,"destructive":false,"idempotent":false,"openWorld":true}}}},"webhooks":{"post.created":{"post":{"summary":"A post was created, in the app or through the API.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"post.created"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting","deleted"]},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","id","project_id","status","scheduled_at","published_at"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}},"post.published":{"post":{"summary":"Every target of a post is live on its network.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"post.published"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting","deleted"]},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","id","project_id","status","scheduled_at","published_at"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}},"post.partially_published":{"post":{"summary":"A post finished with some targets live and some failed.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"post.partially_published"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting","deleted"]},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","id","project_id","status","scheduled_at","published_at"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}},"post.failed":{"post":{"summary":"A post finished with every target failed.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"post.failed"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting","deleted"]},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","id","project_id","status","scheduled_at","published_at"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}},"post.deleted":{"post":{"summary":"A post was deleted from NOWScale.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"post.deleted"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"post"},"id":{"type":"string","minLength":1,"maxLength":128},"project_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"status":{"type":"string","enum":["draft","scheduled","publishing","published","partial","failed","deleting","deleted"]},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","id","project_id","status","scheduled_at","published_at"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}},"webhook_endpoint.test":{"post":{"summary":"Sent only by the test button or POST /v1/webhook_endpoints/{id}/test.","description":"Signed with Standard Webhooks headers: webhook-id, webhook-timestamp, webhook-signature.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["id","object","type","api_version","created","livemode","workspace_id","data"],"properties":{"id":{"type":"string"},"object":{"const":"event"},"type":{"const":"webhook_endpoint.test"},"api_version":{"type":"string"},"created":{"type":"integer"},"livemode":{"type":"boolean"},"workspace_id":{"type":"string"},"project_id":{"type":["string","null"]},"data":{"type":"object","properties":{"object":{"type":"object","properties":{"object":{"type":"string","const":"webhook_endpoint"},"id":{"type":"string","minLength":1,"maxLength":128}},"required":["object","id"],"additionalProperties":false}}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key: ns_live_ followed by 38 letters and digits."}},"schemas":{"Problem":{"type":"object","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this."},"request_id":{"type":"string"},"errors":{"type":"array","items":{"type":"object"}}},"additionalProperties":true}}}}