BusinessMCP Events API

Server-side events, identify and group.

Operations 3

POST /track Send server-side events (goals and revenue) #
POST /identify Link your product user id or email to a CRM contact #
POST /group Upsert an account and link contacts to it #

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/businessmcp-com:businessmcp-com-events-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

businessmcp-com-events-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: BusinessMCP Events API
  version: 3.0.0
  description: 'The BI REST API: read your contacts, accounts and analytics sessions, send server-side events, export CSV, and drive the AI business analyst. Authenticate with a workspace key as `Authorization: Bearer mcph_...` (create one in Settings → API & access, or through the headless signup). Every key runs under its access policy; fields outside its data classes come back redacted. The same data and the full tool set are on the MCP endpoint.'
  contact:
    url: https://businessmcp.com/contact
servers:
- url: https://businessmcp.com/api/v1
security:
- bearer: []
tags:
- name: Events API
  description: Server-side events, identify and group.
paths:
  /track:
    post:
      operationId: trackEvents
      summary: Send server-side events (goals and revenue)
      description: 'Up to 500 events and 1 MB per call, as {events:[…]}, a bare array, one event object, or NDJSON. Timestamps are ISO 8601, at most 30 days back and 5 minutes ahead. Events count toward the monthly meter and are never dropped for quota. Rate limits: 600 requests/minute per key and 3000/minute per workspace (events bucket, separate from reads).'
      tags:
      - Events API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                properties:
                  events:
                    type: array
                    maxItems: 500
                    items:
                      $ref: '#/components/schemas/TrackEvent'
                required:
                - events
              - type: array
                items:
                  $ref: '#/components/schemas/TrackEvent'
              - $ref: '#/components/schemas/TrackEvent'
            example:
              events:
              - name: signup
                user_id: u_123
          application/x-ndjson:
            schema:
              type: string
              description: One TrackEvent JSON object per line.
      responses:
        '200':
          description: At least one event accepted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    const: true
                  accepted:
                    type: integer
                  rejected:
                    type: array
                    items:
                      type: object
                      properties:
                        index:
                          type: integer
                        error:
                          type: string
                  events:
                    type: array
                    items:
                      type: object
                      properties:
                        index:
                          type: integer
                        name:
                          type: string
                        timestamp:
                          type: string
                        day:
                          type: string
        '400':
          description: Invalid body, or every event was rejected.
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '413':
          description: Body over 1 MB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '500':
          description: Storage failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
  /identify:
    post:
      operationId: identify
      summary: Link your product user id or email to a CRM contact
      description: 'Creates or updates the contact and merges traits. Disposable email domains are refused; your own teammates are skipped. Rate limits: 600 requests/minute per key and 3000/minute per workspace (events bucket, separate from reads).


        Requires the `crm_actions` data class on the key’s access policy.'
      tags:
      - Events API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: At least one of user_id or email. Max 16 KB.
              properties:
                user_id:
                  type: string
                email:
                  type: string
                  format: email
                visitor_id:
                  type: string
                traits:
                  type: object
                  maxProperties: 20
            example:
              user_id: u_123
              email: jane@acme.com
              traits:
                plan: pro
      responses:
        '200':
          description: Identified (or skipped as a teammate).
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    const: true
                  contact_id:
                    type: string
                  created:
                    type: boolean
                  skipped:
                    type: string
        '400':
          description: Invalid body or disposable email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '403':
          description: The key’s access policy does not include the required data class.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '413':
          description: Body over 16 KB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
  /group:
    post:
      operationId: group
      summary: Upsert an account and link contacts to it
      description: 'Upserts the account on your account_id and links the contacts behind user_ids. Rate limits: 600 requests/minute per key and 3000/minute per workspace (events bucket, separate from reads).


        Requires the `crm_actions` data class on the key’s access policy.'
      tags:
      - Events API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Max 64 KB.
              properties:
                account_id:
                  type: string
                name:
                  type: string
                domain:
                  type: string
                plan:
                  type: string
                mrr_cents:
                  type: integer
                  minimum: 0
                seats:
                  type: integer
                  minimum: 0
                traits:
                  type: object
                  maxProperties: 20
                user_ids:
                  type: array
                  items:
                    type: string
              required:
              - account_id
            example:
              account_id: acct_42
              name: Acme
              domain: acme.com
              user_ids:
              - u_123
      responses:
        '200':
          description: Upserted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    const: true
                  account_id:
                    type: string
                  id:
                    type: string
                  created:
                    type: boolean
                  linked:
                    type: integer
                  unknown_user_ids:
                    type: array
                    items:
                      type: string
        '400':
          description: Invalid body.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '403':
          description: The key’s access policy does not include the required data class.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '413':
          description: Body over 64 KB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '503':
          description: Accounts are not enabled on this workspace yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
components:
  schemas:
    SimpleError:
      type: object
      properties:
        ok:
          const: false
        error:
          type: string
        detail:
          type: string
      required:
      - error
    TrackEvent:
      type: object
      properties:
        name:
          type: string
          description: Goal name, normalized to [a-z0-9_:-].
        user_id:
          type: string
        visitor_id:
          type: string
        timestamp:
          type: string
          format: date-time
        properties:
          type: object
          maxProperties: 20
        revenue_cents:
          type: integer
          minimum: 0
          description: Makes it a revenue event.
      required:
      - name
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: A BusinessMCP workspace key (mcph_…).
externalDocs:
  description: API reference
  url: https://businessmcp.com/docs/api