{"openapi":"3.1.0","info":{"title":"Bitly (BYOK) API","version":"0.1.0","description":"Bitly (BYOK) lets an AI assistant read your own Bitly data through the Bitly API with a key you supply (Bitly access token). Read-only: 10 tools (get_user, list_groups, list_group_bitlinks, get_bitlink, get_bitlink_clicks_summary, get_bitlink_clicks, get_bitlink_countries, get_bitlink_referrers, list_group_tags, list_campaigns). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-bitly.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bitly/docs"},"termsOfService":"https://connectorbay.com/byok-bitly/terms"},"servers":[{"url":"https://byok-bitly.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bitly/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/get_user":{"post":{"operationId":"get_user","summary":"Show the Bitly user the token belongs to: login, name, emails and default group GUID. Use for \"Which Bitly account is my","description":"Show the Bitly user the token belongs to: login, name, emails and default group GUID. Use for \"Which Bitly account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_userArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List the Bitly groups the user can see, with GUID, name and role; the GUID is needed by group tools. Use for \"Which Bitl","description":"List the Bitly groups the user can see, with GUID, name and role; the GUID is needed by group tools. Use for \"Which Bitly groups do I belong to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_guid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups of this organization GUID.","title":"Organization Guid"}},"title":"list_groupsArguments","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_group_bitlinks":{"post":{"operationId":"list_group_bitlinks","summary":"List Bitlinks of a group, newest first, with search and filters; page with search_after from the answer's pagination. Us","description":"List Bitlinks of a group, newest first, with search and filters; page with search_after from the answer's pagination. Use for \"What Bitly links did my group create recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_guid":{"description":"Bitly group GUID, from list_groups (for example 'Ba1bc23dE4F').","maxLength":40,"title":"Group Guid","type":"string"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"},"search_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.search_after of the previous answer.","title":"Search After"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Keyword to search for in links.","title":"Query"},"archived":{"anyOf":[{"enum":["on","off","both"],"type":"string"},{"type":"null"}],"default":"off","description":"Include archived links: on, off (default) or both.","title":"Archived"},"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only links created after this Unix time (seconds).","title":"Created After"},"created_before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only links created before this Unix time (seconds).","title":"Created Before"}},"required":["group_guid"],"title":"list_group_bitlinksArguments","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_bitlink":{"post":{"operationId":"get_bitlink","summary":"Get one Bitlink: destination URL, title, tags, creation date and archive flag. Use for \"Where does bit.ly/1RmnUT point t","description":"Get one Bitlink: destination URL, title, tags, creation date and archive flag. Use for \"Where does bit.ly/1RmnUT point to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain of the Bitlink, for example 'bit.ly' or your branded domain.","maxLength":100,"title":"Domain","type":"string"},"hash":{"description":"Back-half (hash) of the Bitlink, for example '1RmnUT' in bit.ly/1RmnUT.","maxLength":100,"title":"Hash","type":"string"}},"required":["domain","hash"],"title":"get_bitlinkArguments","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_bitlink_clicks_summary":{"post":{"operationId":"get_bitlink_clicks_summary","summary":"Get the total clicks of a Bitlink over a time window. Use for \"How many clicks has bit.ly/1RmnUT had in total\".","description":"Get the total clicks of a Bitlink over a time window. Use for \"How many clicks has bit.ly/1RmnUT had in total\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain of the Bitlink, for example 'bit.ly' or your branded domain.","maxLength":100,"title":"Domain","type":"string"},"hash":{"description":"Back-half (hash) of the Bitlink, for example '1RmnUT' in bit.ly/1RmnUT.","maxLength":100,"title":"Hash","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":10000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units to cover; -1 (default) means all available.","title":"Units"}},"required":["domain","hash"],"title":"get_bitlink_clicks_summaryArguments","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_bitlink_clicks":{"post":{"operationId":"get_bitlink_clicks","summary":"Get clicks per time unit for a Bitlink, for example daily clicks over the last 30 days. Use for \"Show daily clicks of bi","description":"Get clicks per time unit for a Bitlink, for example daily clicks over the last 30 days. Use for \"Show daily clicks of bit.ly/1RmnUT for the last 30 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain of the Bitlink, for example 'bit.ly' or your branded domain.","maxLength":100,"title":"Domain","type":"string"},"hash":{"description":"Back-half (hash) of the Bitlink, for example '1RmnUT' in bit.ly/1RmnUT.","maxLength":100,"title":"Hash","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":10000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units to cover; -1 (default) means all available.","title":"Units"}},"required":["domain","hash"],"title":"get_bitlink_clicksArguments","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_bitlink_countries":{"post":{"operationId":"get_bitlink_countries","summary":"Get click counts of a Bitlink broken down by visitor country. Use for \"Which countries click bit.ly/1RmnUT the most\".","description":"Get click counts of a Bitlink broken down by visitor country. Use for \"Which countries click bit.ly/1RmnUT the most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain of the Bitlink, for example 'bit.ly' or your branded domain.","maxLength":100,"title":"Domain","type":"string"},"hash":{"description":"Back-half (hash) of the Bitlink, for example '1RmnUT' in bit.ly/1RmnUT.","maxLength":100,"title":"Hash","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":10000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units to cover; -1 (default) means all available.","title":"Units"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"}},"required":["domain","hash"],"title":"get_bitlink_countriesArguments","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_bitlink_referrers":{"post":{"operationId":"get_bitlink_referrers","summary":"Get click counts of a Bitlink broken down by referrer. Use for \"Where do the clicks on bit.ly/1RmnUT come from\".","description":"Get click counts of a Bitlink broken down by referrer. Use for \"Where do the clicks on bit.ly/1RmnUT come from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain of the Bitlink, for example 'bit.ly' or your branded domain.","maxLength":100,"title":"Domain","type":"string"},"hash":{"description":"Back-half (hash) of the Bitlink, for example '1RmnUT' in bit.ly/1RmnUT.","maxLength":100,"title":"Hash","type":"string"},"unit":{"anyOf":[{"enum":["minute","hour","day","week","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Time unit: minute, hour, day (default), week or month.","title":"Unit"},"units":{"anyOf":[{"maximum":10000,"minimum":-1,"type":"integer"},{"type":"null"}],"default":-1,"description":"How many time units to cover; -1 (default) means all available.","title":"Units"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many rows to return (default 50).","title":"Size"}},"required":["domain","hash"],"title":"get_bitlink_referrersArguments","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_group_tags":{"post":{"operationId":"list_group_tags","summary":"List the tags used on a group's Bitlinks (or QR codes). Use for \"Which tags do I use on Bitly links\".","description":"List the tags used on a group's Bitlinks (or QR codes). Use for \"Which tags do I use on Bitly links\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_guid":{"description":"Bitly group GUID, from list_groups (for example 'Ba1bc23dE4F').","maxLength":40,"title":"Group Guid","type":"string"},"type":{"anyOf":[{"enum":["bitlink","qr_code"],"type":"string"},{"type":"null"}],"default":"bitlink","description":"Tag set: bitlink (default) or qr_code.","title":"Type"}},"required":["group_guid"],"title":"list_group_tagsArguments","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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List Bitly campaigns, optionally of one group. Use for \"Which Bitly campaigns do I have\".","description":"List Bitly campaigns, optionally of one group. Use for \"Which Bitly campaigns do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_guid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns of this group GUID.","title":"Group Guid"}},"title":"list_campaignsArguments","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}}}}