{"openapi":"3.1.0","info":{"title":"FollowerX API","version":"2026-09-11","summary":"Managed organic growth studio API","description":"Request catalogue work, read token balances, approve deliverables and fetch invoices. Does not sell followers, likes or views.","contact":{"name":"Trepte Ventures UG (haftungsbeschränkt)","email":"trepteventures@proton.me"},"license":{"name":"Proprietary"}},"servers":[{"url":"https://api.followerx.de/v1","description":"Production (de)"}],"tags":[{"name":"strategy"},{"name":"content"},{"name":"community"},{"name":"creators"},{"name":"discovery"},{"name":"analytics"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"fx_live_… or fx_test_… key from Account → API keys."}},"schemas":{"Error":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}},"JobStatus":{"type":"string","enum":["requested","quoted","active","in_review","completed","cancelled"]},"ServiceLine":{"type":"string","enum":["strategy","content","community","creators","discovery","analytics"]},"Sku":{"type":"string","enum":["audit_roadmap","short_form_edit","carousel_set","copy_hook_pack","shoot_day","community_hour","creator_campaign","discovery_optimisation","discovery_monitoring","analytics_reporting","attribution_setup"]},"Scope":{"type":"string","enum":["account:read","account:write","catalog:read","profiles:read","profiles:write","jobs:read","jobs:write","deliverables:read","invoices:read","webhooks:read","webhooks:write"]},"WebhookEvent":{"type":"string","enum":["account.updated","balance.updated","job.created","job.quoted","job.started","job.in_review","job.completed","job.cancelled","deliverable.ready","invoice.issued","invoice.paid"]}}},"paths":{"/v1/account":{"get":{"operationId":"account-get","summary":"Get account","description":"Return the authenticated workspace: company, locale and default currency. Required scope: account:read.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"patch":{"operationId":"account-patch","summary":"Update account","description":"Update company name, locale or notification email. Required scope: account:write.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/balance":{"get":{"operationId":"balance-get","summary":"Get token balance","description":"Available, reserved and lifetime purchased tokens. Tokens do not expire. Required scope: account:read.","tags":["balance"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/ledger":{"get":{"operationId":"ledger-list","summary":"List ledger entries","description":"Cursor-paginated purchases, spends, refunds and adjustments. Required scope: account:read.","tags":["ledger"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/catalog":{"get":{"operationId":"catalog-list","summary":"List catalogue","description":"Published SKUs with token price, unit and turnaround. Same rates as /services. Required scope: catalog:read.","tags":["catalog"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/catalog/{sku}":{"get":{"operationId":"catalog-get","summary":"Get catalogue item","description":"One SKU, including whether rush (+50%) is offered. Required scope: catalog:read.","tags":["catalog"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/platforms":{"get":{"operationId":"platforms-list","summary":"List platforms","description":"Networks the studio accepts work on. Required scope: catalog:read.","tags":["platforms"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/profiles":{"get":{"operationId":"profiles-list","summary":"List connected profiles","description":"Social profiles linked to the workspace. Access is always via the platform’s own collaborator tools. Required scope: profiles:read.","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"post":{"operationId":"profiles-create","summary":"Add a profile","description":"Register a handle and platform. Does not collect login passwords. Required scope: profiles:write.","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["platform","handle"],"properties":{"platform":{"type":"string"},"handle":{"type":"string"},"display_name":{"type":"string"}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/profiles/{id}":{"get":{"operationId":"profiles-get","summary":"Get a profile","description":"One connected profile and its access state. Required scope: profiles:read.","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"patch":{"operationId":"profiles-patch","summary":"Update a profile","description":"Rename the profile or mark it inactive. Required scope: profiles:write.","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]},"delete":{"operationId":"profiles-delete","summary":"Remove a profile","description":"Unlink a profile. Open jobs on that profile stay open until cancelled. Required scope: profiles:write.","tags":["profiles"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/jobs":{"get":{"operationId":"jobs-list","summary":"List jobs","description":"Filter by status, service line, SKU or profile. Required scope: jobs:read.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"post":{"operationId":"jobs-create","summary":"Create a job","description":"Open a work request against a catalogue SKU. Tokens are not deducted until you accept the quote. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sku","title"],"properties":{"sku":{"type":"string","enum":["audit_roadmap","short_form_edit","carousel_set","copy_hook_pack","shoot_day","community_hour","creator_campaign","discovery_optimisation","discovery_monitoring","analytics_reporting","attribution_setup"]},"title":{"type":"string","minLength":3,"maxLength":160},"brief":{"type":"string","maxLength":8000},"profile_id":{"type":"string"},"platform":{"type":"string"},"rush":{"type":"boolean","default":false},"metadata":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}":{"get":{"operationId":"jobs-get","summary":"Get a job","description":"Status, quoted tokens, brief, linked profile and deliverable IDs. Required scope: jobs:read.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/jobs/{id}/quote/accept":{"post":{"operationId":"jobs-accept","summary":"Accept a quote","description":"Reserve the quoted tokens and move the job to active. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}/quote/decline":{"post":{"operationId":"jobs-decline","summary":"Decline a quote","description":"Cancel a quoted job without charging tokens. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}/revisions":{"post":{"operationId":"jobs-revision","summary":"Request a revision","description":"Two revision rounds are included on production SKUs. Extra rounds are quoted. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}/approve":{"post":{"operationId":"jobs-approve","summary":"Approve a job","description":"Accept the deliverable. Reserved tokens are captured. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}/cancel":{"post":{"operationId":"jobs-cancel","summary":"Cancel a job","description":"Cancel a requested, quoted or active job. Unused reserved tokens return to the balance. Required scope: jobs:write.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}/events":{"get":{"operationId":"jobs-events","summary":"List job events","description":"Status changes, quotes, revision notes and approvals in time order. Required scope: jobs:read.","tags":["jobs"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/deliverables":{"get":{"operationId":"deliverables-list","summary":"List deliverables","description":"Finished files and reports attached to jobs. Required scope: deliverables:read.","tags":["deliverables"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/deliverables/{id}":{"get":{"operationId":"deliverables-get","summary":"Get a deliverable","description":"Metadata and signed file URLs (15-minute lifetime). Required scope: deliverables:read.","tags":["deliverables"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/invoices":{"get":{"operationId":"invoices-list","summary":"List invoices","description":"Tax invoices for token purchases. Amounts include 19% German VAT unless reverse-charged. Required scope: invoices:read.","tags":["invoices"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/invoices/{id}":{"get":{"operationId":"invoices-get","summary":"Get an invoice","description":"One invoice, including net, VAT and gross. Required scope: invoices:read.","tags":["invoices"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/invoices/{id}/pdf":{"get":{"operationId":"invoices-pdf","summary":"Download invoice PDF","description":"Returns application/pdf. Required scope: invoices:read.","tags":["invoices"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/topups":{"get":{"operationId":"topups-list","summary":"List top-ups","description":"Token purchases and their payment state. Card charges are not taken over the API. Required scope: invoices:read.","tags":["topups"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/topups/checkout":{"post":{"operationId":"topups-checkout","summary":"Create a checkout session","description":"Returns a hosted URL on followerx.de / followerx.ae to buy a published token pack. Required scope: account:write.","tags":["topups"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["pack"],"properties":{"pack":{"type":"string","enum":["trial","starter","growth","scale"]},"success_url":{"type":"string","format":"uri"},"cancel_url":{"type":"string","format":"uri"}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/webhooks":{"get":{"operationId":"webhooks-list","summary":"List webhook endpoints","description":"Registered HTTPS endpoints and their event subscriptions. Required scope: webhooks:read.","tags":["webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"post":{"operationId":"webhooks-create","summary":"Create a webhook","description":"Subscribe an HTTPS URL. The signing secret is returned once. Required scope: webhooks:write.","tags":["webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["account.updated","balance.updated","job.created","job.quoted","job.started","job.in_review","job.completed","job.cancelled","deliverable.ready","invoice.issued","invoice.paid"]}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/webhooks/{id}":{"delete":{"operationId":"webhooks-delete","summary":"Delete a webhook","description":"Stop deliveries to that URL. Required scope: webhooks:write.","tags":["webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}},"/v1/webhooks/{id}/rotate":{"post":{"operationId":"webhooks-rotate","summary":"Rotate webhook secret","description":"Issue a new signing secret. The previous secret stays valid for 24 hours. Required scope: webhooks:write.","tags":["webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/api-keys":{"get":{"operationId":"api-keys-list","summary":"List API keys","description":"Metadata only. Raw secrets are never shown again. Required scope: account:read.","tags":["api-keys"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}},"post":{"operationId":"api-keys-create","summary":"Create an API key","description":"Create a live or test key with selected scopes. The secret is returned once. Required scope: account:write.","tags":["api-keys"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","scopes"],"properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["live","test"]},"scopes":{"type":"array","items":{"type":"string","enum":["account:read","account:write","catalog:read","profiles:read","profiles:write","jobs:read","jobs:write","deliverables:read","invoices:read","webhooks:read","webhooks:write"]}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","format":"uuid"}}]}},"/v1/api-keys/{id}":{"delete":{"operationId":"api-keys-delete","summary":"Revoke an API key","description":"Immediate revocation. In-flight requests finish; new ones return 401. Required scope: account:write.","tags":["api-keys"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","required":["error","request_id"],"properties":{"request_id":{"type":"string","example":"req_4f2c1a"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","insufficient_tokens","forbidden","not_found","conflict","validation_error","rate_limited","internal_error"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"reason":{"type":"string"}}}}}}}}}}}}}}},"security":[{"bearerAuth":[]}],"x-followerx-calendar-version":"2026-09-11"}