{"openapi":"3.0.3","info":{"title":"Curatit research API","version":"1.0.0","description":"Read-only access to Curatit's curated library of real Instagram posts and editor-approved creative analyses. The same operations are available over MCP at /mcp."},"servers":[{"url":"https://www.curatit.app"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A Curatit personal access token (curatit_pat_…) or, where enabled, an OAuth access token. Scopes: curatit:read, curatit:brief."}}},"security":[{"bearerAuth":[]}],"paths":{"/api/v1/taxonomy":{"get":{"operationId":"getTaxonomy","summary":"Curatit taxonomy","description":"List the values every search filter accepts: industries, brands, formats, goals, creative approaches and the visual dimensions, with counts. Call this before filtering; values are slugs from here, never guesses. Also names the dimensions the catalog doesn't have (no theme or occasion labels).","x-mcp-tool":"curatit_get_taxonomy","security":[{"bearerAuth":["curatit:read"]}],"responses":{"200":{"description":"The result envelope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"taxonomy_version":{"nullable":true,"type":"string"},"dimensions":{"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","enum":["industry","brand","format","goal","creative_approach","approach_family","hook_technique","narrative_pattern","typography","layout","imagery","palette","visual_device","tone","persuasion","cta"]},"filter":{"type":"string","description":"The search filter key that takes these values."},"single_value":{"type":"boolean","description":"Whether the filter takes one value (true) or up to ten alternatives."},"description":{"type":"string"},"populated":{"description":"False when no published post is labelled on this dimension yet, so its filter matches nothing.","type":"boolean"},"values":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"description":{"nullable":true,"type":"string"},"parent":{"nullable":true,"type":"string"},"synonyms":{"type":"array","items":{"type":"string"}},"posts":{"nullable":true,"description":"How many published posts carry this value (null where not counted). For an industry, by main category or tag.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"main_posts":{"description":"For an industry: how many published posts have it as their brand's main category.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slug","label","description","parent","synonyms","posts"],"additionalProperties":false}}},"required":["dimension","filter","single_value","description","values"],"additionalProperties":false}},"not_available":{"type":"array","items":{"type":"string"},"description":"Dimensions the catalog doesn't classify, so no filter exists for them (e.g. theme or occasion)."}},"required":["taxonomy_version","dimensions","not_available"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"parameters":[{"name":"dimension","in":"query","required":false,"description":"One dimension to return; omit for all of them.","schema":{"type":"string","enum":["industry","brand","format","goal","creative_approach","approach_family","hook_technique","narrative_pattern","typography","layout","imagery","palette","visual_device","tone","persuasion","cta"]}},{"name":"verbose","in":"query","required":false,"description":"Include every value's description and synonyms when listing all dimensions.","schema":{"type":"boolean"}}]}},"/api/v1/posts/search":{"post":{"operationId":"searchPosts","summary":"Search Curatit posts","description":"Find real Instagram posts in Curatit's curated library by free text (captions, on-slide text, published analyses) and/or taxonomy filters. Returns compact matches with why each matched; nothing is relaxed for you, an empty result comes with suggestions. Page with next_cursor. Needs a query or a filter.","x-mcp-tool":"curatit_search_posts","security":[{"bearerAuth":["curatit:read"]}],"responses":{"200":{"description":"The result envelope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"post_id":{"type":"string"},"short_code":{"type":"string"},"source_url":{"type":"string"},"brand":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"website":{"nullable":true,"type":"string"}},"required":["name","slug"],"additionalProperties":false},"industry":{"nullable":true,"description":"The brand's main category.","type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false},"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"main":{"type":"boolean","description":"True for the brand's main category (the post's `industry`); false for a tag category."}},"required":["name","slug","main"],"additionalProperties":false},"description":"Every category the post is in, main category first, then tags. The industries filter matches any of them."},"strategy_headline":{"description":"The published analysis's strategy in one line; null without an analysis.","nullable":true,"type":"string"},"format":{"type":"string","enum":["static","carousel","video"]},"posted_at":{"nullable":true,"type":"string"},"caption_excerpt":{"type":"string","description":"The first 240 characters of the caption."},"thumbnail":{"type":"object","properties":{"available":{"type":"boolean"},"media_id":{"nullable":true,"type":"string","pattern":"^[A-Za-z0-9_-]{5,60}\\.\\d{1,2}$","description":"A media id from a post's media index or a carousel page: <post id>.<slide index>, slide 0 being the cover."},"url":{"nullable":true,"type":"string","format":"uri"}},"required":["available","media_id","url"],"additionalProperties":false},"classification":{"nullable":true,"type":"object","properties":{"creative_approach":{"nullable":true,"type":"string"},"approach_family":{"nullable":true,"description":"The family the creative approach belongs to (the approach_families filter).","type":"string"},"secondary_approaches":{"type":"array","items":{"type":"string"}},"goal":{"nullable":true,"type":"string"},"hook_technique":{"nullable":true,"type":"string"},"narrative_pattern":{"nullable":true,"type":"string"},"typography":{"type":"array","items":{"type":"string"}},"layouts":{"type":"array","items":{"type":"string"}},"imagery":{"type":"array","items":{"type":"string"}},"palettes":{"type":"array","items":{"type":"string"}},"tones":{"type":"array","items":{"type":"string"},"description":"Tone of voice (the tones filter)."},"persuasion":{"type":"array","items":{"type":"string"},"description":"Persuasion techniques (the persuasion filter)."},"cta":{"nullable":true,"description":"Call-to-action style (the ctas filter); null when the post has none or it couldn't be told.","type":"string"},"taxonomy_version":{"nullable":true,"type":"string"},"confidence":{"nullable":true,"description":"Always null: the analysis as a whole has no measured confidence. Each creative decision carries its own, under analysis.decisions.","type":"string"}},"required":["creative_approach","approach_family","secondary_approaches","goal","hook_technique","narrative_pattern","typography","layouts","imagery","palettes","tones","persuasion","cta","taxonomy_version","confidence"],"additionalProperties":false,"description":"Slugs from the post's published analysis (AI-drafted, approved for publication), the values the search filters take; null when the post has no published analysis yet. Values that say nothing (unknown, none, other) are left out."},"analysis_available":{"type":"boolean"},"match_reasons":{"type":"array","items":{"type":"string"},"description":"Why it matched: the fields the query hit and the labels the filters hit, with the slides they were seen on."},"score":{"nullable":true,"description":"The ranking score, for ordering only. Not a measure of quality.","type":"number"}},"required":["post_id","short_code","source_url","brand","industry","format","posted_at","caption_excerpt","thumbnail","classification","analysis_available","match_reasons","score"],"additionalProperties":false}},"next_cursor":{"nullable":true,"type":"string"},"applied":{"type":"object","properties":{"query":{"nullable":true,"type":"string"},"query_mode":{"type":"string","enum":["all_words","any_word"]},"filters":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The filters actually applied, as resolved slugs."},"sort":{"type":"string","enum":["relevance","newest"]},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["query","query_mode","filters","sort","limit"],"additionalProperties":false},"suggestions":{"type":"array","items":{"type":"string"},"description":"When nothing matched: ways to relax the search. Nothing is relaxed for you."}},"required":["posts","next_cursor","applied","suggestions"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"description":"Free text matched against captions, on-slide text and published analyses, at most 300 characters. Every word must match unless query_mode is any_word.","type":"string","maxLength":300},"query_mode":{"default":"all_words","description":"all_words (default): every word must match. any_word: any word may match (wider; reported in applied.query_mode).","type":"string","enum":["all_words","any_word"]},"filters":{"type":"object","properties":{"industries":{"description":"A category: the brand's main category or one its posts are tagged with, e.g. finance (taxonomy dimension `industry`).","minItems":1,"maxItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"brands":{"description":"A brand, by slug or name (taxonomy dimension `brand`).","minItems":1,"maxItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"formats":{"description":"static, carousel or video.","minItems":1,"maxItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"goals":{"description":"What the post is trying to do (taxonomy dimension `goal`).","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"creative_approaches":{"description":"The creative approach, e.g. a comparison or a testimonial (taxonomy dimension `creative_approach`).","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"approach_families":{"description":"A family of creative approaches.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"hook_techniques":{"description":"How the first slide earns attention.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"narrative_patterns":{"description":"How a carousel's slides are sequenced.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"typography":{"description":"Typographic style seen on the slides.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"layouts":{"description":"Layout patterns seen on the slides.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"imagery":{"description":"Kind of imagery (photography, illustration, UI...).","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"palettes":{"description":"Colour palette character.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"visual_devices":{"description":"Visual devices such as arrows, stickers or charts.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tones":{"description":"Tone of voice.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"persuasion":{"description":"Persuasion technique.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"ctas":{"description":"Call-to-action style.","minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"platforms":{"description":"Only instagram exists in the catalog today.","maxItems":1,"type":"array","items":{"type":"string","enum":["instagram"]}},"analysed_only":{"description":"Only posts with a published creative analysis (every published post has one today).","type":"boolean"}},"additionalProperties":false,"description":"Filters by dimension, each a list of values from curatit_get_taxonomy (slugs, labels or synonyms), e.g. {\"industries\":[\"finance\"],\"formats\":[\"carousel\"],\"hook_techniques\":[\"question\"]}. Values within a filter are alternatives; every filter given has to match."},"sort":{"default":"relevance","description":"relevance (default when there is a query or filters) or newest by posting date.","type":"string","enum":["relevance","newest"]},"limit":{"default":8,"description":"Results per page, 1 to 20, default 8.","type":"integer","minimum":1,"maximum":20},"cursor":{"description":"The next_cursor of the previous page; send the same query, filters and sort with it.","type":"string","maxLength":400}},"additionalProperties":false}}}}}},"/api/v1/posts/{post_id}":{"get":{"operationId":"getPost","summary":"Get a Curatit post","description":"One post in full: caption, counts as collected, every stored image (media ids for curatit_get_media), editor-approved classification and the published creative analysis when there is one (detail_level=full for every section). Fields with no value are named under `missing`.","x-mcp-tool":"curatit_get_post","security":[{"bearerAuth":["curatit:read"]}],"responses":{"200":{"description":"The result envelope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"post":{"type":"object","properties":{"post_id":{"type":"string"},"short_code":{"type":"string"},"source_url":{"type":"string"},"platform":{"type":"string","enum":["instagram"]},"brand":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"website":{"nullable":true,"type":"string"}},"required":["name","slug"],"additionalProperties":false},"industry":{"nullable":true,"description":"The brand's main category.","type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false},"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"main":{"type":"boolean","description":"True for the brand's main category (the post's `industry`); false for a tag category."}},"required":["name","slug","main"],"additionalProperties":false},"description":"Every category the post is in, main category first, then tags. The industries filter matches any of them."},"format":{"type":"string","enum":["static","carousel","video"]},"posted_at":{"nullable":true,"type":"string"},"caption":{"type":"object","properties":{"text":{"type":"string"},"truncated":{"type":"boolean"},"total_length":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["text","truncated","total_length"],"additionalProperties":false},"alt_text":{"nullable":true,"description":"Instagram's accessibility caption for the post, when it has one.","type":"string"},"hashtags":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","properties":{"likes":{"nullable":true,"description":"As collected from Instagram; null when Instagram hid the count. Missing is unknown, not zero.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comments":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"video_views":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observed_at":{"nullable":true,"description":"When the counts were collected (the scrape), ISO 8601. Absolute counts say nothing about reach or performance.","type":"string"},"source":{"type":"string","enum":["instagram_scrape"]}},"required":["likes","comments","video_views","observed_at","source"],"additionalProperties":false},"media":{"type":"array","items":{"type":"object","properties":{"media_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,60}\\.\\d{1,2}$","description":"A media id from a post's media index or a carousel page: <post id>.<slide index>, slide 0 being the cover."},"slide_index":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based, as the API counts slides."},"slide_label":{"type":"string","description":"The human label, counting from 1: \"Slide 3\", or \"Cover\" for slide 0 of a single image."},"is_cover":{"type":"boolean"},"was_video":{"type":"boolean","description":"True when this slide was a video on Instagram; the library keeps only its cover frame."},"alt_text":{"nullable":true,"type":"string"}},"required":["media_id","slide_index","slide_label","is_cover","was_video","alt_text"],"additionalProperties":false},"description":"Every stored image in slide order; fetch any with curatit_get_media."},"classification":{"nullable":true,"type":"object","properties":{"creative_approach":{"nullable":true,"type":"string"},"approach_family":{"nullable":true,"description":"The family the creative approach belongs to (the approach_families filter).","type":"string"},"secondary_approaches":{"type":"array","items":{"type":"string"}},"goal":{"nullable":true,"type":"string"},"hook_technique":{"nullable":true,"type":"string"},"narrative_pattern":{"nullable":true,"type":"string"},"typography":{"type":"array","items":{"type":"string"}},"layouts":{"type":"array","items":{"type":"string"}},"imagery":{"type":"array","items":{"type":"string"}},"palettes":{"type":"array","items":{"type":"string"}},"tones":{"type":"array","items":{"type":"string"},"description":"Tone of voice (the tones filter)."},"persuasion":{"type":"array","items":{"type":"string"},"description":"Persuasion techniques (the persuasion filter)."},"cta":{"nullable":true,"description":"Call-to-action style (the ctas filter); null when the post has none or it couldn't be told.","type":"string"},"taxonomy_version":{"nullable":true,"type":"string"},"confidence":{"nullable":true,"description":"Always null: the analysis as a whole has no measured confidence. Each creative decision carries its own, under analysis.decisions.","type":"string"}},"required":["creative_approach","approach_family","secondary_approaches","goal","hook_technique","narrative_pattern","typography","layouts","imagery","palettes","tones","persuasion","cta","taxonomy_version","confidence"],"additionalProperties":false,"description":"Slugs from the post's published analysis (AI-drafted, approved for publication), the values the search filters take; null when the post has no published analysis yet. Values that say nothing (unknown, none, other) are left out."},"analysis":{"nullable":true,"description":"The published analysis: summary fields always, the full sections at detail_level=full; null without one.","type":"object","properties":{"status":{"type":"string","enum":["published"]},"analysis_version":{"type":"string"},"taxonomy_version":{"nullable":true,"type":"string"},"published_at":{"nullable":true,"type":"string"},"source":{"type":"string","description":"ai: drafted by a model, then approved for publication by Curatit."},"needs_review":{"type":"boolean","description":"True when the analysis is flagged for a closer editor review: read it as an AI draft that was approved for publication, not one an editor checked line by line."},"image_analysis_complete":{"type":"boolean"},"slides_analysed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"strategy_headline":{"type":"string","description":"The strategy in one line (the concept for analyses written before 3.0)."},"strategy_summary":{"nullable":true,"description":"A sentence or two after the headline.","type":"string"},"creative_formula":{"nullable":true,"description":"The idea as a reusable sequence of moves, e.g. \"Bold claim → Clear comparison → Visual evidence\".","type":"string"},"concept":{"nullable":true,"type":"string"},"summary":{"nullable":true,"type":"string"},"hook":{"type":"object","properties":{"technique":{"nullable":true,"type":"string"},"observed_text":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"}},"required":["technique","observed_text","location"],"additionalProperties":false},"decisions":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"The technique, written as an instruction."},"explanation":{"type":"string","description":"What the choice is and why it matters, in a sentence or two."},"observation":{"nullable":true,"description":"What was done, from what's visible; null where the explanation already says it (analyses written before 3.0).","type":"string"},"effect":{"type":"string","description":"Why it might work: a hypothesis, not measured performance."},"principle":{"type":"string","description":"The design rule underneath, reusable elsewhere."},"watch_out":{"nullable":true,"description":"What this choice costs or risks here; null when nothing notable.","type":"string"},"confidence":{"type":"string","enum":["high","medium","low"],"description":"How sure the analysis is of this decision."},"slides":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":"The slides it rests on, zero-based, as media ids and curatit_get_carousel count them."},"slides_label":{"nullable":true,"description":"The same slides as people count them, e.g. \"Slides 1–2, 6\" (\"Cover\" on a single image); null when it rests on no slide.","type":"string"},"on_caption":{"type":"boolean","description":"Whether it also rests on the caption."}},"required":["title","explanation","observation","effect","principle","watch_out","confidence","slides","slides_label","on_caption"],"additionalProperties":false},"description":"The specific creative choices that shape the post, one to five, each with the slides that show it. Effects are hypotheses, not measured performance."},"data_checks":{"type":"array","items":{"type":"object","properties":{"aspect":{"type":"string","description":"What was checked, e.g. \"Start values\", \"Time period\", \"Sources and disclaimers\"."},"status":{"type":"string","enum":["observed","potential_concern","cannot_verify"],"description":"observed: a fact about what the creative shows. potential_concern: something that could mislead. cannot_verify: a figure or claim the post gives no way to check."},"note":{"type":"string"},"slides":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":"The slides it rests on, zero-based, as media ids and curatit_get_carousel count them."},"slides_label":{"nullable":true,"description":"The same slides as people count them, e.g. \"Slides 1–2, 6\" (\"Cover\" on a single image); null when it rests on no slide.","type":"string"},"on_caption":{"type":"boolean","description":"Whether it also rests on the caption."}},"required":["aspect","status","note","slides","slides_label","on_caption"],"additionalProperties":false},"description":"Checks on the data, charts and claims the post shows, concerns first. No figure was checked against a source; nothing here is a fact-check."},"application":{"type":"object","properties":{"when_to_use":{"type":"array","items":{"type":"string"},"description":"When the idea is worth borrowing."},"when_not_to_use":{"type":"array","items":{"type":"string"},"description":"When it isn't."}},"required":["when_to_use","when_not_to_use"],"additionalProperties":false},"why_it_might_work":{"type":"array","items":{"type":"object","properties":{"hypothesis":{"type":"string"},"evidence":{"type":"array","items":{"type":"string"},"description":"Zero-based slide refs (slide:0 is the first image) or caption."}},"required":["hypothesis","evidence"],"additionalProperties":false},"description":"Hypotheses, each tied to observed evidence. Not measured performance."},"takeaways":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"Where it was seen: slide:<index>, zero-based (slide:0 is the first image), or caption. decisions[].slides_label names slides as people count them."},"observation":{"type":"string"},"quote":{"nullable":true,"description":"On-slide or caption text, copied verbatim, when the observation rests on words.","type":"string"}},"required":["ref","observation","quote"],"additionalProperties":false}},"caveats":{"type":"array","items":{"type":"string"},"description":"What the analysis couldn't establish or wants checked."},"note":{"type":"string"},"narrative":{"type":"object","properties":{"pattern":{"nullable":true,"type":"string"},"arc":{"nullable":true,"type":"string"}},"required":["pattern","arc"],"additionalProperties":false},"slides":{"type":"array","items":{"type":"object","properties":{"slide_index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slide_label":{"type":"string"},"role":{"nullable":true,"description":"The slide's job in the sequence, in words (\"Hook\", \"Gallery frame\"); null when it couldn't be told.","type":"string"},"headline":{"nullable":true,"type":"string"},"body":{"nullable":true,"description":"Other copy on the slide, as written.","type":"string"},"legibility":{"nullable":true,"type":"string","enum":["clear","partial","illegible","no-text"]},"observation":{"nullable":true,"type":"string"},"typography":{"type":"array","items":{"type":"string"}},"layouts":{"type":"array","items":{"type":"string"}},"imagery":{"type":"array","items":{"type":"string"}},"palettes":{"type":"array","items":{"type":"string"}},"devices":{"type":"array","items":{"type":"string"}},"colours":{"type":"array","items":{"type":"string"},"description":"Colours measured from the image's pixels (#rrggbb), approximate; not brand colour codes."},"blank":{"type":"boolean","description":"True for a blank frame (a video's black cover): nothing on it can be described."},"changes":{"type":"array","items":{"type":"string"},"description":"What differs from the slide before, compared field by field."}},"required":["slide_index","slide_label","role","headline","body","legibility","observation","typography","layouts","imagery","palettes","devices","colours","blank","changes"],"additionalProperties":false}},"visual":{"description":"The visual system, dimension by dimension.","type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","enum":["composition","typography","colour","imagery","devices","branding"]},"insight":{"nullable":true,"description":"How the post handles it, in a sentence.","type":"string"},"attributes":{"type":"array","items":{"type":"string"},"description":"Up to four attributes, in words."},"slides":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991},"description":"The slides that show them, zero-based."}},"required":["dimension","insight","attributes","slides"],"additionalProperties":false}},"colour_roles":{"description":"The colours the post is built on, measured from the images, not brand tokens.","type":"array","items":{"type":"object","properties":{"hex":{"type":"string","description":"A colour measured from the images (#rrggbb), not a brand token."},"role":{"nullable":true,"description":"The job it does (background, headline, accent…); null when the analysis didn't name one.","type":"string"}},"required":["hex","role"],"additionalProperties":false}},"copywriting":{"description":"How the words work: voice, length, what the headline does, what the caption adds.","nullable":true,"type":"string"},"brief_markdown":{"description":"The post page's copy brief: a Markdown prompt for any LLM to make an original post on this principle, with [brackets] for the reader's brand.","nullable":true,"type":"string"},"copy_strategy":{},"attention_mechanisms":{"type":"array","items":{}},"adaptation_ideas":{"type":"array","items":{}},"constraints_or_uncertainties":{"type":"array","items":{}}},"required":["status","analysis_version","taxonomy_version","published_at","source","needs_review","image_analysis_complete","slides_analysed","strategy_headline","strategy_summary","creative_formula","concept","summary","hook","decisions","data_checks","application","why_it_might_work","takeaways","evidence","caveats","note"],"additionalProperties":false},"missing":{"type":"array","items":{"type":"string"},"description":"Fields the catalog has no value for on this post, named rather than invented."}},"required":["post_id","short_code","source_url","platform","brand","industry","categories","format","posted_at","caption","alt_text","hashtags","metrics","media","classification","analysis","missing"],"additionalProperties":false}},"required":["post"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"parameters":[{"name":"post_id","in":"path","required":true,"description":"A Curatit post id (digits) or the post's Instagram short code (e.g. DeALQm2D355), as returned by search.","schema":{"type":"string","minLength":5,"maxLength":60,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"detail_level","in":"query","required":false,"description":"summary (default): the post and its analysis in brief. full: every analysis section and slide record.","schema":{"default":"summary","type":"string","enum":["summary","full"]}}]}},"/api/v1/posts/{post_id}/carousel":{"get":{"operationId":"getCarousel","summary":"Get carousel slides","description":"A carousel's slides in stored order, a page at a time (default 5, at most 10): image URL, alt text, which slides were videos, and the analysis record for each slide when the post has a published analysis. Slide indexes are zero-based; labels count from 1.","x-mcp-tool":"curatit_get_carousel","security":[{"bearerAuth":["curatit:read"]}],"responses":{"200":{"description":"The result envelope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"post_id":{"type":"string"},"short_code":{"type":"string"},"format":{"type":"string","enum":["static","carousel","video"]},"total_slides":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slides":{"type":"array","items":{"type":"object","properties":{"media_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,60}\\.\\d{1,2}$","description":"A media id from a post's media index or a carousel page: <post id>.<slide index>, slide 0 being the cover."},"slide_index":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based, as the API counts slides."},"slide_label":{"type":"string","description":"The human label, counting from 1: \"Slide 3\", or \"Cover\" for slide 0 of a single image."},"is_cover":{"type":"boolean"},"was_video":{"type":"boolean","description":"True when this slide was a video on Instagram; the library keeps only its cover frame."},"alt_text":{"nullable":true,"type":"string"},"public_url":{"type":"string","description":"The stored image (WebP, at most 1080px wide). A URL the model hasn't opened is not an image it has seen."},"original_width":{"nullable":true,"description":"Instagram's original pixel size, not the stored file's.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"original_height":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"analysis":{"nullable":true,"description":"The published analysis's record for this slide, when there is one.","type":"object","properties":{"slide_index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slide_label":{"type":"string"},"role":{"nullable":true,"description":"The slide's job in the sequence, in words (\"Hook\", \"Gallery frame\"); null when it couldn't be told.","type":"string"},"headline":{"nullable":true,"type":"string"},"body":{"nullable":true,"description":"Other copy on the slide, as written.","type":"string"},"legibility":{"nullable":true,"type":"string","enum":["clear","partial","illegible","no-text"]},"observation":{"nullable":true,"type":"string"},"typography":{"type":"array","items":{"type":"string"}},"layouts":{"type":"array","items":{"type":"string"}},"imagery":{"type":"array","items":{"type":"string"}},"palettes":{"type":"array","items":{"type":"string"}},"devices":{"type":"array","items":{"type":"string"}},"colours":{"type":"array","items":{"type":"string"},"description":"Colours measured from the image's pixels (#rrggbb), approximate; not brand colour codes."},"blank":{"type":"boolean","description":"True for a blank frame (a video's black cover): nothing on it can be described."},"changes":{"type":"array","items":{"type":"string"},"description":"What differs from the slide before, compared field by field."}},"required":["slide_index","slide_label","role","headline","body","legibility","observation","typography","layouts","imagery","palettes","devices","colours","blank","changes"],"additionalProperties":false}},"required":["media_id","slide_index","slide_label","is_cover","was_video","alt_text","public_url","original_width","original_height","analysis"],"additionalProperties":false}},"next_start":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slides_analysed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many slides the published analysis covers; 0 without one."}},"required":["post_id","short_code","format","total_slides","slides","next_start","slides_analysed"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"parameters":[{"name":"post_id","in":"path","required":true,"description":"A Curatit post id (digits) or the post's Instagram short code (e.g. DeALQm2D355), as returned by search.","schema":{"type":"string","minLength":5,"maxLength":60,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"start_slide","in":"query","required":false,"description":"Zero-based index of the first slide to return (default 0).","schema":{"default":0,"type":"integer","minimum":0,"maximum":99}},{"name":"limit","in":"query","required":false,"description":"Slides per page, 1 to 10, default 5.","schema":{"default":5,"type":"integer","minimum":1,"maximum":10}}]}},"/api/v1/media/{media_id}":{"get":{"operationId":"getMedia","summary":"Get a post image","description":"A stored image by media id (from a post's media index or a carousel page): a public link with its size (default), or the bytes inline as an image block for hosts that can show images (delivery=inline, at most 1024px and 1 MiB). Only catalog images are served; never a URL you supply.","x-mcp-tool":"curatit_get_media","security":[{"bearerAuth":["curatit:read"]}],"responses":{"200":{"description":"The result envelope; with delivery=inline, the image bytes instead, and the envelope's data as the X-Curatit-Media header.","headers":{"X-Curatit-Media":{"description":"With delivery=inline: the result's data as percent-encoded JSON (decodeURIComponent gives the object).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"media_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,60}\\.\\d{1,2}$","description":"A media id from a post's media index or a carousel page: <post id>.<slide index>, slide 0 being the cover."},"post_id":{"type":"string"},"slide_index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slide_label":{"type":"string"},"url":{"nullable":true,"description":"The image's URL for link delivery (null when delivered inline).","type":"string"},"access":{"type":"string","enum":["public","signed"]},"expires_at":{"nullable":true,"description":"When a signed URL stops working; null for public URLs.","type":"string"},"mime_type":{"type":"string"},"width":{"nullable":true,"description":"The delivered image's pixel width, read from the file; null when it couldn't be read.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alt_text":{"nullable":true,"type":"string"},"delivery":{"type":"string","enum":["link","inline"]},"resized":{"type":"boolean","description":"True when inline delivery returned a smaller derivative than the stored file."}},"required":["media_id","post_id","slide_index","slide_label","url","access","expires_at","mime_type","width","height","bytes","alt_text","delivery","resized"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}},"image/webp":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"parameters":[{"name":"media_id","in":"path","required":true,"description":"A media id from a post's media index or a carousel page: <post id>.<slide index>, slide 0 being the cover.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,60}\\.\\d{1,2}$"}},{"name":"delivery","in":"query","required":false,"description":"link (default): a URL and metadata. inline: the image bytes as an MCP image block (hosts that show images only), capped at 1 MiB.","schema":{"default":"link","type":"string","enum":["link","inline"]}},{"name":"max_edge","in":"query","required":false,"description":"Longest edge in pixels for inline delivery, at most 1024 (the default).","schema":{"type":"integer","minimum":64,"maximum":1024}}]}},"/api/v1/briefs":{"post":{"operationId":"createBrief","summary":"Create a grounded creative brief","description":"An original creative brief built from 1 to 8 reference posts: what each visibly does, what the published analysis infers, a proposed concept, copy and design directions, what to adapt and what never to copy, missing evidence, and a portable generation prompt. Assembled from editor-approved analysis, no model runs. Needs the curatit:brief scope.","x-mcp-tool":"curatit_create_brief","security":[{"bearerAuth":["curatit:brief"]}],"responses":{"200":{"description":"The result envelope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"brief":{"type":"object","properties":{"objective":{"type":"string"},"audience":{"type":"string"},"references":{"type":"array","items":{"type":"object","properties":{"post_id":{"type":"string"},"short_code":{"type":"string"},"source_url":{"type":"string"},"brand":{"type":"string"},"format":{"type":"string","enum":["static","carousel","video"]},"analysis_available":{"type":"boolean"}},"required":["post_id","short_code","source_url","brand","format","analysis_available"],"additionalProperties":false}},"observations":{"type":"array","items":{"type":"object","properties":{"post_id":{"type":"string"},"observed":{"type":"array","items":{"type":"string"},"description":"Seen or extracted: on-slide text, labels, slide roles."},"inferred":{"type":"array","items":{"type":"string"},"description":"Interpretation of the evidence, from the published analysis."}},"required":["post_id","observed","inferred"],"additionalProperties":false}},"concept":{"type":"object","properties":{"proposal":{"type":"string"},"built_on":{"type":"array","items":{"type":"string"}}},"required":["proposal","built_on"],"additionalProperties":false},"copy_directions":{"type":"object","properties":{"headline":{"type":"array","items":{"type":"string"}},"supporting":{"type":"array","items":{"type":"string"}}},"required":["headline","supporting"],"additionalProperties":false},"design_guidance":{"type":"object","properties":{"layout":{"type":"array","items":{"type":"string"}},"hierarchy":{"type":"array","items":{"type":"string"}},"typography":{"type":"array","items":{"type":"string"}},"colour":{"type":"array","items":{"type":"string"}},"imagery":{"type":"array","items":{"type":"string"}},"spacing":{"type":"array","items":{"type":"string"}}},"required":["layout","hierarchy","typography","colour","imagery","spacing"],"additionalProperties":false},"production":{"type":"object","properties":{"aspect_ratio":{"nullable":true,"type":"string"},"safe_margins":{"nullable":true,"type":"string"},"format":{"type":"string"},"slides":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["aspect_ratio","safe_margins","format","slides"],"additionalProperties":false},"adapt":{"type":"object","properties":{"take":{"type":"array","items":{"type":"string"}},"do_not_copy":{"type":"array","items":{"type":"string"}}},"required":["take","do_not_copy"],"additionalProperties":false},"limitations":{"type":"object","properties":{"missing_evidence":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"}},"required":["missing_evidence","confidence"],"additionalProperties":false},"watch_out":{"description":"What the references' creative choices risk, and their data checks' potential concerns.","type":"array","items":{"type":"string"}},"application":{"description":"When the references' ideas are worth using and when they aren't.","type":"object","properties":{"when_to_use":{"type":"array","items":{"type":"string"},"description":"When the idea is worth borrowing."},"when_not_to_use":{"type":"array","items":{"type":"string"},"description":"When it isn't."}},"required":["when_to_use","when_not_to_use"],"additionalProperties":false},"generation_prompt":{"type":"string","description":"A portable prompt for a production or generation tool, free of the references' words, marks and colour codes."}},"required":["objective","audience","references","observations","concept","copy_directions","design_guidance","production","adapt","limitations","generation_prompt"],"additionalProperties":false},"text":{"type":"string","description":"The brief rendered in the requested output_format."},"output_format":{"type":"string","enum":["markdown","json","text"]},"method":{"type":"string","enum":["deterministic_template"],"description":"Assembled from stored, editor-approved analysis and a template; no model ran. Proposed choices are recommendations."}},"required":["brief","text","output_format","method"],"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"400":{"description":"INVALID_ARGUMENT","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"401":{"description":"UNAUTHENTICATED: missing or invalid token (see WWW-Authenticate).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"403":{"description":"FORBIDDEN: the token lacks the scope.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"404":{"description":"NOT_FOUND","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"429":{"description":"RATE_LIMITED or QUOTA_EXCEEDED (see Retry-After).","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"503":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}},"504":{"description":"TIMEOUT: the call ran past its budget.","content":{"application/json":{"schema":{"type":"object","required":["schema_version","request_id","warnings"],"properties":{"schema_version":{"type":"string","const":"1.1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{},"additionalProperties":false},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","RATE_LIMITED","QUOTA_EXCEEDED","UPSTREAM_UNAVAILABLE","TIMEOUT","INTERNAL_ERROR"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"provenance":{"type":"object","properties":{"retrieved_at":{"type":"string","description":"When the data was read, ISO 8601."},"taxonomy_version":{"nullable":true,"description":"The catalog's taxonomy version the result was read against.","type":"string"},"catalog":{"type":"string","description":"Where the data comes from: Curatit's published library."}},"required":["retrieved_at","taxonomy_version","catalog"],"additionalProperties":false}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"objective":{"type":"string","minLength":1,"maxLength":2000,"description":"What the new piece has to achieve."},"audience":{"type":"string","minLength":1,"maxLength":1000,"description":"Who it is for."},"reference_post_ids":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","minLength":5,"maxLength":60,"pattern":"^[A-Za-z0-9_-]+$","description":"A Curatit post id (digits) or the post's Instagram short code (e.g. DeALQm2D355), as returned by search."},"description":"One to eight posts from the catalog to learn from."},"brand_context":{"description":"Your brand, product, voice and constraints on identity.","type":"string","maxLength":4000},"constraints":{"description":"Format, aspect ratio, safe margins, legal or data constraints, deadlines.","type":"string","maxLength":4000},"output_format":{"default":"markdown","description":"How the brief text is rendered (default markdown). The structured brief is always returned, with a portable generation_prompt.","type":"string","enum":["markdown","json","text"]}},"required":["objective","audience","reference_post_ids"],"additionalProperties":false}}}}}},"/api/v1/health/live":{"get":{"operationId":"healthLive","summary":"Liveness","security":[],"responses":{"200":{"description":"The process is up."}}}},"/api/v1/health/ready":{"get":{"operationId":"healthReady","summary":"Readiness","security":[],"responses":{"200":{"description":"Dependencies answer."},"503":{"description":"A dependency doesn't."}}}}}}