Search docs ⌘K
esc
Type to search across all documentation pages

Route Catalog

Every documented SaaSignal route is listed here, including meta endpoints, MCP, public tracking pages, and signed storage handlers. Use this page to scan the full surface area quickly, then jump into the topic pages for deeper examples or into the dashboard API Console to run requests from the browser.

Surface
Best entry point
Notes
Meta
Health, OpenAPI, AI docs, robots, sitemap, OAuth metadata, and MCP transport
Core
Organizations, projects, keys, billing, browser tokens
Infra
Browser-token and API-key friendly primitives
Logistics
Geospatial and routing primitives
Delivery
Private module routes plus public tracking pages
MCP
Route listed here, tools documented in the MCP guide

Core > Billing

Method
Path
Summary
Auth
POST
/core/billing/{org_id}/free-plan
Switch organization to free plan

Switch an organization to the free plan without checkout. This powers dashboard flows that only need the local state change and do not require a live Stripe completion. **Required scope:** `billing:write`

Session or core credential
GET
/core/billing/{org_id}/subscription
Get active subscription

Get the active subscription for an organization. **Required scope:** `billing:read`

Session or core credential
GET
/core/billing/{org_id}/usage
Get usage dashboard

Get usage dashboard data for an organization. **Required scope:** `billing:read`

Session or core credential
GET
/core/billing/packages
List subscription packages

List available subscription packages. **Required scope:** none (public)

Session or core credential

Core > Organizations

Method
Path
Summary
Auth
GET
/core/organizations
List organizations

List organizations the current user is a member of. **Required scope:** `orgs:read` (for OAuth tokens); portal tokens are trusted implicitly.

Session or core credential
POST
/core/organizations
Create an organization

Create a new organization and add the authenticated user as the owner. **Required scope:** `orgs:write` (for OAuth tokens); portal tokens are trusted implicitly.

Session or core credential
DELETE
/core/organizations/{org_id}
Delete an organization

Permanently delete an organization. **Required scope:** `*` (wildcard)

Session or core credential
GET
/core/organizations/{org_id}
Get an organization

Retrieve a single organization by ID. **Required scope:** `orgs:read`

Session or core credential
PATCH
/core/organizations/{org_id}
Update an organization

Update an organization's name and/or slug. **Required scope:** `orgs:write`

Session or core credential
GET
/core/organizations/{org_id}/members
List organization members

List all members of an organization with their scopes. **Required scope:** `orgs:read`

Session or core credential
DELETE
/core/organizations/{org_id}/members/{user_id}
Remove a member

Remove a member from the organization. **Required scope:** `orgs:write`

Session or core credential
PUT
/core/organizations/{org_id}/members/{user_id}/scopes
Update member scopes

Replace a member's scopes. Cannot modify owner scopes. **Required scope:** `orgs:write`

Session or core credential
POST
/core/organizations/{org_id}/members/invite
Invite a member

Send an email invitation to join the organization with specified scopes. **Required scope:** `orgs:write`

Session or core credential
GET
/core/organizations/{org_id}/my-scopes
Get current user's scopes

Returns the resolved scopes for the authenticated user in this organization. **Required scope:** `orgs:read`

Session or core credential

Core > Projects

Method
Path
Summary
Auth
GET
/core/organizations/{org_id}/projects
List projects

List all projects belonging to an organization. **Required scope:** `projects:read`

Session or core credential
POST
/core/organizations/{org_id}/projects
Create a project

Create a new project within an organization. **Required scope:** `projects:write`

Session or core credential
DELETE
/core/organizations/{org_id}/projects/{project_id}
Delete a project

Permanently delete a project and all associated data. **Required scope:** `projects:write`

Session or core credential
GET
/core/organizations/{org_id}/projects/{project_id}
Get a project

Retrieve a single project by ID. **Required scope:** `projects:read`

Session or core credential

Core > Tokens

Method
Path
Summary
Auth
GET
/core/organizations/{org_id}/tokens
List tokens

List all tokens (API keys) for an organization, optionally filtered by project. **Required scope:** `tokens:read`

Session or core credential
POST
/core/organizations/{org_id}/tokens
Create a token

Create a new scoped API key for an organization or a specific project. The raw `sk_live_…` secret is returned only once in the response. **Required scope:** `tokens:write`

Session or core credential
DELETE
/core/organizations/{org_id}/tokens/{token_id}
Revoke a token

Permanently revoke a token. Revoked tokens cannot be used for authentication. **Required scope:** `tokens:write`

Session or core credential
GET
/core/tokens/balance
Get token balance

Get the current included and top-up token balances for an organization. **Required scope:** `billing:read`

Session or core credential
POST
/core/tokens/browser
Create browser token

Create a short-lived browser token (`bt_*`) by exchanging an API key (`sk_live_*`) or OAuth JWT. The browser token is a stateless JWT that can be used directly from browser JavaScript. Requested scopes are intersected with the parent key's scopes. **Required scope:** inherits from the parent credential. **Required auth:** API key (`sk_live_*`) or OAuth JWT

Session or core credential
GET
/core/tokens/topup-bundles
List top-up bundles

List available top-up token bundles. **Required scope:** none (public)

Session or core credential
GET
/core/tokens/usage
Get token usage analytics

Get time-series token usage analytics with configurable granularity (hour, day, or month). **Required scope:** `billing:read`

Session or core credential

Infra > AI

Method
Path
Summary
Auth
POST
/infra/ai/audio/speech
Synthesize speech

Generate speech audio from text. Small payloads can return inline audio; larger or async outputs can be written to Storage. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/audio/transcriptions
Transcribe audio

Transcribe audio from multipart upload, storage reference, or base64 payloads. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/audio/translations
Translate audio

Translate audio from multipart upload, storage reference, or base64 payloads. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/documents/chunk
Chunk text or parsed blocks

Deterministically chunk raw text or parsed blocks into retrieval-ready slices. **Cost:** 0.0000015 tokens. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/documents/parse
Parse a document into normalized blocks

Parse supported text and image documents into normalized layout-aware blocks. Supports multipart upload, Storage references, and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/embeddings
Create embeddings

Generate embedding vectors. Embeddings are returned only; SaaSignal does not auto-index text in v1. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/images/edits
Edit an image

Edit an existing image using a prompt plus the source asset. Supports base64 or Storage references and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/images/generations
Generate images

Generate images from prompts. Canonical routes can also write assets to Storage destinations. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/images/variations
Generate image variations

Vary an existing image using a prompt plus the source asset. Supports base64 or Storage references and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
GET
/infra/ai/models
List AI models

List AI models exposed by SaaSignal. Model IDs are normalized as `provider:model` strings. **Required scope:** `ai:read`

Browser token or API key
GET
/infra/ai/models/{model_id}
Get AI model

Get a single AI model definition. **Required scope:** `ai:read`

Browser token or API key
POST
/infra/ai/moderations
Create moderation classifications

Policy-neutral moderation and safety classification. No SaaSignal-hosted moderation profiles are persisted in v1. **Required scope:** `ai:generate`

Browser token or API key
GET
/infra/ai/operations/{operation_id}
Get async AI operation

Get the status and result metadata for an async AI operation. **Required scope:** `ai:read`

Browser token or API key
POST
/infra/ai/operations/{operation_id}/cancel
Cancel async AI operation

Cancel an async AI operation that has not yet completed. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/realtime/sessions
Create a realtime session bootstrap

Mint a short-lived SaaSignal-managed realtime session descriptor without exposing provider credentials. Returns a proxy URL when realtime support is configured. **Cost:** 0.0000010 tokens. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/rerank
Rerank candidate documents

Reorder caller-supplied candidates. This route does not perform retrieval by itself. **Required scope:** `ai:generate`

Browser token or API key
POST
/infra/ai/responses
Create an AI response

Canonical AI response route. Accepts text and multimodal message content where the selected model supports it. Supports sync JSON, SSE streaming, and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/audio/speech
Synthesize speech

Generate speech audio from text. Small payloads can return inline audio; larger or async outputs can be written to Storage. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/audio/transcriptions
Transcribe audio

Transcribe audio from multipart upload, storage reference, or base64 payloads. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/audio/translations
Translate audio

Translate audio from multipart upload, storage reference, or base64 payloads. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/chat/completions
Create a chat completion

OpenAI-compatible chat-completions alias that resolves through the same AI response service layer and billing path as `/infra/ai/responses`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/embeddings
Create embeddings

Generate embedding vectors. Embeddings are returned only; SaaSignal does not auto-index text in v1. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/images/edits
Edit an image

Edit an existing image using a prompt plus the source asset. Supports base64 or Storage references and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/images/generations
Generate images

Generate images from prompts. Canonical routes can also write assets to Storage destinations. Supports `async: true`. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/images/variations
Generate image variations

