• Compare
  • Documentation
  • Pricing
  • Agents
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?
    • Core Concepts
    • Quickstart
    • 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
    • HubSpot
    • Intercom
    • Slack
    • Salesforce
    • Zoom

Session API Overview

Mint, refresh, list, and revoke embed sessions for workspace-scoped access.

Meshes embed sessions are created from the private management API and are always scoped to a single workspace.

Endpoints

  • POST /api/v1/sessions
  • POST /api/v1/sessions/:sessionId/refresh
  • GET /api/v1/sessions
  • DELETE /api/v1/sessions/:sessionId

Mint a session

POST /api/v1/sessions accepts:

  • workspace_id (required UUID)
  • role (member, admin, owner; default member)
  • external_user_id (optional string)
  • ttl_seconds (optional, 300-3600, default 1800)
  • launch_ttl_seconds (optional, 15-60, default 30)
  • launch_path (optional, must start with /workspace/, default /workspace/dashboard)
  • allowed_origins (optional array of up to 10 origin URLs; recommended for production)
  • scopes (optional array; current public scope is events.payload:read)

Typical fields most integrations use:

{
  "session_id": "sess_550e8400-e29b-41d4-a716-446655440000",
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "expires_at": "2026-03-15T12:00:00Z",
  "launch_url": "https://embed.meshes.io/workspace/dashboard?launch=...",
  "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
  "role": "admin"
}

Use launch_url directly in your iframe. Most integrations do not need to inspect any bootstrap token value separately.

Refresh a session

POST /api/v1/sessions/:sessionId/refresh returns a new access_token for the same logical session.

Important behavior:

  • the session_id stays the same
  • the response returns a new access_token
  • it does not return a new launch_url

Use refresh for already-mounted iframes. Use minting again when you need a new full bootstrap flow.

List sessions

GET /api/v1/sessions requires workspace_id and supports the same cursor pagination shape used by other Meshes list endpoints.

Query params:

  • workspace_id (required UUID)
  • status (optional: active or revoked)
  • cursor (optional)
  • limit (optional)

Revoke a session

DELETE /api/v1/sessions/:sessionId revokes the logical session. After revocation, later session-authenticated API requests fail.

Related docs

  • Launch URL and Iframe Bootstrap
  • Session Refresh Lifecycle
  • Session Roles and Scopes
  1. Endpoints
    1. Mint a session
    2. Refresh a session
    3. List sessions
    4. Revoke a session
    5. Related docs