REST API
Programmatic access to Scheduler Zero's workspace automation surface.
# REST API
Prefer terminal commands for inspection? Start with the [Scheduler Zero CLI](/cli)
and [CLI scripting guide](/cli/scripting). For AI clients, use [MCP](/mcp).
Read [this REST guide as Markdown](/rest-api.md), the
[full REST schema reference](/rest-api/reference.md), or the
[REST LLM index](/rest-api/llms.txt) and [complete REST text](/rest-api/llms-full.txt).
Every page offers **Copy as Markdown**; [Markdown formats](/markdown) explains
the API, MCP and CLI exports.
The Scheduler Zero REST API is available at:
```text
https://api.schedulerzero.com/v1
```
Send a personal API key in the `x-api-key` header.
```http
x-api-key: szp_your_api_key_here
```
You can instead use `Authorization: Bearer szp_your_api_key_here`, matching the
MCP connection header. Both forms use the same key verification, permissions,
and rate limit; `x-api-key` takes precedence when both are present. Keys created
before personal keys (`sk_…`) keep working until rotated or expired; legacy
`sz_` keys are no longer accepted. An MCP OAuth access token is not a REST API
key.
Create and manage keys under **Settings → Personal → API keys**. A key acts as
you: it is either a full-account key or restricted to selected Organizations,
Workspaces, and permissions, and it never exceeds your current permissions.
One key can reach several Organizations and Workspaces, so every Workspace
operation names its Workspace in the path (`/v1/workspaces/{workspaceId}/…`).
Missing or invalid credentials return `401`; valid credentials without the
required permission return `403`; a Workspace the key cannot see returns `404`.
The public API is an explicit allowlist that defaults to **public**: anything a
workspace member can do in the app is exposed unless there is a concrete safety
reason not to. It covers campaigns, sequences, analytics, schedule profiles,
subsequences, leads and assignments, inbox connections, settings and bulk
actions, warmup, the unified inbox (threads, message bodies, replies, triage),
reminders, the dialer, tasks, templates, workflows, verification, domains,
webhooks, workspace settings,
membership and roles, and private-alpha read-only SQL.
API keys can create Organizations and create Workspaces in a named
Organization. Deliberately **not** available to API keys: cross-tenant operator
routes, browser-only OAuth callbacks and share-token pages, deleting,
transferring, or leaving an Organization or Workspace (irreversible, so they
stay in the web app), accepting an invitation, the affiliate program, creating
or rotating API keys, BYOK third-party key ingestion, dialer billing, and
per-user browser preferences.
`GET`/`DELETE` inputs are query parameters; numbers, booleans, and dates are
coerced. Pass arrays as repeated keys or `name[]=value` (use the bracket form
for a single element).
## Verification integrations
Email and phone verification require an active provider connection in the
requesting workspace. A member connects the provider in Settings → Integrations;
credential ingestion stays outside REST and MCP. Provider accounts bill users
directly on every plan. Email supports MillionVerifier, NeverBounce, and
ZeroBounce; phone supports ClearoutPhone and Trestle IQ.
The provider catalogs report `enabled: true` only for usable workspace
integrations. Single and bulk verification return `412 PRECONDITION_FAILED` when
none is available, before checking caches or queuing work. Queued jobs re-check
the connection and fail the durable run if it was removed. Historical results
remain readable. Legacy credit endpoints report billing disabled and zero
estimated Scheduler Zero credits; credit purchases are unavailable.
## Campaign ramp-up
Use `PATCH /v1/campaigns/{id}/schedule` with `rampUpEnabled`,
`rampUpInitialDailyLimit`, and `rampUpDailyIncrement` to configure a campaign-wide
ramp independently of inbox ramp-up; both limits apply. The numeric settings
accept positive whole numbers and default to 10, while the toggle defaults to
off. Only completed UTC days with successful sends while enabled advance the
ramp, up to `maxEmailsPerDay`; disabling preserves progress. Omitted fields keep
their saved values. `GET /v1/campaigns/{id}/schedule` returns these settings plus
`rampUpCompletedSendingDays` and `effectiveMaxEmailsPerDay`. See the [MCP tool reference](/mcp/tools) for the corresponding capability inputs and outputs.
- [Make your first request](/rest-api/quickstart): Create a key and call the API with curl.
- [Browse the API reference](/rest-api/reference): Explore every public operation and schema.
- [OpenAPI 3.1 specification](/openapi.json): Download or import the machine-readable contract.