Vary an existing image using a prompt plus the source asset. Supports base64 or Storage references and `async: true`. **Required scope:** `ai:generate`

Browser token or API key
GET
/v1/models
List AI models

List AI models exposed by SaaSignal. Model IDs are normalized as `provider:model` strings. **Required scope:** `ai:read`

Browser token or API key
GET
/v1/models/{model_id}
Get AI model

Get a single AI model definition. **Required scope:** `ai:read`

Browser token or API key
POST
/v1/moderations
Create moderation classifications

Policy-neutral moderation and safety classification. No SaaSignal-hosted moderation profiles are persisted in v1. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/realtime/sessions
Create a realtime session bootstrap

Mint a short-lived SaaSignal-managed realtime session descriptor without exposing provider credentials. Returns a proxy URL when realtime support is configured. **Cost:** 0.0000010 tokens. **Required scope:** `ai:generate`

Browser token or API key
POST
/v1/responses
Create an AI response

Canonical AI response route. Accepts text and multimodal message content where the selected model supports it. Supports sync JSON, SSE streaming, and `async: true`. **Required scope:** `ai:generate`

Browser token or API key

Infra > Channels

Method
Path
Summary
Auth
GET
/infra/channels/{channel}/history
Get channel message history

Retrieve message history for a channel. Use the `before` parameter for backward pagination. **Cost:** 0.0000008 tokens per request. **Required scope:** `channels:subscribe`

Browser token or API key
GET
/infra/channels/{channel}/presence
Get channel presence

Get currently connected clients. **Cost:** 0.0000008 tokens per request. **Required scope:** `channels:subscribe`

Browser token or API key
POST
/infra/channels/{channel}/publish
Publish an event to a channel

Publish a single event. **Cost:** 0.00000045 tokens per message. **Required scope:** `channels:publish`

Browser token or API key
GET
/infra/channels/{channel}/subscribe
Subscribe to a channel

Subscribe to real-time events via SSE or WebSocket upgrade. Connection billing is handled server-side per connection-minute. **Required scope:** `channels:subscribe`

Browser token or API key
POST
/infra/channels/publish
Batch publish events

Publish events to one or more channels (max 50 messages per request). **Cost:** 0.00000045 tokens per message. **Required scope:** `channels:publish`

Browser token or API key

Infra > Decisioning > Matching

Method
Path
Summary
Auth
POST
/infra/decisioning/matching/operations
Create a matching operation

Solve one constrained assignment problem, either synchronously or as a persisted async operation. **Required scope:** `matching:write`

Browser token or API key
GET
/infra/decisioning/matching/operations/{operation_id}
Get a matching operation

Get the status and result of an async matching operation. **Required scope:** `matching:read`

Browser token or API key
POST
/infra/decisioning/matching/operations/{operation_id}/cancel
Cancel a matching operation

Cancel an in-flight matching operation if it has not completed yet. **Required scope:** `matching:write`

Browser token or API key
POST
/infra/decisioning/matching/operations/batch
Create a batch matching operation

Solve multiple matching problems in one request, either synchronously or as a persisted async batch operation. **Required scope:** `matching:write`

Browser token or API key
GET
/infra/decisioning/matching/templates
List matching templates

List saved matching templates for the active project. **Required scope:** `matching:read`

Browser token or API key
POST
/infra/decisioning/matching/templates
Create a matching template

Persist a reusable matching problem template for later operation creation. **Required scope:** `matching:write`

Browser token or API key
DELETE
/infra/decisioning/matching/templates/{template_id}
Delete a matching template

Delete a saved matching template. **Required scope:** `matching:write`

Browser token or API key
GET
/infra/decisioning/matching/templates/{template_id}
Get a matching template

Get one saved matching template. **Required scope:** `matching:read`

Browser token or API key
PATCH
/infra/decisioning/matching/templates/{template_id}
Update a matching template

Update mutable matching template fields. **Required scope:** `matching:write`

Browser token or API key
POST
/infra/decisioning/matching/templates/{template_id}/operations
Create a template-backed matching operation

Solve a saved matching template with optional overrides, either synchronously or as a persisted async operation. **Required scope:** `matching:write`

Browser token or API key

Infra > Decisioning > Ranking

Method
Path
Summary
Auth
GET
/infra/decisioning/ranking/collections
List ranking collections

List ranking collections for the active project. **Required scope:** `ranking:read`

Browser token or API key
POST
/infra/decisioning/ranking/collections
Create a ranking collection

Create a caller-owned collection for ranking and recommendation primitives. **Required scope:** `ranking:write`

Browser token or API key
DELETE
/infra/decisioning/ranking/collections/{collection_id}
Delete a ranking collection

Delete a ranking collection and its stored items and signals. **Required scope:** `ranking:write`

Browser token or API key
GET
/infra/decisioning/ranking/collections/{collection_id}
Get a ranking collection

Get one ranking collection definition. **Required scope:** `ranking:read`

Browser token or API key
PATCH
/infra/decisioning/ranking/collections/{collection_id}
Update a ranking collection

Update mutable ranking collection fields. **Required scope:** `ranking:write`

Browser token or API key
GET
/infra/decisioning/ranking/collections/{collection_id}/items
List ranking items

List caller-owned items stored in a ranking collection. **Required scope:** `ranking:read`

Browser token or API key
DELETE
/infra/decisioning/ranking/collections/{collection_id}/items/{item_id}
Delete a ranking item

Delete one item from a ranking collection. **Required scope:** `ranking:write`

Browser token or API key
GET
/infra/decisioning/ranking/collections/{collection_id}/items/{item_id}
Get a ranking item

Get one caller-owned item stored in a ranking collection. **Required scope:** `ranking:read`

Browser token or API key
POST
/infra/decisioning/ranking/collections/{collection_id}/items/upsert
Upsert ranking items

Upsert caller-owned items into a ranking collection, with optional auto-embedding from item text. **Required scope:** `ranking:write`

Browser token or API key
POST
/infra/decisioning/ranking/collections/{collection_id}/rank
Rank collection items

Rank caller-owned candidate items for one subject using behavioral, semantic, or hybrid strategy. **Required scope:** `ranking:read`

Browser token or API key
POST
/infra/decisioning/ranking/collections/{collection_id}/related
Find related collection items

Rank items related to one anchor item using behavioral, semantic, or hybrid strategy. **Required scope:** `ranking:read`

Browser token or API key
POST
/infra/decisioning/ranking/collections/{collection_id}/signals/batch
Ingest ranking signals

Record caller-owned subject-item signals for ranking and related-item queries. **Required scope:** `ranking:write`

Browser token or API key
GET
/infra/decisioning/ranking/collections/{collection_id}/stats
Get ranking collection stats

Get counts for items, signals, and unique subjects in a ranking collection. **Required scope:** `ranking:read`

Browser token or API key

Infra > Jobs

Method
Path
Summary
Auth
GET
/infra/jobs
List jobs

List jobs with optional status, trigger type, and queue filters. Supports cursor-based pagination. Max 500 results per page. **Required scope:** `jobs:read`

Browser token or API key
POST
/infra/jobs
Create a job

Create a job. Payload max 256 KB, name max 256 chars, queue max 128 chars, handler/callback_url must be HTTPS public URLs, max_attempts 1-20, timeout 1-30s, priority 1-10. **Cost:** 0.0000018 tokens. **Required scope:** `jobs:write`

Browser token or API key
DELETE
/infra/jobs/{job_id}
Cancel a job

Cancel a pending or scheduled job. Running jobs cannot be cancelled. **Required scope:** `jobs:write`

Browser token or API key
GET
/infra/jobs/{job_id}
Get a job

Retrieve a single job by ID, including its current status, trigger, and payload. **Required scope:** `jobs:read`

Browser token or API key
PATCH
/infra/jobs/{job_id}
Update a job

Update a job's handler, payload, enabled state, or trigger schedule. Only pending or scheduled jobs can be updated. **Required scope:** `jobs:write`

Browser token or API key
POST
/infra/jobs/{job_id}/ack
Acknowledge a claimed job

Acknowledge a claimed job as completed or failed. Only the token that claimed the job can acknowledge it. **Required scope:** `jobs:write`

Browser token or API key
POST
/infra/jobs/{job_id}/retry
Retry a failed job

Retry a failed or dead job. Resets the job to pending and re-enqueues it. **Required scope:** `jobs:write`

Browser token or API key
GET
/infra/jobs/{job_id}/runs
List job runs

List execution runs for a job with cursor-based pagination. Max 500 results per page. **Required scope:** `jobs:read`

Browser token or API key
POST
/infra/jobs/{job_id}/trigger
Manually trigger a scheduled job

