API keys
A key is a secret string that looks like:string[]
The permissions granted to the key. Currently every key needs the
resolve scope to call
the resolve endpoint. Requests with a key that lacks the required scope return
forbidden_scope (403).number
A per-minute request limit (default 60/min, configurable per key in the dashboard).
See Rate limits.
number | null
An optional cap on resolve calls per UTC day.
null means no daily cap. See
Rate limits.The Authorization header
Send the key in theAuthorization header on every request:
invalid_key (401):
Scopes
Scopes describe what a key is allowed to do. The only scope today is:
The read endpoints (
/v1/jobs/{id}, /v1/account, /v1/providers) are available to any
valid key. A key without resolve can still read its account and job history but cannot
start new resolves — those calls fail with forbidden_scope.
Creating a key
1
Open the dashboard
2
Create a key
Name the key, confirm the
resolve scope, and optionally set a custom per-minute rate
limit or daily quota.3
Copy and store it
The full
sk_live_… value is shown once. Store it in your secret manager or
environment (LINKSKIPPER_API_KEY). You cannot recover it later — only rotate it.The webhook signing secret
If you use webhooks, each key also has a signing secret that looks like:LINKSKIPPER_WEBHOOK_SECRET and pass it to verifyWebhook (JS) or Webhook::verify
(PHP). See Webhooks for the full signature scheme.
The webhook secret is different from the API key. The API key authenticates your requests
to Link Skipper; the webhook secret verifies webhook requests from Link Skipper.
