EventSend API

EventSend API as documented publicly: 9 operations. Contract generated from the documentation by API Evangelist (2026-11-07); not the provider's own document.

GitHub OpenAPI

Operations 9

GET /api/events GET /api/events #
POST /api/events Reference for POST /api/events — fields, limits, levels, idempotency, rate limits, and every response code. #
POST /api/events/es_YOUR_TOKEN The path form POST https://eventsend.io/api/events/es_YOUR_TOKEN is the original form and stays supported indefinitely. #
POST /api/sources/{token} Events from a third‑party provider use a different endpoint: POST /api/sources/:token. #
POST /hooks/catch/{catchid}/abcdefg POST /hooks/catch/{catchId}/abcdefg #
POST /mcp POST https://eventsend.io/mcp #
POST /v1/log POST /v1/log #
POST /v2/enqueue POST /v2/enqueue #
POST /your-endpoint Verify that a webhook delivery really came from EventSend using HMAC‑SHA256 #

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/eventsend-io:eventsend-io-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

eventsend-io-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: EventSend API
  version: '2026-11-07'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-07: 9 operation(s) read from 9 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; EventSend has published no machine-readable contract that the
    pipeline could find. Engine: oss.'
  x-evidence-tiers:
    code-example: 4
    documentation: 5
    pages-with-code: 6
    pages-read: 9
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-07'
  x-generator: generate-contract-from-docs.py
  x-engine: oss
  x-sources:
  - https://eventsend.io/docs/api
  - https://eventsend.io/docs/quickstart
  - https://eventsend.io/alternatives/zapier
  - https://eventsend.io/docs/webhook-signatures
  - https://eventsend.io/docs/mcp
  - https://eventsend.io/docs/recipes/deploy-notifications
  - https://eventsend.io/docs/recipes/telegram-error-alerts
  - https://eventsend.io/alternatives/logsnag
  - https://eventsend.io/alternatives/pagerduty
