Bem

Bem Subscriptions API

Subscriptions wire up notifications for the events your functions and collections produce. Most subscriptions target a single function (by `functionName` or `functionID`) or a single collection (by `collectionName` or `collectionID`) and select a `type` corresponding to the event you want to receive — for example `transform`, `route`, `join`, `evaluation`, `error`, `enrich`, or `collection_processing`. Entity-lifecycle events are account-wide and target no function or collection. Set `type` to one of the following and provide a `webhookURL` (these event types support webhook delivery only): - `entity_proposed` — an entity entered the `proposed` curation status (queued for review). - `entity_validated` — an entity was approved/validated by a reviewer. - `entity_rejected` — an entity was rejected by a reviewer. Each entity-lifecycle delivery is a JSON POST describing the transition (`entityID`, `typeName`, `priorStatus`, `newStatus`, optional `actorUserID` and `reason`, and a `timestamp`). Deliveries can be sent to any combination of: - `webhookURL` — HTTPS endpoint that receives a JSON POST per event. - `s3Bucket` + `s3FilePath` — sync output JSON into an AWS S3 prefix you own. - `googleDriveFolderID` — drop output JSON into a Google Drive folder. Use `disabled: true` to pause delivery without deleting the subscription. Updates follow conventional PATCH semantics — only the fields you include are changed.

Operations 5

GET /v3/subscriptions List Subscriptions #
POST /v3/subscriptions Create a Subscription #
DELETE /v3/subscriptions/{subscriptionID} Delete a Subscription #
GET /v3/subscriptions/{subscriptionID} Get a Subscription #
PATCH /v3/subscriptions/{subscriptionID} Update a Subscription #

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/bem-subscriptions-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 email required.

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

OpenAPI Specification

bem-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bem Subscriptions API
  version: 1.0.0
  description: 'Subscriptions wire up notifications for the events your functions and collections produce.


    Most subscriptions target a single function (by `functionName` or `functionID`) or a single

    collection (by `collectionName` or `collectionID`) and select a `type` corresponding to the

    event you want to receive — for example `transform`, `route`, `join`, `evaluation`, `error`,

    `enrich`, or `collection_processing`.


    Entity-lifecycle events are account-wide and target no function or collection. Set `type` to

    one of the following and provide a `webhookURL` (these event types support webhook delivery

    only):


    - `entity_proposed` — an entity entered the `proposed` curation status (queued for review).

    - `entity_validated` — an entity was approved/validated by a reviewer.

    - `entity_rejected` — an entity was rejected by a reviewer.


    Each entity-lifecycle delivery is a JSON POST describing the transition (`entityID`,

    `typeName`, `priorStatus`, `newStatus`, optional `actorUserID` and `reason`, and a

    `timestamp`).


    Deliveries can be sent to any combination of:


    - `webhookURL` — HTTPS endpoint that receives a JSON POST per event.

    - `s3Bucket` + `s3FilePath` — sync output JSON into an AWS S3 prefix you own.

    - `googleDriveFolderID` — drop output JSON into a Google Drive folder.


    Use `disabled: true` to pause delivery without deleting the subscription. Updates follow

    conventional PATCH semantics — only the fields you include are changed.'
servers:
- url: https://api.bem.ai
  description: US Region API
  variables: {}
- url: https://api.eu1.bem.ai
  description: EU Region API
  variables: {}
security:
- API Key: []
tags:
- name: Subscriptions
  description: 'Subscriptions wire up notifications for the events your functions and collections produce.


    Most subscriptions target a single function (by `functionName` or `functionID`) or a single

    collection (by `collectionName` or `collectionID`) and select a `type` corresponding to the

    event you want to receive — for example `transform`, `route`, `join`, `evaluation`, `error`,

    `enrich`, or `collection_processing`.


    Entity-lifecycle events are account-wide and target no function or collection. Set `type` to

    one of the following and provide a `webhookURL` (these event types support webhook delivery

    only):


    - `entity_proposed` — an entity entered the `proposed` curation status (queued for review).

    - `entity_validated` — an entity was approved/validated by a reviewer.

    - `entity_rejected` — an entity was rejected by a reviewer.


    Each entity-lifecycle delivery is a JSON POST describing the transition (`entityID`,

    `typeName`, `priorStatus`, `newStatus`, optional `actorUserID` and `reason`, and a

    `timestamp`).


    Deliveries can be sent to any combination of:


    - `webhookURL` — HTTPS endpoint that receives a JSON POST per event.

    - `s3Bucket` + `s3FilePath` — sync output JSON into an AWS S3 prefix you own.

    - `googleDriveFolderID` — drop output JSON into a Google Drive folder.


    Use `disabled: true` to pause delivery without deleting the subscription. Updates follow

    conventional PATCH semantics — only the fields you include are changed.'
