Docs

Quickstart

From zero to a successful authenticated request in under five minutes. If you only have time for one page, this is it.

1. Get your API key

Tendral issues a bearer token (tk_live_*) per organization, scoped to one or more of tokens:read, events:read, recipients:read. Tokens are delivered via 1Password share link during integration kickoff. The plaintext is shown exactly once at issuance — store it in your secrets manager immediately.

See Authentication for full details on scopes, rotation, and the multi-token roll pattern.

2. Make your first call

The Partners API base URL is https://api.tendralhealth.com/v1/. Start with a health check (no auth needed), then a real authenticated list call:

# 1. Verify the API is reachable (no auth needed)
curl -s https://api.tendralhealth.com/v1/health | jq

# 2. Authenticated list call — replace with your tk_live_* bearer
TENDRAL_API_KEY="tk_live_xxxxxxxxxxxx"
curl -s "https://api.tendralhealth.com/v1/partners/stitched/tokens?since=2026-01-01T00:00:00Z&limit=1" \
  -H "Authorization: Bearer $TENDRAL_API_KEY" | jq

On success you'll get a list-shape response with has_more, next_cursor, and a data array — empty if no recipient records have been published since your since= timestamp.

3. Handle errors

Errors carry a Stripe-style envelope with error.type, error.code, error.doc_url, and error.request_id. Branch retry logic on type; surface request_id when reporting issues.

See the full Errors reference — every code is documented with retry guidance and sample responses.

4. Receive webhooks

Tendral fires three outreach events to the URL you register:

  • outreach.recipients_published — pre-arrival batch (the day before send)
  • outreach.email_sent — per-recipient delivery confirmation
  • outreach.email_bounced — hard-bounce notification

All signed with HMAC-SHA256 in Stripe-style multi-sig format. See the Webhooks reference for verification snippets in Node, Python, Go, and Ruby.

Where next