{"openapi":"3.1.0","info":{"title":"Sinch Conversation (BYOK) API","version":"0.1.0","description":"Sinch Conversation (BYOK) lets an AI assistant read your own Sinch Conversation data through the Sinch Conversation API with a key you supply (access key ID). Read-only: 6 tools (list_apps, get_app, list_conversations, list_recent_conversations, list_messages, get_project_settings). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sinch-conversation.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sinch-conversation/docs"},"termsOfService":"https://connectorbay.com/byok-sinch-conversation/terms"},"servers":[{"url":"https://byok-sinch-conversation.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sinch-conversation/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_apps":{"post":{"operationId":"list_apps","summary":"List the Conversation API apps of a project with processing mode, retention policy and rate limits. Channel credentials ","description":"List the Conversation API apps of a project with processing mode, retention policy and rate limits. Channel credentials are not returned. Use for \"Which Conversation API apps do I have in my Sinch project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"}},"required":["region","project_id"],"title":"list_appsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_app":{"post":{"operationId":"get_app","summary":"Get one Conversation API app's processing mode, retention policy and rate limits (no channel credentials). Use for \"What","description":"Get one Conversation API app's processing mode, retention policy and rate limits (no channel credentials). Use for \"What is the retention policy of my Sinch Conversation app\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"},"app_id":{"description":"Conversation API app id.","maxLength":200,"title":"App Id","type":"string"}},"required":["region","project_id","app_id"],"title":"get_appArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_conversations":{"post":{"operationId":"list_conversations","summary":"List conversations of an app or a contact (one of app_id or contact_id is required by the API), with active flag and cha","description":"List conversations of an app or a contact (one of app_id or contact_id is required by the API), with active flag and channel. Up to 20 per page. Use for \"Which conversations are active in my Sinch app\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"},"app_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations of this app.","title":"App Id"},"contact_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations of this contact.","title":"Contact Id"},"only_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active conversations only, false for inactive only.","title":"Only Active"},"active_channel":{"anyOf":[{"enum":["SMS","RCS","WHATSAPP","MMS","KAKAOTALK","KAKAOTALKCHAT","VIBERBM","LINE","INSTAGRAM","MESSENGER","WECHAT","TELEGRAM","APPLEBC"],"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations whose active channel is this.","title":"Active Channel"},"page_size":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Conversations per page (1 to 20, default 10).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Token from the previous answer's next_page_token.","title":"Page Token"}},"required":["region","project_id"],"title":"list_conversationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_recent_conversations":{"post":{"operationId":"list_recent_conversations","summary":"List an app's conversations ordered by latest message time, each with its most recent message's metadata (direction, tim","description":"List an app's conversations ordered by latest message time, each with its most recent message's metadata (direction, time, ids). Up to 50 per page. Use for \"Which Sinch conversations had messages most recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"},"app_id":{"description":"Conversation API app id.","maxLength":100,"title":"App Id","type":"string"},"only_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active conversations only.","title":"Only Active"},"order":{"anyOf":[{"enum":["DESC","ASC"],"type":"string"},{"type":"null"}],"default":null,"description":"DESC for newest first (default) or ASC.","title":"Order"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Conversations per page (1 to 50, default 10).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Token from the previous answer's next_page_token.","title":"Page Token"}},"required":["region","project_id","app_id"],"title":"list_recent_conversationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_messages":{"post":{"operationId":"list_messages","summary":"List message metadata (id, direction, time, conversation, contact, channel) filtered by app, conversation, contact, chan","description":"List message metadata (id, direction, time, conversation, contact, channel) filtered by app, conversation, contact, channel or time window; message bodies and recipient addresses are not returned. Up to 1000 per page. Use for \"How many Sinch Conversation messages came in over WhatsApp this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"},"app_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages of this app.","title":"App Id"},"conversation_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages of this conversation.","title":"Conversation Id"},"contact_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages of this contact.","title":"Contact Id"},"channel":{"anyOf":[{"enum":["SMS","RCS","WHATSAPP","MMS","KAKAOTALK","KAKAOTALKCHAT","VIBERBM","LINE","INSTAGRAM","MESSENGER","WECHAT","TELEGRAM","APPLEBC"],"type":"string"},{"type":"null"}],"default":null,"description":"Only messages on this channel.","title":"Channel"},"direction":{"anyOf":[{"enum":["TO_APP","TO_CONTACT"],"type":"string"},{"type":"null"}],"default":null,"description":"TO_APP for inbound or TO_CONTACT for outbound.","title":"Direction"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages accepted after this ISO 8601 time.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages accepted before this ISO 8601 time.","title":"End Time"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Messages per page (1 to 1000, default 10).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Token from the previous answer's next_page_token.","title":"Page Token"}},"required":["region","project_id"],"title":"list_messagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_project_settings":{"post":{"operationId":"get_project_settings","summary":"Get project-level Conversation API settings such as whether unified contact ids are enabled. Use for \"Are unified contac","description":"Get project-level Conversation API settings such as whether unified contact ids are enabled. Use for \"Are unified contact ids enabled in my Sinch project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region where your Conversation API app was created: us, eu or br (first label of the API host).","enum":["us","eu","br"],"title":"Region","type":"string"},"project_id":{"description":"Sinch project id shown in the Sinch dashboard (Conversation API, apps).","maxLength":200,"title":"Project Id","type":"string"}},"required":["region","project_id"],"title":"get_project_settingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}