WarpLink
API Reference

API Overview

WarpLink REST API reference — authentication, rate limiting, and error handling.

Base URL

All API requests use the following base URL:

https://api.warplink.app/v1

Authentication

Authenticate requests using a Bearer token in the Authorization header:

curl -H "Authorization: Bearer wl_live_xxx" \
  https://api.warplink.app/v1/links

API keys are created in the WarpLink dashboard. Keys use the prefix wl_live_ for production and wl_test_ for test environments. The full key is only shown once at creation time — store it securely.

Required Scopes

Each endpoint requires specific scopes on the API key:

ScopeDescription
links:readRead link data
links:writeCreate, update, and delete links
apps:readRead app configuration
apps:writeCreate, update, and delete apps
analytics:readRead click analytics
attribution:writeSubmit attribution match requests

Rate Limiting

All API keys are rate limited to 60 requests per minute.

Rate limit headers are included on every response:

HeaderDescription
X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRequests remaining
X-RateLimit-ResetSeconds until window resets

When the rate limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header.

Error Format

All errors return a consistent JSON structure:

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Link not found",
    "details": {
      "fields": [
        { "field": "destination_url", "message": "Invalid URL" }
      ]
    }
  }
}

Error Codes

HTTP StatusCodeDescription
400VALIDATION_ERRORRequest body or query params failed validation
401UNAUTHORIZEDMissing or invalid API key
403FORBIDDENAPI key lacks required scope
404NOT_FOUNDResource not found
409SLUG_TAKEN / DUPLICATE_APPResource already exists
410GONEResource has expired
429RATE_LIMIT_EXCEEDEDToo many requests
500INTERNAL_ERRORServer error

Pagination

List endpoints return paginated results:

{
  "data": [...],
  "pagination": {
    "total": 42,
    "limit": 20,
    "offset": 0,
    "has_more": true
  }
}

Use limit (1–100, default 20) and offset (default 0) query parameters to page through results.

On this page