API Documentation

Create burn-after-reading links and encrypted messages programmatically.

Authentication

All API access requires a paid plan. Authenticate every request with a Bearer token in the Authorization header. You'll receive your API key after subscribing.

curl -H "Authorization: Bearer bla_live_your_api_key_here" \
  https://brnlk.com/api/v1/links

Base URL

https://brnlk.com/api/v1

Endpoints

POST/v1/links

Create a one-time-use redirect link. After a single visit, the link is permanently burned.

Request Body

{
  "url": "https://example.com/secret-page",
  "expires_in": 3600  // optional, seconds until expiry
}

Response 201

{
  "id": "aB3xYz",
  "url": "https://brnlk.com/aB3xYz",
  "created_at": "2026-04-13T12:00:00.000Z",
  "expires_at": "2026-04-13T13:00:00.000Z"
}
POST/v1/messages

Create a one-time-use encrypted message. The content should be pre-encrypted on the client side for end-to-end encryption, or sent as plaintext if encryption is not needed.

Request Body

{
  "content": "This message will self-destruct",
  "expires_in": 86400  // optional, seconds until expiry
}

Response 201

{
  "id": "kL9mNp",
  "url": "https://brnlk.com/msg/kL9mNp",
  "created_at": "2026-04-13T12:00:00.000Z",
  "expires_at": "2026-04-14T12:00:00.000Z"
}
GET/v1/status/:slug

Check whether a link or message has been viewed. This is a read-only endpoint — it does not burn the link. Only works for links created by your API key.

Response 200

{
  "id": "aB3xYz",
  "type": "redirect",
  "burned": true,
  "created_at": "2026-04-13T12:00:00.000Z",
  "viewed_at": "2026-04-13T12:05:30.000Z",
  "expires_at": null
}
POST/v1/links/batch

Create up to 100 burn links in a single request.

Request Body

{
  "links": [
    { "url": "https://example.com/page-1" },
    { "url": "https://example.com/page-2", "expires_in": 7200 },
    { "url": "https://example.com/page-3" }
  ]
}

Response 201

{
  "count": 3,
  "links": [
    {
      "id": "aB3xYz",
      "original_url": "https://example.com/page-1",
      "url": "https://brnlk.com/aB3xYz",
      "created_at": "2026-04-13T12:00:00.000Z",
      "expires_at": null
    },
    ...
  ]
}
POST/v1/messages/batch

Create up to 100 burn messages in a single request.

Request Body

{
  "messages": [
    { "content": "Secret message 1" },
    { "content": "Secret message 2", "expires_in": 3600 }
  ]
}

Response 201

{
  "count": 2,
  "messages": [
    {
      "id": "kL9mNp",
      "url": "https://brnlk.com/msg/kL9mNp",
      "created_at": "2026-04-13T12:00:00.000Z",
      "expires_at": null
    },
    ...
  ]
}

Rate Limits & Quotas

PlanRequests/minMonthly quotaBatchPrice
Starter605,000Yes (up to 100)$9/mo
Pro30050,000Yes (up to 100)$29/mo
Enterprise1,000500,000Yes (up to 100)$99/mo

Error Responses

All errors return a consistent JSON structure:

{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded. Resets at 2026-04-13T12:01:00.000Z"
  }
}
StatusCodeDescription
400validation_errorInvalid request body or parameters
401unauthorizedMissing or invalid API key
403quota_exceededMonthly request quota exceeded
404not_foundLink not found or not owned by your key
429rate_limitedToo many requests per minute
500internal_errorServer error

Quick Start

Create a single burn link

curl -X POST https://brnlk.com/api/v1/links \
  -H "Authorization: Bearer bla_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/secret"}'

Create links in batch

curl -X POST https://brnlk.com/api/v1/links/batch \
  -H "Authorization: Bearer bla_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "links": [
      {"url": "https://example.com/page-1"},
      {"url": "https://example.com/page-2"},
      {"url": "https://example.com/page-3"}
    ]
  }'

Check if a link was viewed

curl https://brnlk.com/api/v1/status/aB3xYz \
  -H "Authorization: Bearer bla_live_your_api_key"