paths:
  /v3/subscriptions:
    get:
      operationId: v3-list-subscriptions
      summary: List Subscriptions
      parameters:
      - name: functionNames
        in: query
        required: false
        description: Filters to subscriptions linked to included array of function names.
        schema:
          type: array
          items:
            type: string
          minItems: 1
      - name: limit
        in: query
        required: false
        description: This specifies a limit on the number of objects to return, ranging between 1 and 100.
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      - name: sortOrder
        in: query
        required: false
        description: Specifies sorting behavior. The two options are `asc` and `desc` to sort ascending and descending respectively, with default sort being ascending. Paging works in both directions.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: startingAfter
        in: query
        required: false
        description: A cursor to use in pagination. `startingAfter` is a task ID that defines your place in the list. For example, if you make a list request and receive 50 objects, ending with `sub_2c9AXIj48cUYJtCuv1gsQtHGDzK`, your subsequent call can include `startingAfter=sub_2c9AXIj48cUYJtCuv1gsQtHGDzK` to fetch the next page of the list.
        schema:
          type: string
      - name: endingBefore
        in: query
        required: false
        description: A cursor to use in pagination. `endingBefore` is a task ID that defines your place in the list. For example, if you make a list request and receive 50 objects, starting with `sub_2c9AXIj48cUYJtCuv1gsQtHGDzK`, your subsequent call can include `endingBefore=sub_2c9AXIj48cUYJtCuv1gsQtHGDzK` to fetch the previous page of the list.
        schema:
          type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SubscriptionV3'
        '400':
          description: The server could not understand the request due to invalid syntax.
        '401':
          description: Access is unauthorized.
        '500':
          description: Server error
      tags:
      - Subscriptions
    post:
      operationId: v3-create-subscription
      summary: Create a Subscription
      description: Creates a new subscription to listen to transform or error events.
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionV3'
      tags:
      - Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubscriptionV3'
  /v3/subscriptions/{subscriptionID}:
    delete:
      operationId: v3-delete-subscription
      summary: Delete a Subscription
      description: Deletes an existing subscription.
      parameters:
      - name: subscriptionID
        in: path
        required: true
        description: ID of the subscription to delete
        schema:
          type: string
      responses:
        '200':
          description: The request has succeeded.
      tags:
      - Subscriptions
    get:
      operationId: v3-get-subscription
      summary: Get a Subscription
      parameters:
      - name: subscriptionID
        in: path
        required: true
        description: ID of the subscription to retrieve.
        schema:
          type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionV3'
      tags:
      - Subscriptions
    patch:
      operationId: v3-update-subscription
      summary: Update a Subscription
      description: Updates an existing subscription. Follow conventional PATCH behavior, so only included fields will be updated.
      parameters:
      - name: subscriptionID
        in: path
        required: true
        description: ID of the subscription to update
        schema:
          type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionV3'
      tags:
      - Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSubscriptionV3'
components:
  schemas:
    UpdateSubscriptionV3:
      type: object
      properties:
        name:
          type: string
          description: Name of subscription.
        type:
          type: string
          enum:
          - transform
          - analyze
          - route
          - join
          - split_collection
          - split_item
          - evaluation
          - error
          - payload_shaping
          - enrich
          - collection_processing
          description: Type of subscription.
        disabled:
          type: boolean
          description: Toggles whether subscription is active or not.
        functionName:
          type: string
          description: Unique name of function this subscription listens to.
        webhookURL:
          type: string
          description: URL bem will send webhook requests to.
        s3Bucket:
          type: string
          description: S3 bucket name for syncing output data to AWS S3.
        s3FilePath:
          type: string
          description: S3 file path for syncing output data to AWS S3.
        googleDriveFolderID:
          type: string
          description: Google Drive folder ID for syncing output data to Google Drive.
    CreateSubscriptionV3:
      type: object
      required:
      - name
      - type
      properties:
        name:
          type: string
          description: Name of subscription.
        type:
          type: string
          enum:
          - transform
          - analyze
          - route
          - join
          - split_collection
          - split_item
          - evaluation
          - error
          - payload_shaping
          - enrich
          - collection_processing
          description: Type of subscription.
        functionName:
          type: string
          description: Unique name of function this subscription listens to (required for function-based subscriptions).
        functionID:
          type: string
          description: Unique identifier of function this subscription listens to (alternative to functionName).
        collectionName:
          type: string
          description: Name of collection this subscription listens to (required for collection-based subscriptions).
        collectionID:
          type: string
          description: Unique identifier of collection this subscription listens to (alternative to collectionName).
        disabled:
          type: boolean
          description: Toggles whether subscription is active or not.
        webhookURL:
          type: string
          description: URL bem will send webhook requests to.
        s3Bucket:
          type: string
          description: S3 bucket name for syncing output data to AWS S3.
        s3FilePath:
          type: string
          description: S3 file path for syncing output data to AWS S3.
        googleDriveFolderID:
          type: string
          description: Google Drive folder ID for syncing output data to Google Drive.
    SubscriptionV3:
      type: object
      required:
      - name
      - subscriptionID
      - type
      properties:
        name:
          type: string
          description: Name of subscription.
        subscriptionID:
          type: string
          description: The unique identifier of the subscription.
        type:
          type: string
          enum:
          - transform
          - analyze
          - route
          - join
          - split_collection
          - split_item
          - evaluation
          - error
          - payload_shaping
          - enrich
          - collection_processing
          description: Type of subscription.
        functionID:
          type: string
          description: Unique identifier of function this subscription listens to.
        functionName:
          type: string
          description: Unique name of function this subscription listens to.
        collectionID:
          type: string
          description: Unique identifier of collection this subscription listens to.
        collectionName:
          type: string
          description: Name of collection this subscription listens to.
        disabled:
          type: boolean
          description: Toggles whether subscription is active or not.
        webhookURL:
          type: string
          description: URL bem will send webhook requests to.
        s3Bucket:
          type: string
          description: S3 bucket name for syncing output data to AWS S3.
        s3FilePath:
          type: string
          description: S3 file path for syncing output data to AWS S3.
        googleDriveFolderID:
          type: string
          description: Google Drive folder ID for syncing output data to Google Drive.
      title: Subscription
  securitySchemes:
    API_Key:
      type: apiKey
      in: header
      name: x-api-key
      description: Authenticate using API Key in request header