• Use Cases
  • Pricing
  • Security
  • Docs
Sign InStart free

The outbound integration layer for SaaS products: emit once, then let Meshes handle routing, retries, fan-out, and delivery history.

  • Terms of Service
  • Privacy Policy
  • Acceptable Use Policy
  • Cookie Policy

© Copyright 2026 Meshes, Inc. All Rights Reserved.

  • Getting Started
    • What is Meshes?
    • Quickstart
    • Core Concepts
    • API Overview
  • AI Tools
    • Cursor Rules
    • MCP Server
    • LLMs Docs
  • API Documentation
    • API Reference
    • Authentication
    • Results
    • Rate Limiting
    • SDKs
    • Integrations & Rules
  • Events
    • Publishable Keys
    • Send Events
    • Bulk Event Ingestion
  • Embed & Sessions
    • Quickstart
    • Session API Overview
    • Launch URL and Iframe Bootstrap
    • Iframe Message Contract
    • Session Roles and Scopes
    • Workspace Pages Available in Embed
    • Session Refresh Lifecycle
    • Iframe Sizing and Resize Handling
    • OAuth and Connection Setup Behavior
    • Security Model
    • Troubleshooting
  • Integrations
    • ActiveCampaign
    • AWeber
    • Discord
    • HubSpot
    • Intercom
    • Mailchimp
    • MailerLite
    • Resend
    • Salesforce
    • SendGrid
    • Slack
    • Webhooks
    • Zoom

Send Events

Emit a single event into Meshes using either a publishable key (client-side) or a machine JWT (server-side).

Use this endpoint to emit a single event:

POST https://events.meshes.io/api/v1/events

You can authenticate with either:

  • X-Meshes-Publishable-Key (recommended for client-side), or
  • Authorization: Bearer <jwt> (server-side only)

Request

Headers (publishable key)

-H "X-Meshes-Publishable-Key: <WORKSPACE_PUBLISHABLE_KEY>"
-H "Content-Type: application/json"

Body

At minimum, send:

  • event (string): Your event name (e.g. contact.created)
  • payload (object): Event data (arbitrary JSON)

Optional fields:

  • resource (string)
  • resource_id (string)
  • workspace (uuid) — typically inferred from the publishable key; include only if your usage requires it

Example: curl (publishable key)

curl -X POST https://events.meshes.io/api/v1/events \
  -H "X-Meshes-Publishable-Key: <WORKSPACE_PUBLISHABLE_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "contact.created",
    "payload": {
      "id": "lead_123",
      "email": "jane@example.com",
      "first_name": "Jane",
      "last_name": "Doe",
      "utm_source": "google-ads"
    }
  }'

Example: TypeScript (Meshes client)

import { MeshesEventsClient } from '@mesheshq/events';

const client = new MeshesEventsClient(process.env.WORKSPACE_PUBLISHABLE_KEY!);

await client.emit({
  event: 'contact.created',
  payload: {
    email: 'jane@example.com',
    first_name: 'Jane',
    last_name: 'Doe',
    utm_source: 'google-ads',
  },
});

Responses

  • 201 Created — event accepted and queued for processing
  • 400 Bad Request — invalid payload
  • 401 Unauthorized — missing/invalid key or token
  • 429 Too Many Requests — rate limit exceeded
  • 500 Internal Error
  1. Request
    1. Body
    2. Responses