{"openapi":"3.0.3","info":{"title":"CTRify API","version":"2026-08-15","description":"Customer API for the same allowlisted CTRify operations, ownership checks, native pricing, idempotency and usage metering used by CTRify MCP."},"servers":[{"url":"https://www.ctrify.com/api/ctrify/v1"}],"paths":{"/account":{"get":{"summary":"Get account snapshot","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/usage":{"get":{"summary":"Get external automation usage","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/websites":{"get":{"summary":"List owned websites","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50}},{"name":"before_site_id","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/websites/{site_id}":{"get":{"summary":"Get one owned website","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/seo/audits":{"post":{"summary":"Run a read-only SEO opportunity audit","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/capabilities":{"get":{"summary":"Search the bounded operation catalog","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"parameters":[{"name":"query","in":"query","schema":{"type":"string","minLength":3,"maxLength":160}},{"name":"module","in":"query","schema":{"type":"string","maxLength":64}},{"name":"kind","in":"query","schema":{"type":"string","enum":["read","write","job","destructive"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/capabilities/{operation_id}":{"get":{"summary":"Get one exact operation contract","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"parameters":[{"name":"operation_id","in":"path","required":true,"schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/operations/{operation_id}":{"post":{"summary":"Execute one allowlisted CTRify operation","description":"Send the operation arguments as the JSON body. Mutations require an Idempotency-Key header.","security":[{"ctrifyOAuth":[]},{"bearerToken":[]}],"parameters":[{"name":"operation_id","in":"path","required":true,"schema":{"type":"string","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful CTRify API response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"409":{"$ref":"#/components/responses/Conflict"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/CreditsRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/InvalidRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"ctrifyOAuth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://www.ctrify.com/oauth/authorize","tokenUrl":"https://www.ctrify.com/oauth/token","scopes":{"account:read":"Read account state","websites:read":"Read websites","seo:audit":"Run read-only audits","assets:read":"Read product assets","assets:write":"Change product assets","seo:analyze":"Run SEO analysis","seo:execute":"Run SEO actions","connections:manage":"Manage connections","billing:read":"Read billing state","billing:manage":"Manage supported billing operations","domains:manage":"Manage domains","outreach:send":"Send outreach","destructive:execute":"Run explicit destructive operations"}}}},"bearerToken":{"type":"http","scheme":"bearer"}},"schemas":{"Success":{"type":"object","properties":{"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true}},"required":["data","meta"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error","request_id"]}},"responses":{"Unauthorized":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"CreditsRequired":{"description":"Additional CTRify credits are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The token does not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InvalidRequest":{"description":"The request or operation arguments are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"The request rate limit was reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"The idempotency key conflicts with an earlier request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}