{"openapi":"3.1.0","info":{"title":"Bannerbear (BYOK) API","version":"0.1.0","description":"Bannerbear (BYOK) lets an AI assistant read your own Bannerbear data through the Bannerbear API with a key you supply (Bannerbear V5 API key (V2 keys do not work)). Read-only: 10 tools (get_account, list_image_templates, get_image_template, list_images, get_image, list_animations, list_assets, get_asset, list_batches, get_batch). 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-bannerbear.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bannerbear/docs"},"termsOfService":"https://connectorbay.com/byok-bannerbear/terms"},"servers":[{"url":"https://byok-bannerbear.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bannerbear/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_account":{"post":{"operationId":"get_account","summary":"Show the Bannerbear account: plan, workspace, monthly quota (max, used, remaining) and the scopes of the key. Use for \"H","description":"Show the Bannerbear account: plan, workspace, monthly quota (max, used, remaining) and the scopes of the key. Use for \"How much of my Bannerbear quota is left this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","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_image_templates":{"post":{"operationId":"list_image_templates","summary":"List the image templates in the Bannerbear workspace (name, size, tags, preview URL). The documentation does not show th","description":"List the image templates in the Bannerbear workspace (name, size, tags, preview URL). The documentation does not show the list envelope, so the answer is returned as the API sends it (cut to the first items). Use for \"What Bannerbear image templates do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 results per page by default).","title":"Page"}},"title":"list_image_templatesArguments","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_image_template":{"post":{"operationId":"get_image_template","summary":"Get one Bannerbear image template: name, description, tags, size, preview URL and write-access settings (the layer confi","description":"Get one Bannerbear image template: name, description, tags, size, preview URL and write-access settings (the layer config is left out). Use for \"Show details of this Bannerbear template\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uid":{"description":"Bannerbear image template UID (from the matching list tool), for example '6EZ9nQX0lzpWwqAgzB'.","maxLength":40,"title":"Uid","type":"string"}},"required":["uid"],"title":"get_image_templateArguments","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_images":{"post":{"operationId":"list_images","summary":"List images generated in the Bannerbear workspace with status and file URLs (no files are downloaded). The documentation","description":"List images generated in the Bannerbear workspace with status and file URLs (no files are downloaded). The documentation does not show the list envelope, so the answer is returned as the API sends it (cut to the first items). Use for \"What images has Bannerbear generated recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 results per page by default).","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100, default 25).","title":"Limit"}},"title":"list_imagesArguments","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_image":{"post":{"operationId":"get_image","summary":"Get one generated Bannerbear image: status (pending, completed, failed), template, file URLs and timestamps. Use for \"Is","description":"Get one generated Bannerbear image: status (pending, completed, failed), template, file URLs and timestamps. Use for \"Is this Bannerbear image finished and where is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uid":{"description":"Bannerbear image UID (from the matching list tool), for example '672PdQlVyD1ynEKGOL'.","maxLength":40,"title":"Uid","type":"string"}},"required":["uid"],"title":"get_imageArguments","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_animations":{"post":{"operationId":"list_animations","summary":"List animations (short MP4 or MOV clips) generated in the Bannerbear workspace with status and file URLs. The documentat","description":"List animations (short MP4 or MOV clips) generated in the Bannerbear workspace with status and file URLs. The documentation does not show the list envelope, so the answer is returned as the API sends it (cut to the first items). Use for \"What animations has Bannerbear generated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 results per page by default).","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100, default 25).","title":"Limit"}},"title":"list_animationsArguments","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_assets":{"post":{"operationId":"list_assets","summary":"List files uploaded to the Bannerbear workspace as assets with CDN URL, type and size. The documentation does not show t","description":"List files uploaded to the Bannerbear workspace as assets with CDN URL, type and size. The documentation does not show the list envelope, so the answer is returned as the API sends it (cut to the first items). Use for \"What assets are uploaded to my Bannerbear workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 results per page by default).","title":"Page"}},"title":"list_assetsArguments","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_asset":{"post":{"operationId":"get_asset","summary":"Get one Bannerbear asset: CDN URL, mime type, size and upload time. Use for \"Show details of this Bannerbear asset\".","description":"Get one Bannerbear asset: CDN URL, mime type, size and upload time. Use for \"Show details of this Bannerbear asset\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uid":{"description":"Bannerbear asset UID (from the matching list tool), for example 'a46YPx8Z65pwmKrdGE'.","maxLength":40,"title":"Uid","type":"string"}},"required":["uid"],"title":"get_assetArguments","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_batches":{"post":{"operationId":"list_batches","summary":"List image batches in the Bannerbear workspace with status and item counts. The documentation does not show the list env","description":"List image batches in the Bannerbear workspace with status and item counts. The documentation does not show the list envelope, so the answer is returned as the API sends it (cut to the first items). Use for \"Which Bannerbear batch jobs have run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (25 results per page by default).","title":"Page"}},"title":"list_batchesArguments","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":{"post":{"operationId":"get_batch","summary":"Get one Bannerbear batch: type, status, total and per-status counts, errors and timestamps. Use for \"Did this Bannerbear","description":"Get one Bannerbear batch: type, status, total and per-status counts, errors and timestamps. Use for \"Did this Bannerbear batch finish without errors\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uid":{"description":"Bannerbear batch UID (from the matching list tool), for example '8bKmPqR3xYwZ5nAJeL'.","maxLength":40,"title":"Uid","type":"string"}},"required":["uid"],"title":"get_batchArguments","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}}}}