BreadPay Webhook API

Self-service webhook subscription management — create, update and delete subscriptions with NONE, BASIC or static-bearer subscriber auth, list delivered events by status, replay failed events by id, fire a synthetic integration test event, and fetch the JWKs that verify the detached JWS signature on every delivery. Events are CloudEvents 1.0.2 over the HTTP binding. 9 operations.

Operations 9

GET /api/webhook/subscription List subscriptions #
POST /api/webhook/subscription Create a subscription #
GET /api/webhook/subscription/{name} Get a subscription #
PATCH /api/webhook/subscription/{name} Update a subscription #
DELETE /api/webhook/subscription/{name} Delete a subscription #
GET /api/webhook/subscription/{name}/event List events #
POST /api/webhook/subscription/{name}/integration-test-event Send a Subscription Integration Test Event #
POST /api/webhook/subscription/{name}/event/{id}/dispatch Replay an event #
GET /api/webhook/client/jwks List JWKs #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/webhook-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bread-webhook-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "title": "webhook",
    "description": "Provides support for managing webhook subscriber's events by allowing them to query, and ultimately replay past failed events.",
    "version": "2.0.0",
    "contact": {
      "email": "Core-Eng@breadfinancial.com"
    }
  },
  "servers": [
    {
      "url": "https://api-preview.platform.breadpayments.com/",
      "description": "Preview environment"
    },
    {
      "url": "https://api.platform.breadpayments.com/",
      "description": "Production environment"
    }
  ],
  "paths": {
    "/api/webhook/subscription": {
      "get": {
        "security": [
          {
            "bearerAuthWebhook": [
              "r:webhook.subscription"
            ]
          }
        ],
        "tags": [
          "Subscription Management"
        ],
        "summary": "List subscriptions",
        "description": "Allows a user to retrieve all subscriptions they have created and are current. Upon success, the list of subscriptions will be returned.",
        "operationId": "getAllSubscriptions",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "description": "The maximum number of records that will be returned in a result set.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 10
            },
            "example": 50
          },
          {
            "in": "query",
            "name": "offset",
            "description": "The number of records to skip before starting to collect the result set. Used in conjunction with limit query parameter for pagination support",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "A subscription search response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "contains list of subscription and pagination info",
                  "required": [
                    "subscriptions",
                    "keys",
                    "pagination"
                  ],
                  "properties": {
                    "subscriptions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "Object containing subscription data returned for successful requests",
                        "required": [
                          "name",
                          "subscriptionURL",
                          "eventSubscriptions"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Name of subscription",
                            "example": "SubscriptionEndpoint-dbef2daf-f94a-41f3-8d07-52eb17cc17b3"
                          },
                          "subscriptionURL": {
                            "type": "string",
                            "description": "Subscriber endpoint to call with event",
                            "example": "https://example.com/callback",
                            "format": "uri"
                          },
                          "eventSubscriptions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "description": "Events subscribed to by subscriber",
                              "example": "breadpayments.webhooks.my.super-rev1"
                            }
                          }
                        }
                      }
                    },
                    "keys": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "k": {
                            "type": "string",
                            "description": "base64 URL encoded key"
                          },
                          "kty": {
                            "type": "string",
                            "description": "key type"
                          },
                          "kid": {
                            "type": "string",
                            "description": "key id"
                          },
                          "use": {
                            "type": "string",
                            "description": "intended use"
                          },
                          "alg": {
                            "type": "string",
                            "description": "algorithm used to encode signature"
                          }
                        },
                        "required": [
                          "k",
                          "kty",
                          "kid",
                          "use",
                          "alg"
                        ]
                      }
                    },
                    "pagination": {
                      "type": "object",
                      "description": "pagination for response",
                      "required": [
                        "limit",
                        "offset",
                        "total"
                      ],
                      "properties": {
                        "limit": {
                          "type": "integer",
                          "description": "number or records to return",
                          "example": 10
                        },
                        "offset": {
                          "type": "integer",
                          "description": "first record to return",
                          "example": 10
                        },
                        "total": {
                          "type": "integer",
                          "description": "total records to be queried",
                          "example": 1500
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Default error response for any errors in the API",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Default error response for any errors in the API",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "bearerAuthWebhook": [
              "c:webhook.subscription"
            ]
          }
        ],
        "tags": [
          "Subscription Management"
        ],
        "summary": "Create a subscription",
        "description": "Allows a user to create a webhook subscription. Upon successful creation, the user will receive a 201 response with the subscription details.",
        "operationId": "createSubscription",
        "requestBody": {
          "description": "The subscription create request",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Object containing data to make a request to create a subscription",
                "required": [
                  "eventSubscriptions",
                  "subscriptionURL",
                  "name",
                  "auth"
                ],
                "properties": {
                  "eventSubscriptions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Events subscribed to by subscriber",
                      "example": "breadpayments.webhooks.my.super-rev1"
                    }
                  },
                  "subscriptionURL": {
                    "type": "string",
                    "description": "Subscriber endpoint to call with event",
                    "example": "https://example.com/callback",
                    "format": "uri"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of subscription",
                    "example": "SubscriptionEndpoint-dbef2daf-f94a-41f3-8d07-52eb17cc17b3"
                  },
                  "auth": {
                    "title": "Auth Union",
                    "allOf": [
                      {
                        "oneOf": [
                          {
                            "title": "Auth None",
                            "type": "object",
                            "description": "Represents sending of no Authorization header to the subscription endpoint",
                            "required": [
                              "authType"
                            ],
                            "properties": {
                              "authType": {
                                "type": "string",
                                "enum": [
                                  "NONE"
                                ]
                              }
                            }
                          },
                          {
                            "title": "Auth Basic",
                            "type": "object",
                            "description": "Represents sending of an Authorization header in format of https://www.ietf.org/rfc/rfc2617.txt. Will be sent in the format of \"Basic base64(username:password)\"  to the subscription endpoint",
                            "required": [
                              "authType",
                              "username",
                              "password"
                            ],
                            "properties": {
                              "authType": {
                                "type": "string",
                                "enum": [
                                  "BASIC"
                                ]
                              },
                              "username": {
                                "type": "string",
                                "description": "username to be sent in the Authorization header"
                              },
                              "password": {
                                "type": "string",
                                "description": "password to be sent in the Authorization header"
                              }
                            }
                          },
                          {
                            "title": "Auth Static Bearer Token",
                            "type": "object",
                            "description": "Represents sending of an Authorization header in format of https://www.ietf.org/rfc/rfc6750.txt. Will be sent in the format of \"Bearer token\"  to the subscription endpoint",
                            "required": [
                              "authType",
                              "token"
                            ],
                            "properties": {
                              "authType": {
                                "type": "string",
                                "enum": [
                                  "STATIC_BEARER_TOKEN"
                                ]
                              },
                              "token": {
                                "type": "string",
                                "description": "token to be sent in the Authorization header"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "required": [
                          "authType"
                        ],
                        "properties": {
                          "authType": {
                            "type": "string",
                            "enum": [
                              "NONE",
                              "BASIC",
                              "STATIC_BEARER_TOKEN"
                            ]
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "A subscription response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "description": "Object containing subscription data returned for successful requests",
                      "required": [
                        "name",
                        "subscriptionURL",
                        "eventSubscriptions"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of subscription",
                          "example": "SubscriptionEndpoint-dbef2daf-f94a-41f3-8d07-52eb17cc17b3"
                        },
                        "subscriptionURL": {
                          "type": "string",
                          "description": "Subscriber endpoint to call with event",
                          "example": "https://example.com/callback",
                          "format": "uri"
                        },
                        "eventSubscriptions": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "description": "Events subscribed to by subscriber",
                            "example": "breadpayments.webhooks.my.super-rev1"
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "description": "Object containing subscription data returned for successful requests",
                      "required": [
                        "eventSubscriptions",
                        "subscriptionURL",
                        "name",
                        "keys"
                      ],
                      "properties": {
                        "keys": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "k": {
                                "type": "string",
                                "description": "base64 URL encoded key"
                              },
                              "kty": {
                                "type": "string",
                                "description": "key type"
                              },
                              "kid": {
                                "type": "string",
                                "description": "key id"
                              },
                              "use": {
                                "type": "string",
                                "description": "intended use"
                              },
                              "alg": {
                                "type": "string",
                                "description": "algorithm used to encode signature"
                              }
                            },
                            "required": [
                              "k",
                              "kty",
                              "kid",
                              "use",
                              "alg"
                            ]
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Default error response for any errors in the API",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. Indicates that provided credentials is not valid",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Jwt is expired"
                }
              },
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                },
                "example": {
                  "code": 401,
                  "domain": "Auth",
                  "message": "Invalid authentication",
                  "reason": "Invalid_Authentication"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. Indicates that request cannot be authorized",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "RBAC: Access Denied"
                }
              },
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                },
                "example": {
                  "code": 403,
                  "domain": "Auth",
                  "message": "RBAC: Access Denied",
                  "reason": "Access_Denied"
                }
              }
            }
          },
          "500": {
            "description": "Default error response for any errors in the API",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "required": [
                        "code",
                        "domain",
                        "message"
                      ],
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "description": "The underlying http status code",
                          "format": "int32",
                          "example": 500
                        },
                        "message": {
                          "type": "string",
                          "description": "A simple message in english describing the error and can be returned to the consumer",
                          "example": "Age cannot be less than 18"
                        },
                        "domain": {
                          "type": "string",
                          "description": "The domain where the error is originating from as defined by the service",
                          "example": "Payments"
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
                          "example": {
                            "propertyName": "propertyName is required"
                          }
                        }
                      }
                    }
                  ],
                  "required": [
                    "code",
                    "domain",
                    "message",
                    "reason"
                  ],
                  "type": "object",
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
                      "example": "Reason_Code"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook/subscription/{name}": {
      "get": {
        "security": [
          {
            "bearerAuthWebhook": [
              "r:webhook.subscription"
            ]
          }
        ],
        "tags": [
          "Subscription Management"
        ],
        "summary": "Get a subscription",
        "description": "Allows a user to retrieve a subscription by supplying the subscription name. Upon success, the requested subscription information will be returned.",
        "operationId": "getSubscription",
        "parameters": [
          {
            "name": "name",
            "description": "Name of the subscription",
     

# --- truncated at 32 KB (257 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bread-financial/refs/heads/main/openapi/bread-webhook-openapi.json