{"openapi":"3.1.0","info":{"title":"Sovrn Commerce (BYOK) API","version":"0.1.0","description":"Sovrn Commerce (BYOK) lets an AI assistant read your own Sovrn Commerce data through the Sovrn Commerce API with a key you supply (Sovrn Commerce site secret key). Read-only: 8 tools (list_transactions, report_by_merchant, report_by_merchant_and_date, report_by_link, report_by_page, report_by_product, report_by_network, report_by_tracking_id). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sovrn.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sovrn/docs"},"termsOfService":"https://connectorbay.com/byok-sovrn/terms"},"servers":[{"url":"https://byok-sovrn.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sovrn/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_transactions":{"post":{"operationId":"list_transactions","summary":"List affiliate commission transactions for one day, filtered by click, commission or update date, with merchant, campaig","description":"List affiliate commission transactions for one day, filtered by click, commission or update date, with merchant, campaign, order value, publisher revenue and page URL. At least one date is required. The API allows one request per 60 seconds and one day of data per call. Use for \"What affiliate commissions did I earn from clicks on 2026-09-15\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Click date to include, format yyyy-mm-dd.","title":"Click Date"},"commission_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Commission date to include, format yyyy-mm-dd.","title":"Commission Date"},"update_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions updated on this date, format yyyy-mm-dd.","title":"Update Date"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"}},"title":"list_transactionsArguments","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/report_by_merchant":{"post":{"operationId":"report_by_merchant","summary":"Aggregated affiliate revenue, clicks, sales, actions, conversion rate and EPC per merchant group. The API allows one req","description":"Aggregated affiliate revenue, clicks, sales, actions, conversion rate and EPC per merchant group. The API allows one request per 60 seconds and at most 31 days per call. Use for \"Which merchants earned me the most affiliate revenue in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_merchantArguments","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/report_by_merchant_and_date":{"post":{"operationId":"report_by_merchant_and_date","summary":"Aggregated affiliate performance per merchant group and day. The API allows one request per 60 seconds and at most 31 da","description":"Aggregated affiliate performance per merchant group and day. The API allows one request per 60 seconds and at most 31 days per call. Use for \"How did my affiliate earnings trend day by day last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_merchant_and_dateArguments","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/report_by_link":{"post":{"operationId":"report_by_link","summary":"Aggregated affiliate performance per link URL and link text. The API allows one request per 60 seconds and at most 31 da","description":"Aggregated affiliate performance per link URL and link text. The API allows one request per 60 seconds and at most 31 days per call. Use for \"Which of my affiliate links convert best\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_linkArguments","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/report_by_page":{"post":{"operationId":"report_by_page","summary":"Aggregated affiliate performance per page URL, with pageviews and revenue per thousand views. The API allows one request","description":"Aggregated affiliate performance per page URL, with pageviews and revenue per thousand views. The API allows one request per 60 seconds and at most 31 days per call. Use for \"Which of my pages earn the most affiliate revenue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_pageArguments","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/report_by_product":{"post":{"operationId":"report_by_product","summary":"Aggregated affiliate revenue, sales and actions per product (merchandise) name. The API allows one request per 60 second","description":"Aggregated affiliate revenue, sales and actions per product (merchandise) name. The API allows one request per 60 seconds and at most 31 days per call. Use for \"Which products sold the most through my affiliate links\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_productArguments","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/report_by_network":{"post":{"operationId":"report_by_network","summary":"Aggregated affiliate performance per connected affiliate network. The API allows one request per 60 seconds and at most ","description":"Aggregated affiliate performance per connected affiliate network. The API allows one request per 60 seconds and at most 31 days per call. Use for \"Which affiliate network paid me the most last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_networkArguments","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/report_by_tracking_id":{"post":{"operationId":"report_by_tracking_id","summary":"Aggregated affiliate performance per custom tracking ID (CUID). The API allows one request per 60 seconds and at most 31","description":"Aggregated affiliate performance per custom tracking ID (CUID). The API allows one request per 60 seconds and at most 31 days per call. Use for \"How did each of my campaign tracking IDs perform\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"click_date_start":{"description":"First click date to include, format yyyy-mm-dd, for example 2026-09-01.","maxLength":10,"title":"Click Date Start","type":"string"},"click_date_end":{"description":"Click date where the range stops, format yyyy-mm-dd. This day is excluded; the range may span at most 31 days, for example 2026-10-01.","maxLength":10,"title":"Click Date End","type":"string"},"campaign_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric campaign IDs to include.","title":"Campaign Ids"},"merchant_group_ids":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated numeric merchant group IDs to include.","title":"Merchant Group Ids"},"program_type":{"anyOf":[{"enum":["CPC","CPA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this program type: CPC or CPA.","title":"Program Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code of the click.","title":"Country"}},"required":["click_date_start","click_date_end"],"title":"report_by_tracking_idArguments","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}}}}