Every Partner API request needs a bearer key. You get a live key (Documentation Index
Fetch the complete documentation index at: https://docs.peeker.ai/llms.txt
Use this file to discover all available pages before exploring further.
pk_live_…) and a sandbox key (pk_test_…) from the Partner portal. Sandbox completes orders instantly with synthetic data and never bills. Switch to live once shapes match.
Get a key
Open the Partner portal
Go to Settings → API.
Create a key
Pick New key, label it, and choose a permission preset. You’ll see the secret once — copy it now.
Send the key on every request
Authorization: Bearer <key>. No other auth schemes are accepted.
Verify with GET /me
GET /me returns the partner record and the key’s environment + preset. It’s the cheapest possible health check — use it as your first call.
200 with api_key.environment: "test" confirms you’re hitting sandbox routes.
Permission presets
Keys are scoped at creation time. The active preset shows up onGET /me as api_key.permission_preset.
| Preset | Reads | Writes |
|---|---|---|
full | All resources | Everything — users, bundles, domains, orders, swaps, imports, forwarding. |
limited | All resources | Domain availability and quote estimates only. No order creation, swaps, users, bundles, or forwarding. |
read | All resources | None — every write returns 403 forbidden. |
Rotate a key without downtime
Roll your deployment
Push the new key to your environment. Both keys work in parallel during the rollout window.
Track requests with Peeker-Request-Id
Every response — success or error — includes a Peeker-Request-Id header. Log it. When you contact support, this is what we look up.
What an unauthorized response looks like
401 Unauthorized. Common causes: missing Authorization header, malformed prefix, or revoked key.
A 403 forbidden response means the key is valid but doesn’t have permission for the action. Use a full key (or rotate the existing one to full) for write endpoints.