paths:
  /api/events:
    get:
      operationId: get_api_events
      tags:
      - Api
      summary: GET /api/events
      x-source: https://eventsend.io/docs/quickstart
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiEventsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl, JavaScript, Python, Elixir, and Go. \n Tracking an event is a single HTTP POST to your route's URL. There is no SDK, no\
          \ client library, and\nnothing to install — if your language can make an HTTP request, it can track events. \n 1. Get your route token\
          \ \n In the dashboard, open Routes and create a route (or open an existing one). The route card shows\nits route token — a value starting\
          \ with es_ —"
    post:
      operationId: post_api_events
      tags:
      - Api
      summary: Reference for POST /api/events — fields, limits, levels, idempotency, rate limits, and every response code.
      description: One endpoint, one method, JSON in. Every accepted event is recorded in your event history and analytics, then routed by the
        topics you set up in the dashboard.
      x-source: https://eventsend.io/docs/api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiEventsRequest'
      responses:
        '202':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiEventsResponse'
      x-evidence:
        kind: documentation
  /api/events/es_YOUR_TOKEN:
    post:
      operationId: post_api_events_es_YOUR_TOKEN
      tags:
      - Api
      summary: The path form POST https://eventsend.io/api/events/es_YOUR_TOKEN is the original form and stays supported indefinitely.
      description: Same authorization, idempotency, quota, and response codes as the header form; token is supplied in the URL path.
      x-source: https://eventsend.io/docs/api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiEventsEsYourTokenRequest'
      responses:
        '202':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiEventsEsYourTokenResponse'
      x-evidence:
        kind: documentation
  /api/sources/{token}:
    post:
      operationId: post_api_sources_token
      tags:
      - Api
      summary: 'Events from a third‑party provider use a different endpoint: POST /api/sources/:token.'
      description: The token starts with src_. EventSend verifies the provider's signature over the raw request body before parsing.
      x-source: https://eventsend.io/docs/api
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiSourcesTokenResponse'
      x-evidence:
        kind: documentation
  /hooks/catch/{catchid}/abcdefg:
    post:
      operationId: post_hooks_catch_catchid_abcdefg
      tags:
      - Hooks
      summary: POST /hooks/catch/{catchId}/abcdefg
      x-source: https://eventsend.io/alternatives/zapier
      parameters:
      - name: catchid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostHooksCatchCatchidAbcdefgRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://hooks.zapier.com/hooks/catch/1234567/abcdefg/  -H \"Content-Type: application/json\"  -d '{\n \"type\"\
          : \"payment_failed\",\n \"customer\": \" [email protected] \",\n \"amount\": \"49.00\"\n }' \n after: EventSend"
  /mcp:
    post:
      operationId: post_mcp
      tags:
      - Mcp
      summary: POST https://eventsend.io/mcp
      description: The server speaks the MCP Streamable HTTP transport and answers every request with a plain JSON response. The request body
        is capped at 64 KB.
      x-source: https://eventsend.io/docs/mcp
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer token for authentication, e.g., mcp_YOUR_KEY
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        description: Must be application/json
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/log:
    post:
      operationId: post_v1_log
      tags:
      - Log
      summary: POST /v1/log
      x-source: https://eventsend.io/alternatives/logsnag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1LogRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.logsnag.com/v1/log  -H \"Authorization: Bearer $LOGSNAG_TOKEN\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"project\": \"my-saas\",\n \"channel\": \"payments\",\n \"event\": \"New Payment\",\n \"description\": \"$49 from [email protected]\
          \ \",\n \"icon\": \"\U0001F4B0\",\n \"notify\": true,\n \"user_id\": \"cus_9Xk2\",\n \"timestamp\": 1789000000,\n \"tags\": {\"plan\"\
          : \"pro\"}\n }' \n after: EventSend"
  /v2/enqueue:
    post:
      operationId: post_v2_enqueue
      tags:
      - Enqueue
      summary: POST /v2/enqueue
      x-source: https://eventsend.io/alternatives/pagerduty
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV2EnqueueRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://events.pagerduty.com/v2/enqueue  -H \"Content-Type: application/json\"  -d '{\n \"routing_key\": \"YOUR_INTEGRATION_KEY\"\
          ,\n \"event_action\": \"trigger\",\n \"dedup_key\": \"db-primary-disk\",\n \"payload\": {\n \"summary\": \"Disk 95% full on db-primary\"\
          ,\n \"source\": \"db-primary\",\n \"severity\": \"critical\",\n \"custom_details\": {\"free_gb\": 4}\n }\n }' \n after: EventSend"
  /your-endpoint:
    post:
      operationId: post_your_endpoint
      tags:
      - Your Endpoint
      summary: Verify that a webhook delivery really came from EventSend using HMAC‑SHA256
      description: EventSend sends webhook deliveries to your endpoint with a JSON body and signature headers. Respond with any 2xx after verification.
      x-source: https://eventsend.io/docs/webhook-signatures
      parameters:
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        description: Must be "application/json".
      - name: X-EventSend-Signature
        in: header
        required: true
        schema:
          type: string
        description: sha256= followed by a lowercase hex HMAC‑SHA256 digest of the timestamp and raw body.
      - name: X-EventSend-Timestamp
        in: header
        required: true
        schema:
          type: string
        description: Unix time in seconds when the delivery was signed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostYourEndpointRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    GetApiEventsResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
    PostApiEventsRequest:
      type: object
      properties:
        event:
          type: string
          description: The event name, 4–64 characters. Analytics count by it, search matches it, and topic patterns match against it.
        message:
          type: string
          description: Human‑readable text, 4–500 characters. It is searchable in your event history and is the body of the delivered message.
        payload:
          type: object
          description: Structured data, at most 4096 bytes once JSON‑encoded. Send {} if you have nothing to attach.
        level:
          type: string
          description: One of default, success, warning, error, critical. Defaults to default.
        icon:
          type: string
          description: An emoji or short string, 1–16 characters, shown next to the message.
        unique_key:
          type: string
          description: 4–128 characters. Makes the request idempotent.
        user_id:
          type: string
          description: 1–128 characters. Your own stable identifier for the customer this event is about.
        occurred_at:
          type: string
          description: ISO‑8601 timestamp of when the thing happened. Defaults to receipt time. Must be within allowed range.
      required:
      - event
      - message
      - payload
    PostApiEventsResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the request succeeded.
        message:
          type: string
          description: Human‑readable description of the result.
        error:
          type: string
          description: Error identifier when success is false.
        details:
          type: object
          description: Additional validation error details (present on 422).
    PostApiEventsEsYourTokenRequest:
      type: object
      properties:
        event:
          type: string
          description: The event name, 4–64 characters.
        message:
          type: string
          description: Human‑readable text, 4–500 characters.
        payload:
          type: object
          description: Structured data, at most 4096 bytes once JSON‑encoded.
        level:
          type: string
          description: One of default, success, warning, error, critical.
        icon:
          type: string
          description: An emoji or short string, 1–16 characters.
        unique_key:
          type: string
          description: 4–128 characters. Makes the request idempotent.
        user_id:
          type: string
          description: 1–128 characters. Your own stable identifier for the customer.
        occurred_at:
          type: string
          description: ISO‑8601 timestamp of when the thing happened.
      required:
      - event
      - message
      - payload
    PostApiEventsEsYourTokenResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the request succeeded.
        message:
          type: string
          description: Human‑readable description of the result.
        error:
          type: string
          description: Error identifier when success is false.
        details:
          type: object
          description: Additional validation error details (present on 422).
    PostApiSourcesTokenResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the request succeeded.
        error:
          type: string
          description: Error identifier when success is false (e.g., invalid signature, unknown token).
        message:
          type: string
          description: Human‑readable description of the result.
    PostHooksCatchCatchidAbcdefgRequest:
      type: object
      properties:
        type:
          type: string
        customer:
          type: string
        amount:
          type: string
    PostV1LogRequest:
      type: object
      properties:
        project:
          type: string
        channel:
          type: string
        event:
          type: string
        description:
          type: string
        icon:
          type: string
        notify:
          type: boolean
        user_id:
          type: string
        timestamp:
          type: integer
        tags:
          type: object
          properties:
            plan:
              type: string
    PostV2EnqueueRequest:
      type: object
      properties:
        routing_key:
          type: string
        event_action:
          type: string
        dedup_key:
          type: string
        payload:
          type: object
          properties:
            summary:
              type: string
            source:
              type: string
            severity:
              type: string
            custom_details:
              type: object
              properties:
                free_gb:
                  type: integer
    PostYourEndpointRequest:
      type: object
      properties:
        id:
          type: string
          description: The event's stable public identifier (e.g., "evt_AZO48DwqfB6fWitt1Mjhpw").
        event:
          type: string
          description: Name of the event (e.g., "user-signup").
        level:
          type: string
          description: Severity level of the event (e.g., "success").
        message:
          type: string
          description: Human‑readable description of the event.
        payload:
          type: object
          description: Arbitrary event‑specific data (e.g., {"user_id":123,"plan":"free"}).
        timestamp:
          type: string
          description: ISO‑8601 timestamp of the event (e.g., "2026-07-17T12:33:20.000000Z").
      required:
      - id
      - event
      - level
      - message
      - payload
      - timestamp
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Enqueue
- name: Hooks
- name: Log
- name: Mcp
- name: Your Endpoint