Manually trigger a scheduled job to run now. **Cost:** 0.0000018 tokens per execution. **Required scope:** `jobs:write`

Browser token or API key
POST
/infra/jobs/batch
Batch create jobs

Create up to 100 jobs. **Cost:** 0.0000018 tokens per job. **Required scope:** `jobs:write`

Browser token or API key
POST
/infra/jobs/claim
Claim a pull job

Claim up to 10 jobs from a pull queue. Claimed jobs are invisible to other consumers for the visibility timeout period (1-3600 seconds, default 30). **Required scope:** `jobs:write`

Browser token or API key

Infra > KV

Method
Path
Summary
Auth
GET
/infra/kv
Scan keys by prefix

List keys matching an optional prefix. **Cost:** 0.0000008 tokens. **Required scope:** `kv:read`

Browser token or API key
POST
/infra/kv
Execute batch operations

Execute up to 100 get, set, and/or delete operations in a single request. **Required scope:** `kv:write`

Browser token or API key
DELETE
/infra/kv/{key}
Delete a key

Remove a key and its value. **Cost:** 0.0000053 tokens per delete. **Required scope:** `kv:write`

Browser token or API key
GET
/infra/kv/{key}
Get a value by key

Retrieve the value and metadata for a single key. **Cost:** 0.0000008 tokens per read. **Required scope:** `kv:read`

Browser token or API key
PUT
/infra/kv/{key}
Set a key-value pair

Create or overwrite a key-value pair. Key max 512 chars; value max 256 KB serialized. **Cost:** 0.0000053 tokens per write. **Required scope:** `kv:write`

Browser token or API key
POST
/infra/kv/{key}/increment
Atomically increment a numeric value

Increment (or decrement) a numeric value. **Cost:** 0.0000053 tokens. **Required scope:** `kv:write`

Browser token or API key

Infra > Locks

Method
Path
Summary
Auth
GET
/infra/locks/{key}
Check lock status

Inspect whether a lock is currently held. **Cost:** 0.0000008 tokens. **Required scope:** `locks:read`

Browser token or API key
POST
/infra/locks/{key}/acquire
Acquire a lock

Acquire a distributed lock on an arbitrary key. Lock TTL must be between 1 and 60,000 ms. **Cost:** 0.0000053 tokens. **Required scope:** `locks:write`

Browser token or API key
POST
/infra/locks/{key}/release
Release a lock

Release a lock using the token returned during acquisition. **Cost:** 0.0000053 tokens. **Required scope:** `locks:write`

Browser token or API key
POST
/infra/locks/{key}/renew
Renew a lock

Extend a held lock's TTL. TTL must be between 1 and 60,000 ms. **Cost:** 0.0000053 tokens. **Required scope:** `locks:write`

Browser token or API key

Infra > Media

Method
Path
Summary
Auth
GET
/infra/media/assets
List media assets

List media assets for the project. **Cost:** 0.0000004 tokens. **Required scope:** `media:read`

Browser token or API key
POST
/infra/media/assets
Upload a media asset

Upload a new media asset. Send raw bytes with Content-Type, or JSON with `file_url` for server-side fetch. Images are uploaded to CF Images for transforms. Videos are uploaded to CF Stream for encoding. Max 100 MB. Cost varies with bytes, media type, and prepaid storage/delivery assumptions. **Required scope:** `media:write`

Browser token or API key
DELETE
/infra/media/assets/{assetId}
Delete a media asset

Delete a media asset, its R2 object, CF Images/Stream resource, and all variants. **Cost:** 0.0000004 tokens. **Required scope:** `media:write`

Browser token or API key
GET
/infra/media/assets/{assetId}
Get a media asset

Get details of a media asset. **Cost:** 0.0000004 tokens. **Required scope:** `media:read`

Browser token or API key
POST
/infra/media/assets/{assetId}/transform/image
Generate a transformed image URL

Generate a CDN delivery URL with on-the-fly image transformations via CF Images. Cost includes a conservative prepaid allowance for future image deliveries. **Required scope:** `media:write`

Browser token or API key
POST
/infra/media/assets/{assetId}/transform/video
Start a video encoding job

Kick off asynchronous video encoding via CF Stream. The asset status changes to 'processing'. Cost varies with video duration and a conservative prepaid allowance for future delivery minutes. **Required scope:** `media:write`

Browser token or API key
GET
/infra/media/assets/{assetId}/variants
List asset variants

List all processed variants (transforms, encodes) for an asset. **Cost:** 0.0000004 tokens. **Required scope:** `media:read`

Browser token or API key

Infra > Sketches

Method
Path
Summary
Auth
GET
/infra/sketches/cms/{key}/estimate
Estimate Count-Min Sketch frequency

Estimate the frequency of a single item in a Count-Min Sketch. **Cost:** 0.0000008 tokens. **Required scope:** `sketches:read`

Browser token or API key
POST
/infra/sketches/cms/{key}/increment
Increment Count-Min Sketch frequencies

Increment one or more items inside a Count-Min Sketch. **Cost:** 0.0000053 tokens. **Required scope:** `sketches:write`

Browser token or API key
POST
/infra/sketches/hll/{key}/add
Add elements to a HyperLogLog

Add one or more elements to a HyperLogLog sketch for approximate unique counting. **Cost:** 0.0000053 tokens. **Required scope:** `sketches:write`

Browser token or API key
GET
/infra/sketches/hll/{key}/count
Estimate HyperLogLog count

Estimate the cardinality of a HyperLogLog sketch. **Cost:** 0.0000008 tokens. **Required scope:** `sketches:read`

Browser token or API key
POST
/infra/sketches/hll/merge
Merge HyperLogLogs

Merge multiple HyperLogLog sketches into a destination key. **Cost:** 0.0000053 tokens. **Required scope:** `sketches:write`

Browser token or API key

Infra > Storage

Method
Path
Summary
Auth
GET
/infra/storage/buckets
List buckets

List all storage buckets for the project. **Cost:** 0.0000004 tokens. **Required scope:** `storage:read`

Browser token or API key
POST
/infra/storage/buckets
Create a bucket

Create a new storage bucket for the project. **Cost:** 0.0000044 tokens. **Required scope:** `storage:write`

Browser token or API key
DELETE
/infra/storage/buckets/{bucketId}
Delete a bucket

Delete a bucket and every object under it. Cost is conservatively prepaid for up to 10,000 objects, then refunded down to the actual delete/list work performed. **Required scope:** `storage:write`

Browser token or API key
GET
/infra/storage/buckets/{bucketId}
Get a bucket

Get details of a storage bucket. **Cost:** 0.0000004 tokens. **Required scope:** `storage:read`

Browser token or API key
GET
/infra/storage/buckets/{bucketId}/objects
List objects

List objects in a bucket. **Cost:** 0.0000004 tokens. **Required scope:** `storage:read`

