API keys
A key is a secret string that looks like: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).A per-minute request limit (default 60/min, configurable per key in the dashboard).
See Rate limits.
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:| Scope | Grants |
|---|---|
resolve | Call POST /v1/resolve to resolve links. |
/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
Open the dashboard
Create a key
Name the key, confirm the
resolve scope, and optionally set a custom per-minute rate
limit or daily quota.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.
