{"openapi":"3.1.0","info":{"title":"Synthflow (BYOK) API","version":"0.1.0","description":"Synthflow (BYOK) lets an AI assistant read your own Synthflow data through the Synthflow API with a key you supply (Synthflow API key (global region)). Read-only: 6 tools (list_batch_calls, get_batch_call, list_chats, list_simulation_suites, list_simulation_scenarios, list_simulation_cases). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-synthflow.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-synthflow/docs"},"termsOfService":"https://connectorbay.com/byok-synthflow/terms"},"servers":[{"url":"https://byok-synthflow.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-synthflow/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_batch_calls":{"post":{"operationId":"list_batch_calls","summary":"List batch call campaigns, newest first, with status, recipient counters (total, dispatched, failed, pending) and the ag","description":"List batch call campaigns, newest first, with status, recipient counters (total, dispatched, failed, pending) and the agent that places the calls. Use for \"How are my Synthflow batch call campaigns doing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Batches per page (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many batches to skip.","title":"Offset"}},"title":"list_batch_callsArguments","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_batch_call":{"post":{"operationId":"get_batch_call","summary":"Get one batch call: status and counters of recipients total, dispatched, failed and still pending. Use for \"How far alon","description":"Get one batch call: status and counters of recipients total, dispatched, failed and still pending. Use for \"How far along is Synthflow batch call 3f6f2f5e\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"batch_call_id":{"description":"UUID of the batch call, from list_batch_calls.","maxLength":200,"title":"Batch Call Id","type":"string"}},"required":["batch_call_id"],"title":"get_batch_callArguments","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_chats":{"post":{"operationId":"list_chats","summary":"List text chat sessions (id, status, start time), optionally for one agent, with a cursor for the next page. Use for \"Wh","description":"List text chat sessions (id, status, start time), optionally for one agent, with a cursor for the next page. Use for \"Which Synthflow chats are still ongoing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agent_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only chats of this agent (model id).","title":"Agent Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many chats to return.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next_cursor.","title":"Cursor"}},"title":"list_chatsArguments","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_simulation_suites":{"post":{"operationId":"list_simulation_suites","summary":"List simulation suites (groups of test cases for an agent) with the agent, language and summaries of their cases. Use fo","description":"List simulation suites (groups of test cases for an agent) with the agent, language and summaries of their cases. Use for \"Which test suites do I have for my Synthflow agents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (1 to 100).","title":"Page Size"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in suite names.","title":"Search"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only suites created at or after this ISO 8601 time.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only suites created at or before this ISO 8601 time.","title":"End Date"}},"title":"list_simulation_suitesArguments","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_simulation_scenarios":{"post":{"operationId":"list_simulation_scenarios","summary":"List simulation scenario templates used to generate test cases, with name and description. Use for \"What simulation scen","description":"List simulation scenario templates used to generate test cases, with name and description. Use for \"What simulation scenarios are defined in Synthflow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (1 to 100).","title":"Page Size"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in scenario names.","title":"Search"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only scenarios created at or after this ISO 8601 time.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only scenarios created at or before this ISO 8601 time.","title":"End Date"}},"title":"list_simulation_scenariosArguments","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_simulation_cases":{"post":{"operationId":"list_simulation_cases","summary":"List simulation test cases with prompt, success criteria, type and the suite they belong to. Use for \"Which test cases a","description":"List simulation test cases with prompt, success criteria, type and the suite they belong to. Use for \"Which test cases are in Synthflow suite suite-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (1 to 100).","title":"Page Size"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in case names.","title":"Search"},"suite_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only cases of this simulation suite id.","title":"Suite Id"},"simulation_case_type":{"anyOf":[{"enum":["custom","agent_based"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this case type.","title":"Simulation Case Type"}},"title":"list_simulation_casesArguments","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}}}}