Browser token or API key
DELETE
/infra/storage/buckets/{bucketId}/objects/*
Delete an object

Delete an object by key. **Cost:** 0.0000004 tokens. **Required scope:** `storage:write`

Browser token or API key
GET
/infra/storage/buckets/{bucketId}/objects/*
Download an object

Download an object by key. Returns raw bytes with appropriate Content-Type. **Cost:** 0.0000004 tokens. **Required scope:** `storage:read`

Browser token or API key
HEAD
/infra/storage/buckets/{bucketId}/objects/*
Get object metadata

Get metadata for an object without downloading the body. **Cost:** 0.0000004 tokens. **Required scope:** `storage:read`

Browser token or API key
PUT
/infra/storage/buckets/{bucketId}/objects/*
Upload an object

Upload or overwrite an object. Send raw bytes with appropriate Content-Type. Max 100 MB. Cost varies with stored bytes and prepaid retention. **Required scope:** `storage:write`

Browser token or API key
POST
/infra/storage/buckets/{bucketId}/signed-url
Generate a signed URL

Generate a time-limited signed URL for direct upload or download. The signed URL creation call is billed separately from the eventual upload/download it authorizes. **Required scope:** `storage:write`

Browser token or API key
GET
/infra/storage/signed/{token}
Consume a signed download URL

Download an object using a previously issued signed URL token. This route is intentionally public and authenticated entirely by the signed URL path token and query signature. Required query parameters are embedded in the signed URL returned by `POST /infra/storage/buckets/:bucketId/signed-url`.

Public
PUT
/infra/storage/signed/{token}
Consume a signed upload URL

Upload an object using a previously issued signed URL token. Send raw bytes in the request body and optionally pass `ct` as a query parameter to lock the content type. This route is intentionally public and authenticated entirely by the signed URL path token and query signature.

Public

Infra > Webhooks

Method
Path
Summary
Auth
GET
/infra/webhooks
List webhooks

List all webhooks for the project. **Cost:** 0.0000008 tokens. **Required scope:** `webhooks:read`

Browser token or API key
POST
/infra/webhooks
Create a webhook

Register a webhook subscription for event topics. Topics: `kv.set`, `kv.delete`, `channels.published`, `jobs.completed`, `jobs.failed`, `jobs.dead`, `logistics.*` (geo/geofence/tracking events), or `*` for all. Supports prefix wildcards (e.g. `jobs.*`). **Required scope:** `webhooks:write`

Browser token or API key
DELETE
/infra/webhooks/{webhook_id}
Delete a webhook

Permanently delete a webhook and its delivery history. **Cost:** 0.0000053 tokens. **Required scope:** `webhooks:write`

Browser token or API key
GET
/infra/webhooks/{webhook_id}
Get a webhook

Retrieve a single webhook with delivery stats. **Cost:** 0.0000008 tokens. **Required scope:** `webhooks:read`

Browser token or API key
PATCH
/infra/webhooks/{webhook_id}
Update a webhook

Update webhook fields. **Cost:** 0.0000053 tokens. **Required scope:** `webhooks:write`

Browser token or API key
GET
/infra/webhooks/{webhook_id}/deliveries
List webhook deliveries

Paginated delivery log for a webhook. **Cost:** 0.0000008 tokens. **Required scope:** `webhooks:read`

Browser token or API key
POST
/infra/webhooks/{webhook_id}/deliveries/{delivery_id}/retry
Retry a webhook delivery

Re-dispatch a failed webhook delivery. **Cost:** 0.0000053 tokens. **Required scope:** `webhooks:write`

Browser token or API key
POST
/infra/webhooks/{webhook_id}/test
Test a webhook

Send a test ping to the webhook URL and return the response status. **Cost:** 0.0000053 tokens. **Required scope:** `webhooks:write`

Browser token or API key
POST
/infra/webhooks/publish
Publish a custom event

Publish a custom event to trigger matching webhooks. Topics must start with `custom.` (e.g. `custom.order.created`). Payload `data` is capped at 64 KB. Base publish cost is charged up front; each downstream delivery attempt is billed separately and varies slightly with payload size. **Required scope:** `webhooks:publish`

Browser token or API key

Infra > Workflows

Method
Path
Summary
Auth
GET
/infra/workflows/blueprints
List workflow blueprints

List workflow blueprints for the current project. **Cost:** 0.0000008 tokens. **Required scope:** `workflows:read`

Browser token or API key
POST
/infra/workflows/blueprints
Create a workflow blueprint

Define a workflow DAG on top of Infra Jobs. `payload_template` supports `{{input.*}}`, `{{steps.<id>.output}}`, `{{execution.id}}`, and `{{failure.*}}` placeholders. Workflow steps may use immediate, delayed, queue, or pull jobs. **Cost:** 0.0000053 tokens. **Required scope:** `workflows:write`

Browser token or API key
POST
/infra/workflows/blueprints/{blueprint_id}/trigger
Trigger a workflow execution

Instantiate a blueprint into a live workflow execution and queue every eligible starting step. **Cost:** 0.0000053 tokens plus standard job-creation charges for each scheduled step. **Required scope:** `workflows:write`

Browser token or API key
GET
/infra/workflows/executions/{execution_id}
Get workflow execution status

Retrieve workflow execution status, step state, and accumulated outputs. **Cost:** 0.0000008 tokens. **Required scope:** `workflows:read`

Browser token or API key
POST
/infra/workflows/executions/{execution_id}/cancel
Cancel a workflow execution

Stop queuing any additional workflow steps. Already running jobs are allowed to finish. **Cost:** 0.0000053 tokens. **Required scope:** `workflows:write`

Browser token or API key
POST
/infra/workflows/executions/{execution_id}/resume
Resume a workflow execution

Resume a paused, failed, or cancelled workflow. Provide `step_id` to retry a failed step, and optionally `override_output` to mark that step complete with supplied data instead of re-running it. **Cost:** 0.0000053 tokens plus standard job-creation charges for any re-queued steps. **Required scope:** `workflows:write`

Browser token or API key

Logistics > ETA Fencing

Method
Path
Summary
Auth
GET
/logistics/geo/eta-fences
List ETA fences

List all ETA fences for the project. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/geo/eta-fences
Create an ETA fence

Define a destination point and time threshold. When a tracked entity's driving ETA drops below the threshold, a `logistics.eta_fence.breach` webhook fires. **Cost:** 0.0000053 tokens. **Required scope:** `logistics:write`

Browser token or API key
DELETE
/logistics/geo/eta-fences/{fence_id}
Delete an ETA fence

Permanently removes an ETA fence. **Required scope:** `logistics:admin`

Browser token or API key
GET
/logistics/geo/eta-fences/{fence_id}
Get an ETA fence

Retrieve a single ETA fence. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key

Logistics > Geo

Method
Path
Summary
Auth
GET
/logistics/geo/entities
List geo entities

List all geo entities for the project. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/geo/entities
Create a geo entity

Register a trackable entity (driver, vehicle, asset, etc.). **Cost:** 0.0000053 tokens. **Required scope:** `logistics:write`

Browser token or API key
DELETE
/logistics/geo/entities/{entity_id}
Deactivate a geo entity

Soft-delete an entity by setting status to deactivated. **Required scope:** `logistics:admin`

Browser token or API key
GET
/logistics/geo/entities/{entity_id}
Get a geo entity

Retrieve a single entity with cached position. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key
PATCH
/logistics/geo/entities/{entity_id}
Update a geo entity

Update entity fields. **Cost:** 0.0000053 tokens. **Required scope:** `logistics:write`

Browser token or API key
GET
/logistics/geo/entities/nearby
Find nearby entities

Find entities within a radius of a given point. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key

Logistics > Geocoding

Method
Path
Summary
Auth
POST
/logistics/geocoding/autocomplete
Address autocomplete

Live address suggestions as the user types. **Cost:** 0.0000018 tokens. **Required scope:** `logistics:read`

Browser token or API key
GET
/logistics/geocoding/forward
Forward geocode

Convert an address string to coordinates. **Cost:** 0.0000018 tokens. **Required scope:** `logistics:read`

Browser token or API key
GET
/logistics/geocoding/reverse
Reverse geocode

Convert coordinates to an address. **Cost:** 0.0000018 tokens. **Required scope:** `logistics:read`

Browser token or API key

Logistics > Geofencing

Method
Path
Summary
Auth
GET
/logistics/geo/fences
List geofences

List all geofences for the project. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/geo/fences
Create a geofence

Define a named zone (circle or polygon) for enter/exit detection. **Cost:** 0.0000053 tokens. **Required scope:** `logistics:write`

Browser token or API key
DELETE
/logistics/geo/fences/{fence_id}
Delete a geofence

Permanently removes a geofence. **Required scope:** `logistics:admin`

Browser token or API key
GET
/logistics/geo/fences/{fence_id}
Get a geofence

Retrieve a single geofence. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key

Logistics > Routing

Method
Path
Summary
Auth
POST
/logistics/routing/dispatch
Smart dispatch

Compute optimal agent-to-task assignment using distance matrix. **Cost:** 0.0000008 tokens per matrix cell. **Required scope:** `logistics:write`

Browser token or API key
POST
/logistics/routing/distance-matrix
Distance matrix

Get distances and durations between multiple origins and destinations. **Cost:** 0.0000008 tokens per cell. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/routing/isochrone
Isochrone / reachability

Get GeoJSON polygons of areas reachable from a point within given time budgets. **Cost:** 0.0000053 tokens. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/routing/optimize
Optimize stop order

Find the optimal order to visit a set of stops. **Cost:** 0.0000053 tokens per stop. **Required scope:** `logistics:write`

Browser token or API key
POST
/logistics/routing/route
Calculate a route

Get driving directions between two points via Mapbox. **Cost:** 0.0000053 tokens. **Required scope:** `logistics:write`

Browser token or API key
POST
/logistics/routing/snap
Snap to road

Correct raw GPS coordinates by matching to the road network. **Cost:** 0.0000008 tokens per ping. **Required scope:** `logistics:read`

Browser token or API key

Logistics > Tracking

Method
Path
Summary
Auth
GET
/logistics/tracking/{entity_id}/history
Get ping history

Retrieve historical location pings. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:read`

Browser token or API key
POST
/logistics/tracking/{entity_id}/ping
Submit a location ping

Report an entity's current GPS position. **Cost:** 0.0000008 tokens. **Required scope:** `logistics:track`

Browser token or API key
POST
/logistics/tracking/{entity_id}/ping/batch
Submit batch location pings

Submit multiple GPS pings at once. **Cost:** 0.0000008 tokens per ping. **Required scope:** `logistics:track`

Browser token or API key
GET
/logistics/tracking/{entity_id}/track
Subscribe to live tracking

Subscribe to real-time location updates via WebSocket. Billing: per-minute connection cost. **Required scope:** `logistics:read`

Browser token or API key

MCP

Method
Path
Summary
Auth
GET
/.well-known/oauth-protected-resource/mcp
MCP OAuth protected resource metadata

Publishes RFC 9728 protected resource metadata for the SaaSignal MCP endpoint. OAuth-capable MCP clients use this document to discover the frontend authorization server, supported scopes, and the MCP setup guide.

Public
POST
/mcp
Model Context Protocol endpoint

Stateless MCP (Model Context Protocol) server over Streamable HTTP. This deployment is POST-only: clients send JSON-RPC 2.0 requests (`initialize`, `tools/list`, `tools/call`) to `POST /mcp`, and `GET /mcp` / `DELETE /mcp` return `405 Method Not Allowed` because SaaSignal does not provide a standalone SSE session transport. **Primary authentication:** Browser-based OAuth 2.1 / MCP authorization flow. OAuth-capable MCP clients can connect with just the server URL, discover `/.well-known/oauth-protected-resource/mcp`, open the frontend authorization flow in a browser, and then call `/mcp` with the JWT bearer token. OAuth tokens are user-level and grant access across all organizations the user belongs to. **Manual fallback:** Existing project API keys (`sk_live_…`) still work in the `Authorization: Bearer <key>` header for clients that do not support browser authorization. If `X-Project-Id` is provided, it is enforced for all tool calls. Otherwise, each tool call must include `project_id` unless the credential is already project-scoped. **Agent onboarding:** Call `saasignal_surface_map` or `saasignal_skill` first when you want the broader platform map before planning. **Automatic route exposure:** MCP now auto-registers a tool for each documented HTTP operation using its OpenAPI `operationId`. If you add a new Hono route with `describeRoute(...)` and a stable `operationId`, it becomes available through `tools/list` automatically after deploy. **Legacy aliases:** Existing operational aliases like `kv_get`, `channel_publish`, and `job_create` remain available for compatibility, but the canonical generated tool names follow the HTTP `operationId` values such as `listProjects`, `storageListBuckets`, or `logisticsGeoCreate`. **Response model:** Generated MCP route tools proxy the real HTTP handlers. They return the HTTP status, response headers, content type, and parsed body so validation, billing, side effects, and auth stay aligned with the underlying route. Streaming responses are returned as previews or connection metadata instead of long-lived sockets. All write operations are metered via token-based billing. Rate limits apply per organization plan.

MCP OAuth or API key

Meta

Method
Path
Summary
Auth
GET
/
API landing page

Returns an AI-first landing page. Serves semantic HTML to browsers and markdown documentation to agents that send `Accept: text/markdown`.

Public
GET
/.well-known/oauth-protected-resource
API OAuth protected resource metadata

Publishes RFC 9728 protected resource metadata for the SaaSignal HTTP API. OAuth-capable SDKs and CLIs use this document to discover the frontend authorization server, supported scopes, and the primary API setup guide.

Public
GET
/api/openapi.json
OpenAPI specification

Returns the full OpenAPI 3.1.0 JSON specification for the SaaSignal API. Includes all route definitions, request/response schemas, authentication requirements, and tag descriptions. Use this spec to generate client SDKs, import into tools like Postman or Insomnia, or feed into code-generation pipelines.

Public
GET
/healthz
Health check

Combined health endpoint — returns liveness status together with dependency checks (database connectivity). Responds 200 when all systems are healthy, 503 when any dependency is degraded. Equivalent to running both `/livez` and `/readyz` in a single call.

Public
GET
/livez
Liveness probe

Liveness check — returns 200 if the worker is alive and accepting HTTP requests. Does not verify downstream dependencies. Use `/readyz` for a deeper check.

Public
GET
/llms-full.txt
Full LLM-optimized API documentation

Returns a token-optimized compact representation of the API (~60-75% smaller than raw OpenAPI JSON). Designed for LLM agents and AI tools. Supports HEAD requests to check token cost via `X-Markdown-Tokens` response header before downloading the full body. Responses include ETag for conditional requests (If-None-Match → 304).

Public
GET
/llms.txt
LLM documentation index (llmstxt.org spec)

Returns a spec-compliant llmstxt.org index linking to deeper resources: the full LLM-optimized API reference (`/llms-full.txt`), agent skill, OpenAPI spec, human-readable docs, MCP endpoint, and SDK/CLI references. Responses include ETag for conditional requests (If-None-Match → 304).

Public
GET
/readyz
Readiness probe

Readiness check — verifies the worker can reach its database (D1). Returns 200 when all dependencies are healthy, or 503 when degraded. Use `/livez` for a lightweight liveness-only check.

Public
GET
/robots.txt
Crawler directives (robots.txt)

Robots exclusion protocol file. Serves a permissive policy that allows all user-agents to crawl public meta endpoints. Includes a Sitemap directive pointing to /sitemap.xml for automated URL discovery.

Public
GET
/scalar
Interactive API reference (Scalar)

Interactive API reference powered by Scalar. Renders the OpenAPI specification as a browsable UI.

Public
GET
/sitemap.xml
XML sitemap

Sitemaps protocol file listing all publicly accessible meta endpoints with changefreq and priority hints. Referenced by the Sitemap directive in /robots.txt.

Public
GET
/skills/saasignal
SaaSignal agent skill

Returns the canonical SaaSignal agent skill as markdown. Use this when an agent needs a guided playbook for choosing between MCP, REST, the SDK, and the CLI, including current MCP coverage and common scope boundaries. Supports HEAD requests to inspect `X-Markdown-Tokens` before downloading the body. Responses include ETag for conditional requests (`If-None-Match` → 304).

Public
GET
/to-humans.md
Human-readable API documentation (Markdown)

Returns comprehensive markdown documentation with table of contents, authentication guide, parameter tables, and response schemas. Suitable for rendering in any markdown viewer or importing into documentation platforms. Responses include ETag for conditional requests (If-None-Match → 304).

Public

Modules > Booking > Analytics

Method
Path
Summary
Auth
GET
/modules/booking/analytics/by-period
Get bookings by period

Booking metrics grouped by time period. **Required scope:** `booking:read`

Browser token or API key
GET
/modules/booking/analytics/by-resource
Get bookings by resource

Booking metrics grouped by resource. **Required scope:** `booking:read`

Browser token or API key
GET
/modules/booking/analytics/summary
Get booking analytics summary

Aggregate booking metrics. **Required scope:** `booking:read`

Browser token or API key

Modules > Booking > Availability

Method
Path
Summary
Auth
GET
/modules/booking/resources/{resource_id}/availability
Get availability rules

Get all availability rules for a resource. **Required scope:** `booking:read`

Browser token or API key
PUT
/modules/booking/resources/{resource_id}/availability
Set availability rules

Replace all availability rules for a resource. **Required scope:** `booking:write`

Browser token or API key
GET
/modules/booking/resources/{resource_id}/slots
Get available slots

Compute available booking slots for a date. **Required scope:** `booking:read`

Browser token or API key

Modules > Booking > Blockers

Method
Path
Summary
Auth
GET
/modules/booking/blockers
List blockers

List time blockers. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/blockers
Create a blocker

Block a time range on a resource. **Required scope:** `booking:write`

Browser token or API key
DELETE
/modules/booking/blockers/{blocker_id}
Delete a blocker

Remove a time blocker. **Required scope:** `booking:write`

Browser token or API key

Modules > Booking > Bookings

Method
Path
Summary
Auth
GET
/modules/booking/bookings
List bookings

List bookings. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/bookings
Create a booking

Create a new booking. **Required scope:** `booking:write`

Browser token or API key
DELETE
/modules/booking/bookings/{booking_id}
Delete a booking

Delete a pending/cancelled booking. **Required scope:** `booking:admin`

Browser token or API key
GET
/modules/booking/bookings/{booking_id}
Get a booking

Retrieve a single booking with recent events. **Required scope:** `booking:read`

Browser token or API key
PATCH
/modules/booking/bookings/{booking_id}
Update a booking

Update a pending/confirmed booking. **Required scope:** `booking:write`

Browser token or API key
GET
/modules/booking/bookings/{booking_id}/events
Get booking events

List audit events for a booking. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/bookings/{booking_id}/transition
Transition booking status

Transition booking to a new status. Valid transitions: pending→[confirmed,cancelled], confirmed→[checked_in,cancelled,no_show], checked_in→[completed]. **Required scope:** `booking:write`

Browser token or API key

Modules > Booking > Customers

Method
Path
Summary
Auth
GET
/modules/booking/customers
List customers

List booking customers. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/customers
Create a customer

Create a new booking customer. **Required scope:** `booking:write`

Browser token or API key
DELETE
/modules/booking/customers/{customer_id}
Delete a customer

Permanently remove a booking customer. **Required scope:** `booking:admin`

Browser token or API key
GET
/modules/booking/customers/{customer_id}
Get a customer

Retrieve a single booking customer. **Required scope:** `booking:read`

Browser token or API key
PATCH
/modules/booking/customers/{customer_id}
Update a customer

Update a booking customer. **Required scope:** `booking:write`

Browser token or API key

Modules > Booking > Export

Method
Path
Summary
Auth
GET
/modules/booking/export/bookings
Export bookings

Export bookings as JSON or CSV. **Required scope:** `booking:admin`

Browser token or API key
GET
/modules/booking/export/customers
Export booking customers

Export booking customers as JSON or CSV. **Required scope:** `booking:admin`

Browser token or API key
GET
/modules/booking/export/resources
Export booking resources

Export booking resources as JSON or CSV. **Required scope:** `booking:admin`

Browser token or API key

Modules > Booking > Resources

Method
Path
Summary
Auth
GET
/modules/booking/resources
List resources

List bookable resources. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/resources
Create a resource

Create a bookable resource. **Required scope:** `booking:write`

Browser token or API key
DELETE
/modules/booking/resources/{resource_id}
Delete a resource

Permanently remove a resource. **Required scope:** `booking:admin`

Browser token or API key
GET
/modules/booking/resources/{resource_id}
Get a resource

Retrieve a single resource. **Required scope:** `booking:read`

Browser token or API key
PATCH
/modules/booking/resources/{resource_id}
Update a resource

Update a bookable resource. **Required scope:** `booking:write`

Browser token or API key

Modules > Booking > Settings

Method
Path
Summary
Auth
GET
/modules/booking/settings
Get booking settings

Get or create default booking settings. **Required scope:** `booking:read`

Browser token or API key
PATCH
/modules/booking/settings
Update booking settings

Update booking settings. **Required scope:** `booking:admin`

Browser token or API key

Modules > Booking > Webhooks

Method
Path
Summary
Auth
GET
/modules/booking/webhooks
List booking webhooks

List webhooks filtered to booking.* topics. **Required scope:** `booking:read`

Browser token or API key
POST
/modules/booking/webhooks
Create a booking webhook

Register a webhook for booking event topics. **Required scope:** `booking:write`

Browser token or API key

Modules > Commerce > Analytics

Method
Path
Summary
Auth
GET
/modules/commerce/analytics/revenue
Get revenue over time

Revenue grouped by time period. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
GET
/modules/commerce/analytics/summary
Get commerce analytics summary

Aggregate commerce metrics. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
GET
/modules/commerce/analytics/top-products
Get top-selling products

Top products by units sold and revenue. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key

Modules > Commerce > Carts

Method
Path
Summary
Auth
POST
/modules/commerce/carts
Create a cart

Create a new shopping cart. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
GET
/modules/commerce/carts/{cart_id}
Get a cart

Retrieve a cart with items. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/carts/{cart_id}/checkout
Checkout a cart

Convert a cart into an order. **Cost:** 0.0000106 tokens. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/carts/{cart_id}/discount
Remove discount from cart

Remove a discount code from a cart. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
POST
/modules/commerce/carts/{cart_id}/discount
Apply discount to cart

Apply a discount code to a cart. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
POST
/modules/commerce/carts/{cart_id}/items
Add item to cart

Add an item to a cart. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/carts/{cart_id}/items/{item_id}
Remove cart item

Remove an item from a cart. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
PATCH
/modules/commerce/carts/{cart_id}/items/{item_id}
Update cart item quantity

Update the quantity of a cart item. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Catalogs

Method
Path
Summary
Auth
GET
/modules/commerce/catalogs
List catalogs

List product catalogs. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/catalogs
Create a catalog

Create a new product catalog. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/catalogs/{catalog_id}
Delete a catalog

Permanently remove a catalog. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/catalogs/{catalog_id}
Get a catalog

Retrieve a single catalog. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/catalogs/{catalog_id}
Update a catalog

Update a product catalog. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Categories

Method
Path
Summary
Auth
GET
/modules/commerce/categories
List categories

List product categories. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/categories
Create a category

Create a new product category. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/categories/{category_id}
Delete a category

Permanently remove a category. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/categories/{category_id}
Get a category

Retrieve a single category. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/categories/{category_id}
Update a category

Update a product category. **Required scope:** `commerce:write`

Browser token or API key
GET
/modules/commerce/categories/{category_id}/tree
Get category tree

Retrieve a category with its full subtree of children. **Required scope:** `commerce:read`

Browser token or API key

Modules > Commerce > Customers

Method
Path
Summary
Auth
GET
/modules/commerce/customers
List customers

List commerce customers. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/customers
Create a customer

Create a new commerce customer. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/customers/{customer_id}
Delete a customer

Permanently remove a customer. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/customers/{customer_id}
Get a customer

Retrieve a single customer. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/customers/{customer_id}
Update a customer

Update a commerce customer. **Required scope:** `commerce:write`

Browser token or API key
GET
/modules/commerce/customers/{customer_id}/addresses
List customer addresses

List addresses for a customer. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/customers/{customer_id}/addresses
Add customer address

Add an address to a customer. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/customers/{customer_id}/addresses/{address_id}
Delete customer address

Remove an address from a customer. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Discounts

Method
Path
Summary
Auth
GET
/modules/commerce/discounts
List discounts

List discount codes. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/discounts
Create a discount

Create a new discount code. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/discounts/{discount_id}
Delete a discount

Permanently remove a discount. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/discounts/{discount_id}
Get a discount

Retrieve a single discount. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/discounts/{discount_id}
Update a discount

Update a discount code. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
POST
/modules/commerce/discounts/validate
Validate a discount code

Validate whether a discount code is applicable. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key

Modules > Commerce > Export

Method
Path
Summary
Auth
GET
/modules/commerce/export/customers
Export commerce customers

Export customers as JSON or CSV. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/export/orders
Export commerce orders

Export orders as JSON or CSV. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/export/products
Export commerce products

Export products as JSON or CSV. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:admin`

Browser token or API key

Modules > Commerce > Inventory

Method
Path
Summary
Auth
GET
/modules/commerce/inventory
List inventory

List inventory records. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
GET
/modules/commerce/inventory/{inventory_id}
Get inventory

Retrieve a single inventory record. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/inventory/{inventory_id}
Update inventory

Update inventory quantity or incoming. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
POST
/modules/commerce/inventory/{inventory_id}/adjust
Adjust inventory

Adjust inventory by a delta amount. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Orders

Method
Path
Summary
Auth
GET
/modules/commerce/orders
List orders

List commerce orders. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
DELETE
/modules/commerce/orders/{order_id}
Delete an order

Permanently remove a pending or cancelled order. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/orders/{order_id}
Get an order

Retrieve a single order with items, payments, and recent events. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/orders/{order_id}
Update an order

Update order addresses, notes, or metadata. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
GET
/modules/commerce/orders/{order_id}/events
List order events

List events for an order. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/orders/{order_id}/transition
Transition order status

Transition an order to a new status. **Cost:** 0.0000106 tokens. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Payments

Method
Path
Summary
Auth
GET
/modules/commerce/orders/{order_id}/payments
List payments for an order

List payments for an order. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/orders/{order_id}/payments
Create a payment

Create a payment for an order. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
GET
/modules/commerce/orders/{order_id}/payments/{payment_id}
Get a payment

Retrieve a single payment. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/orders/{order_id}/payments/{payment_id}/transition
Transition payment status

Transition a payment to a new status. **Cost:** 0.0000106 tokens. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Products

Method
Path
Summary
Auth
GET
/modules/commerce/products
List products

List products with optional filters. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/products
Create a product

Create a new product. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/products/{product_id}
Delete a product

Permanently remove a product. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/products/{product_id}
Get a product

Retrieve a single product. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/products/{product_id}
Update a product

Update a product. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Reviews

Method
Path
Summary
Auth
GET
/modules/commerce/reviews
List reviews

List product reviews. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/reviews
Create a review

Create a product review. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/reviews/{review_id}
Delete a review

Permanently remove a review. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/reviews/{review_id}
Get a review

Retrieve a single review. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/reviews/{review_id}/transition
Moderate a review

Transition review moderation status. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:admin`

Browser token or API key

Modules > Commerce > Settings

Method
Path
Summary
Auth
GET
/modules/commerce/settings
Get commerce settings

Get or create default commerce settings. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/settings
Update commerce settings

Update commerce settings. **Required scope:** `commerce:admin`

Browser token or API key

Modules > Commerce > Variants

Method
Path
Summary
Auth
GET
/modules/commerce/products/{product_id}/variants
List variants

List variants for a product. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/products/{product_id}/variants
Create a variant

Create a new product variant. **Required scope:** `commerce:write`

Browser token or API key
DELETE
/modules/commerce/products/{product_id}/variants/{variant_id}
Delete a variant

Permanently remove a variant. **Required scope:** `commerce:admin`

Browser token or API key
GET
/modules/commerce/products/{product_id}/variants/{variant_id}
Get a variant

Retrieve a single variant. **Required scope:** `commerce:read`

Browser token or API key
PATCH
/modules/commerce/products/{product_id}/variants/{variant_id}
Update a variant

Update a product variant. **Required scope:** `commerce:write`

Browser token or API key

Modules > Commerce > Webhooks

Method
Path
Summary
Auth
GET
/modules/commerce/webhooks
List commerce webhooks

List webhooks filtered to commerce.* topics. **Cost:** 0.0000008 tokens. **Required scope:** `commerce:read`

Browser token or API key
POST
/modules/commerce/webhooks
Create a commerce webhook

Register a webhook for commerce event topics. **Cost:** 0.0000053 tokens. **Required scope:** `commerce:write`

Browser token or API key

Modules > Delivery > Analytics

Method
Path
Summary
Auth
GET
/modules/delivery/analytics/drivers
Get driver analytics

Per-driver delivery metrics. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
GET
/modules/delivery/analytics/summary
Get delivery analytics summary

Aggregate delivery metrics. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key

Modules > Delivery > Customers

Method
Path
Summary
Auth
GET
/modules/delivery/customers
List customers

List delivery customers. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/customers
Create a customer

Create a new delivery customer. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/customers/{customer_id}
Delete a customer

Permanently remove a customer. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/customers/{customer_id}
Get a customer

Retrieve a single customer. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/customers/{customer_id}
Update a customer

Update a delivery customer. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/customers/{customer_id}/addresses
List customer addresses

List addresses for a customer. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/customers/{customer_id}/addresses
Add customer address

Add an address to a customer. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/customers/{customer_id}/addresses/{address_id}
Delete customer address

Remove an address from a customer. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Dispatch

Method
Path
Summary
Auth
POST
/modules/delivery/dispatch/auto-assign
Auto-assign a driver to an order

Automatically assign the best available driver to an order. **Cost:** 0.0000160 tokens. **Required scope:** `delivery:write`

Browser token or API key
POST
/modules/delivery/dispatch/suggest
Suggest drivers for an order

Suggest the best nearby available drivers for an order. **Cost:** 0.0000160 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Dispatch Rules

Method
Path
Summary
Auth
POST
/modules/delivery/auto-dispatch
Auto-dispatch an order using rules

Evaluate dispatch rules for an order and assign the best available driver based on the matched rule's strategy. Falls back to nearest-driver if no rules match. **Cost:** 0.0000160 tokens. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/dispatch-rules
List dispatch rules

List all dispatch rules for the project, ordered by priority. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/dispatch-rules
Create a dispatch rule

Create a priority-ordered dispatch rule with zone/time conditions and driver selection strategy. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:admin`

Browser token or API key
DELETE
/modules/delivery/dispatch-rules/{rule_id}
Delete a dispatch rule

Delete a dispatch rule. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/dispatch-rules/{rule_id}
Get a dispatch rule

Get a single dispatch rule by ID. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/dispatch-rules/{rule_id}
Update a dispatch rule

Update a dispatch rule's conditions, action, priority, or toggle enabled state. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:admin`

Browser token or API key
POST
/modules/delivery/dispatch-rules/evaluate
Evaluate dispatch rules (dry-run)

Test which rule would fire for given coordinates and time without performing any assignment. **Cost:** 0.0000160 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Drivers

Method
Path
Summary
Auth
GET
/modules/delivery/drivers
List drivers

List delivery drivers for the active project, with optional status and cursor filters. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/drivers
Create a driver

Create a new delivery driver. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/drivers/{driver_id}
Delete a driver

Permanently remove a driver. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/drivers/{driver_id}
Get a driver

Retrieve a single driver. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/drivers/{driver_id}
Update a driver

Update a delivery driver. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
POST
/modules/delivery/drivers/{driver_id}/offline
Go offline

Set driver status to offline. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key
POST
/modules/delivery/drivers/{driver_id}/online
Go online

Set driver status to online. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key

Modules > Delivery > ETA Fences

Method
Path
Summary
Auth
GET
/modules/delivery/eta-fences
List delivery ETA fences

List all ETA fences for the project. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/eta-fences
Create a delivery ETA fence

Define a destination point and time threshold for delivery ETA monitoring. When a tracked entity's driving ETA drops below the threshold, a `logistics.eta_fence.breach` webhook fires. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/eta-fences/{fence_id}
Delete a delivery ETA fence

Permanently removes an ETA fence. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/eta-fences/{fence_id}
Get a delivery ETA fence

Retrieve a single ETA fence. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key

Modules > Delivery > Export

Method
Path
Summary
Auth
GET
/modules/delivery/export/orders
Export delivery orders

Export orders as JSON or CSV. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:admin`

Browser token or API key

Modules > Delivery > Hubs

Method
Path
Summary
Auth
GET
/modules/delivery/hubs
List delivery hubs

List all delivery hubs. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/hubs
Create a delivery hub

Create a delivery hub. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/hubs/{hub_id}
Delete a delivery hub

Permanently remove a delivery hub. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/hubs/{hub_id}
Get a delivery hub

Retrieve a single delivery hub. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/hubs/{hub_id}
Update a delivery hub

Update delivery hub fields. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Notifications

Method
Path
Summary
Auth
GET
/modules/delivery/notifications
List notification configs

List all notification configs for the project. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:admin`

Browser token or API key
PUT
/modules/delivery/notifications
Upsert notification config

Insert or update a notification config by project + event. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:admin`

Browser token or API key

Modules > Delivery > Orders

Method
Path
Summary
Auth
GET
/modules/delivery/orders
List orders

List delivery orders. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/orders
Create an order

Create a new delivery order with optional pickup, dropoff, scheduling, and assignment fields. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/orders/{order_id}
Delete an order

Permanently remove an order. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/orders/{order_id}
Get an order

Retrieve a single order. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/orders/{order_id}
Update an order

Update a delivery order. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/orders/{order_id}/events
List order events

List events for an order. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
GET
/modules/delivery/orders/{order_id}/proof
List order proofs

List all proof records for an order. Photo proofs include signed URLs. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/orders/{order_id}/proof
Submit delivery proof

Submit proof of delivery for an order. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key
DELETE
/modules/delivery/orders/{order_id}/proof/{proof_id}
Delete a proof record

Delete a proof record and its associated file. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/orders/{order_id}/proof/{proof_id}
Get a proof record

Retrieve a single proof record. Photo proofs include a signed URL. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/orders/{order_id}/proof/photo
Upload photo proof

Upload a photo file as delivery proof. Send raw image bytes with appropriate Content-Type header. Max 10 MB. **Cost:** 0.0000044 tokens. **Required scope:** `delivery:track`

Browser token or API key
POST
/modules/delivery/orders/{order_id}/transition
Transition order status

Transition an order to a new status. **Cost:** 0.0000106 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Settings

Method
Path
Summary
Auth
GET
/modules/delivery/settings
Get delivery settings

Get or create default delivery settings. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/settings
Update delivery settings

Update delivery settings. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:admin`

Browser token or API key

Modules > Delivery > Stops

Method
Path
Summary
Auth
GET
/modules/delivery/orders/{order_id}/stops
List stops for an order

List all stops for an order. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/orders/{order_id}/stops
Create a stop

Add a stop to an order. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/stops/{stop_id}
Delete a stop

Permanently remove a stop. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/stops/{stop_id}
Get a stop

Retrieve a single stop. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/stops/{stop_id}
Update a stop

Update a delivery stop. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
POST
/modules/delivery/stops/{stop_id}/arrive
Mark stop arrived

Mark a stop as arrived. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key
POST
/modules/delivery/stops/{stop_id}/complete
Complete a stop

Mark a stop as completed. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key
POST
/modules/delivery/stops/{stop_id}/skip
Skip a stop

Skip a stop. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:track`

Browser token or API key

Modules > Delivery > Tracking

Method
Path
Summary
Auth
POST
/modules/delivery/tracking-links
Create a tracking link

Generate short-lived public tracking tokens for a delivery order. Returns embeddable customer and driver tracking page URLs. **Cost:** 0.0000160 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/tracking-links/{link_id}
Revoke a tracking link

Revoke a tracking link, invalidating both customer and driver tokens. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
GET
/modules/delivery/tracking-links/{token}
Resolve a tracking token

Public endpoint — resolves a tracking token to its associated channel and role. No authentication required.

Browser token or API key
GET
/modules/delivery/tracking-pages/customer/{token}
Render the customer tracking page

Render the public customer-facing delivery tracking page for a tracking token. Returns HTML that embeds live order updates, proof history, and customer rating submission. This route is intentionally public and authenticated by the signed tracking token in the URL.

Public
GET
/modules/delivery/tracking-pages/customer/{token}/feed
Load customer tracking data

Load the initial JSON payload for a customer tracking page, including order status, delivery proofs, and any submitted rating. This route is public and authenticated by the tracking token in the URL.

Public
POST
/modules/delivery/tracking-pages/customer/{token}/rating
Submit a customer delivery rating

Submit or update a customer rating from the public tracking page after an order is delivered. This route is public and authenticated by the tracking token in the URL.

Public
GET
/modules/delivery/tracking-pages/driver/{token}
Render the driver tracking page

Render the public driver-facing delivery tracking page for a tracking token. Returns HTML used by couriers to send location pings and upload proof. This route is intentionally public and authenticated by the signed tracking token in the URL.

Public
POST
/modules/delivery/tracking-pages/driver/{token}/ping
Send a driver location ping from a tracking page

Publish a live driver location update from the public driver tracking page. This route is public and authenticated by the tracking token in the URL.

Public
POST
/modules/delivery/tracking-pages/driver/{token}/proof/comment
Submit driver comment proof from a tracking page

Submit text-only proof from the public driver tracking page. This route is public and authenticated by the tracking token in the URL.

Public
POST
/modules/delivery/tracking-pages/driver/{token}/proof/photo
Upload driver photo proof from a tracking page

Upload delivery proof directly from the public driver tracking page using multipart form data. Expected fields: `file` (required image file), optional `comment`, `lat`, and `lng`. This route is public and authenticated by the tracking token in the URL.

Public
GET
/modules/delivery/tracking-pages/subscribe/{token}
Subscribe to public delivery tracking updates

Open a public Server-Sent Events stream for a delivery tracking token. Use this from customer and driver tracking pages to receive live order, proof, and location updates without any bearer token. If reconnecting, pass `last_event_id` to resume from the previous event cursor.

Public

Modules > Delivery > Vehicles

Method
Path
Summary
Auth
GET
/modules/delivery/vehicles
List vehicles

List delivery vehicles. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/vehicles
Create a vehicle

Create a new delivery vehicle. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/vehicles/{vehicle_id}
Delete a vehicle

Permanently remove a vehicle. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/vehicles/{vehicle_id}
Get a vehicle

Retrieve a single vehicle. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/vehicles/{vehicle_id}
Update a vehicle

Update a delivery vehicle. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Webhooks

Method
Path
Summary
Auth
GET
/modules/delivery/webhooks
List delivery webhooks

List webhooks filtered to delivery.* topics. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/webhooks
Create a delivery webhook

Register a webhook for delivery event topics. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Delivery > Zones

Method
Path
Summary
Auth
GET
/modules/delivery/zones
List delivery zones

List all delivery zones. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
POST
/modules/delivery/zones
Create a delivery zone

Create a delivery zone with optional geofence. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key
DELETE
/modules/delivery/zones/{zone_id}
Delete a delivery zone

Permanently remove a delivery zone. **Required scope:** `delivery:admin`

Browser token or API key
GET
/modules/delivery/zones/{zone_id}
Get a delivery zone

Retrieve a single delivery zone. **Cost:** 0.0000008 tokens. **Required scope:** `delivery:read`

Browser token or API key
PATCH
/modules/delivery/zones/{zone_id}
Update a delivery zone

Update delivery zone fields. **Cost:** 0.0000053 tokens. **Required scope:** `delivery:write`

Browser token or API key

Modules > Messaging > Analytics

Method
Path
Summary
Auth
GET
/modules/messaging/analytics/by-conversation
Get messages by conversation

Messaging metrics grouped by conversation. **Required scope:** `messaging:read`

Browser token or API key
GET
/modules/messaging/analytics/by-period
Get messages by period

Messaging metrics grouped by time period. **Required scope:** `messaging:read`

Browser token or API key
GET
/modules/messaging/analytics/summary
Get messaging analytics summary

Aggregate messaging metrics. **Required scope:** `messaging:read`

Browser token or API key

Modules > Messaging > Conversations

Method
Path
Summary
Auth
GET
/modules/messaging/conversations
List conversations

List conversations. **Required scope:** `messaging:read`

Browser token or API key
POST
/modules/messaging/conversations
Create a conversation

Create a new conversation. **Required scope:** `messaging:write`

Browser token or API key
DELETE
/modules/messaging/conversations/{conversation_id}
Delete a conversation

Delete a conversation. **Required scope:** `messaging:admin`

Browser token or API key
GET
/modules/messaging/conversations/{conversation_id}
Get a conversation

Retrieve a single conversation. **Required scope:** `messaging:read`

Browser token or API key
PATCH
/modules/messaging/conversations/{conversation_id}
Update a conversation

Update a conversation. **Required scope:** `messaging:write`

Browser token or API key
POST
/modules/messaging/conversations/{conversation_id}/archive
Archive a conversation

Archive a conversation. **Required scope:** `messaging:write`

Browser token or API key
POST
/modules/messaging/conversations/{conversation_id}/close
Close a conversation

Close a conversation. **Required scope:** `messaging:write`

Browser token or API key
POST
/modules/messaging/conversations/{conversation_id}/reopen
Reopen a conversation

Reopen a closed or archived conversation. **Required scope:** `messaging:write`

Browser token or API key

Modules > Messaging > Export

Method
Path
Summary
Auth
GET
/modules/messaging/export/conversations
Export conversations

Export conversations as JSON or CSV. **Required scope:** `messaging:admin`

Browser token or API key
GET
/modules/messaging/export/messages
Export messages

Export messages as JSON or CSV. **Required scope:** `messaging:admin`

Browser token or API key

Modules > Messaging > Messages

Method
Path
Summary
Auth
GET
/modules/messaging/conversations/{conversation_id}/messages
List messages

List messages in a conversation. **Required scope:** `messaging:read`

Browser token or API key
POST
/modules/messaging/conversations/{conversation_id}/messages
Send a message

Send a message to a conversation. **Required scope:** `messaging:write`

Browser token or API key
DELETE
/modules/messaging/conversations/{conversation_id}/messages/{message_id}
Delete a message

Soft-delete a message. **Required scope:** `messaging:write`

Browser token or API key
GET
/modules/messaging/conversations/{conversation_id}/messages/{message_id}
Get a message

Retrieve a single message. **Required scope:** `messaging:read`

Browser token or API key
PATCH
/modules/messaging/conversations/{conversation_id}/messages/{message_id}
Edit a message

Edit a message body. **Required scope:** `messaging:write`

Browser token or API key

Modules > Messaging > Participants

Method
Path
Summary
Auth
GET
/modules/messaging/conversations/{conversation_id}/participants
List participants

List participants of a conversation. **Required scope:** `messaging:read`

Browser token or API key
POST
/modules/messaging/conversations/{conversation_id}/participants
Add a participant

Add a participant to a conversation. **Required scope:** `messaging:write`

Browser token or API key
DELETE
/modules/messaging/conversations/{conversation_id}/participants/{participant_id}
Remove a participant

Remove a participant from a conversation. **Required scope:** `messaging:write`

Browser token or API key
PATCH
/modules/messaging/conversations/{conversation_id}/participants/{participant_id}
Update a participant

Update a participant in a conversation. **Required scope:** `messaging:write`

Browser token or API key

Modules > Messaging > Reactions

Method
Path
Summary
Auth
POST
/modules/messaging/messages/{message_id}/reactions
Add a reaction

Add a reaction to a message. **Required scope:** `messaging:write`

Browser token or API key
DELETE
/modules/messaging/messages/{message_id}/reactions/{reaction_id}
Remove a reaction

Remove a reaction from a message. **Required scope:** `messaging:write`

Browser token or API key

Modules > Messaging > Settings

Method
Path
Summary
Auth
GET
/modules/messaging/settings
Get messaging settings

Get or create default messaging settings. **Required scope:** `messaging:read`

Browser token or API key
PATCH
/modules/messaging/settings
Update messaging settings

Update messaging settings. **Required scope:** `messaging:admin`

Browser token or API key

Modules > Messaging > Webhooks

Method
Path
Summary
Auth
GET
/modules/messaging/webhooks
List messaging webhooks

List webhooks filtered to messaging.* topics. **Required scope:** `messaging:read`

Browser token or API key
POST
/modules/messaging/webhooks
Create a messaging webhook

Register a webhook for messaging event topics. **Required scope:** `messaging:write`

Browser token or API key