Skip to content

REST API

Everything the dashboard does is API-first. Interactive OpenAPI reference: /docs on your API host (generated from the same zod schemas that validate requests).

Authentication

Authorization: Bearer eng_live_...

Keys are org-scoped or app-scoped, with read / write / send / admin scopes. Rate limiting is per key.

Route map (all under /v1)

AreaRoutes
OrgsPOST /orgs (admin bootstrap) · GET/PATCH /org · usage, invoice preview, audit log
Apps & credentialsapps CRUD · POST /apps/:id/credentials/{fcm,apns,whatsapp,telegram,rcs} · settings (caps, quiet hours, webhook, email sender)
Audiencesubscribers (upsert on external id), devices, tags, bulk import
SegmentsCRUD + live preview counts
Messagingmessages (incl. localizations) · campaigns (recurrence, tz, optimal-time, throttle, A/B) · POST /campaigns/:id/send
TransactionalPOST /apps/:id/notifications — straight to the priority lane
JourneysCRUD + PATCH {active} + stats
Live Activitieslist · POST /live-activities/:id/{update,end}
Insightsfunnel, cohorts, RFM
Integrationscatalog GET · per-type PUT/DELETE
BillingGET /org/billing · POST /org/billing/checkout (Stripe-hosted)
White-labelPOST/GET /org/clients · GET/PATCH /org/branding

Public SDK endpoints (appId-scoped, no key)

GET /sdk/app/:appId · POST /sdk/subscriber · POST /sdk/register · POST /sdk/tags · POST /sdk/live-activities · in-app feed — these only let a client create/claim its own records within one app.

Ingest

POST /e on the ingest host: batched events with per-event validation (one malformed event never poisons a batch). Plus POST /i/segment/:appId for Segment inbound.

AI agents

@wingblaze/mcp-server exposes send_campaign, campaign_stats, send_transactional and org_usage as MCP tools — point your agent at it and it can operate WingBlaze directly.

Data hosted in Southeast Asia (asia-southeast1).