Skip to content

Links

Create, list, update, delete, toggle, and bulk-create links; fetch QR images.

Updated View as Markdown

GET /api/v1/links — scope links:read.

Param Type Notes
search string Matches slug, title, destination URL
folder_id int Filter by folder
tag string Filter by tag name
status string active, disabled, archived, expired, exhausted, blocked, pending_review
page, per_page int per_page 1–100, default 25
{
  "data": [
    {
      "id": 42,
      "slug": "spring-sale",
      "short_url": "https://in.bio/spring-sale",
      "destination_url": "https://example.com/sale",
      "title": "Spring sale",
      "status": "active",
      "redirect_type": 302,
      "folder_id": 3,
      "tags": ["marketing"],
      "expires_at": null,
      "click_limit": null,
      "has_password": false,
      "total_clicks": 1240,
      "unique_clicks": 981,
      "last_clicked_at": "2026-07-21T18:03:11+00:00",
      "created_at": "2026-06-01T09:00:00+00:00"
    }
  ],
  "links": { "next": "..." },
  "meta": { "current_page": 1, "total": 57 }
}

POST /api/v1/links — scope links:write. Only destination_url is required.

Field Type Notes
destination_url string http/https, max 2048 chars
slug string 4–64 chars [a-zA-Z0-9-_]; omitted → random
title, description, notes string Optional metadata
redirect_type int 301, 302 (default), 307
folder_id int Must be one of your folders
tags string[] Created on the fly
utm object {source, medium, campaign, term, content}
expires_at, fallback_url Requires link expiration (Pro+)
click_limit int Requires click limits (Pro+)
password string Requires password protection (Pro+)
qr object Optional QR design, same fields as the studio

Returns 201 with the link resource. Hitting your monthly link quota returns 422 with error.type = "entitlement".

Bulk create

POST /api/v1/links/bulk — scope links:write, Business (bulk actions feature). Body: {"links": [...]}, up to 100 objects with the same fields as create. Rows fail independently:

{
  "data": {
    "created": [{ "id": 43, "slug": "a1" }],
    "failed": [{ "index": 1, "error": "This slug is already taken." }]
  }
}

Read, update, delete

  • GET /api/v1/links/{id}links:read. 404 if not found or not yours.
  • PATCH /api/v1/links/{id}links:write. Any subset of the create fields plus slug. Editing destination_url requires the edit-destination feature (Pro+) and re-triggers a safety scan.
  • DELETE /api/v1/links/{id}links:write. 204 No Content; the link stops redirecting immediately.

Enable / disable

POST /api/v1/links/{id}/enable · POST /api/v1/links/{id}/disable — scope links:write. Only toggles between active and disabled; any other current status returns 409 with error.type = "state".

QR image

GET /api/v1/links/{id}/qr — scope links:read.

Param Notes
format png (default) or svg
size 64–2048 px

Returns raw image bytes using the link’s saved QR design. The code encodes the short URL, so destination edits never invalidate printed codes.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close