Authentication

Use workspace API keys for server integrations. Browser sessions use bearer tokens and stay separate from long-lived integration credentials.

Plan access: Every workspace can test a real integration. Free includes one restricted API key and 50,000 monthly management operations. Paid plans increase key, rate, upload, and operation allowances. If paid billing becomes inactive, paid capacity is paused rather than deleted.

Create a key

Workspace owners and admins create keys from Dashboard, Developers. The raw key is returned once and stored only as a hash after that response.

Authenticated request
curl "https://api.steadylink.io/api/assets/?limit=20" \
  -H "X-API-Key: $STEADYLINK_API_KEY"

Scopes

NameTypeDescription
assets:readscope

Read buckets, folders, files, revisions, upload status, and signed-link records.

assets:writescope

Create and mutate buckets, files, uploads, revisions, signed links, and conversions.

analytics:readscope

Read traffic, storage, object, and activity analytics.

workspace:readscope

Read workspace settings, members, invitations, and key metadata.

workspace:adminscope

Change workspace settings, members, invitations, and keys.

Send either Authorization: Bearer or X-API-Key. Requests containing both are rejected with 400.

Limits are shared by the workspace

All keys in one workspace draw from the same plan allowance. Creating more keys does not multiply traffic or monthly quotas. Responses include current rate-limit headers, and a limited request returns 429 with Retry-After.

Limit response headers

NameTypeDescription
RateLimitresponse header

Current request limit, remaining requests, and reset time for the active window.

RateLimit-Policyresponse header

The policy window applied to the request.

Retry-Afterresponse header

Seconds to wait before retrying a request that returned 429.

POST/api/workspaces/current/api-keys
201 Created

Create a scoped API key for the active workspace.

Required scopeworkspace:admin
Request body
{
  "name": "production uploader",
  "scopes": ["assets:read", "assets:write"],
  "expiresInDays": 90
}
Response
{
  "id": "key_uuid",
  "name": "production uploader",
  "key": "slk_...",
  "scopes": ["assets:read", "assets:write"],
  "createdAt": "2026-08-17T18:31:00",
  "expiresAt": "2026-11-15T18:31:00",
  "revokedAt": null
}