Developer documentation

Cadence API.

REST API + OAuth 2.0 auth + webhooks. Build custom integrations on top of your white-label coaching app — sync clients to your CRM, post check-ins to Slack, automate billing reconciliation, build mobile companion apps.

API access: included on Studio ($179/mo) + Agency ($499/mo) tiers. Coach-tier coaches can join the API waitlist by emailing hello@vantagedigital.app.

Authentication

Cadence uses OAuth 2.0 (Authorization Code flow with PKCE) for user-context requests, and API keys for server-to-server calls. Every request requires authentication; unauthenticated requests return 401 Unauthorized.

API Key (server-to-server)

Generate API keys from your Cadence dashboard at /dashboard/api-keys. Keys are scoped to your coach account; they cannot access other coaches' data. Pass the key in the Authorization: Bearer ... header.

# Example — list active clients curl https://api.cadencecoach.training/v1/clients \ -H "Authorization: Bearer cdnsk_live_xxxxxxxxxxxxxxxx"

OAuth 2.0 (user-context)

Use OAuth for apps that act on behalf of a coach. Standard Authorization Code flow with PKCE.

# 1. Redirect coach to authorize: https://app.cadencecoach.training/oauth/authorize? client_id={your_client_id}& redirect_uri={your_redirect_uri}& response_type=code& scope=clients:read+checkins:read+webhooks:write& code_challenge={pkce_challenge}& code_challenge_method=S256 # 2. Exchange code for token at: POST https://api.cadencecoach.training/oauth/token

Endpoints

Clients

GET/v1/clients

List all active clients on your roster. Paginated, 50 per page.

GET/v1/clients/:client_id

Retrieve a single client's profile, current program, recent check-ins, payment history.

POST/v1/clients

Create a new client (sends them an invite email with the install link).

POST/v1/clients/:client_id/messages

Send a coach-to-client message (delivered in their app inbox).

Check-ins

GET/v1/clients/:client_id/checkins

List a client's submitted check-ins. Filter by date range with ?from=YYYY-MM-DD&to=YYYY-MM-DD.

GET/v1/checkins/:checkin_id

Retrieve full check-in payload — photos, measurements, notes, RPE, wearable summary.

Programs

GET/v1/clients/:client_id/programs

List programs assigned to a client (current + historical).

POST/v1/clients/:client_id/programs

Create a new program (or trigger AI generation by passing { "ai_generate": true, "goal": "hypertrophy" }).

Webhooks

GET/v1/webhooks

List your registered webhook endpoints.

POST/v1/webhooks

Register a new webhook endpoint. See /cadence/integrations for the full list of supported events.

DELETE/v1/webhooks/:webhook_id

Remove a webhook subscription.

Rate limits

Rate limits are scoped to your coach account (not per-key). Limits are advisory — we'll send you a heads-up email at 80% utilization before any throttling. Burst capacity allows occasional spikes.

Coach (waitlist)
100 req/min
Read-only API. Webhook registration available.
Studio
500 req/min
Full read + write. 5 webhook endpoints.
Agency
2,000 req/min
Full read + write. Unlimited webhook endpoints. Priority support.

Idempotency

POST requests support an Idempotency-Key header. Pass a unique UUID per logical operation; if the request is retried with the same key within 24 hours, the API returns the cached response instead of duplicating the action. Strongly recommended for client-creation and program-assignment calls.

Error responses

All errors follow a standard JSON envelope:

{ "error": { "type": "validation_error", "code": "missing_field", "message": "Field 'email' is required.", "field": "email", "request_id": "req_01HXY..." } }

Common HTTP status codes:

SDKs

Official SDKs ship for Node.js, Python, and Ruby. Community SDKs for Go and PHP are linked from our GitHub.

# Node.js npm install @cadence/sdk # Python pip install cadence-sdk # Ruby gem install cadence-sdk

Frequently asked

When can Coach-tier coaches access the API?
Coach-tier API access is on the waitlist. We're prioritizing Studio + Agency rollouts first because their use cases (multi-coach reporting, custom CRM sync, agency-level integrations) are the highest leverage. Coach-tier API drops Q3 2026 if no major issues surface in Studio/Agency rollout.
Is there a sandbox / test environment?
Yes. Generate test API keys from your dashboard with the cdnsk_test_* prefix. Test mode requests don't affect production data and don't trigger real Stripe charges or client emails.
Does the API support GraphQL?
Not currently. The API is REST-only. We may add GraphQL if there's clear demand from Studio + Agency tier users.
Where do I get an API key?
Once you're on a Studio or Agency tier, generate keys from your dashboard at /dashboard/api-keys. Coach-tier coaches: email us to join the waitlist.
Are API requests logged?
Yes, for debugging — request timestamps, response codes, and request IDs only. We do NOT log request bodies (which would contain client PII). Logs retain 30 days, then are purged.