https://app.example.com/api/v1/biolinks
Authenticate with a workspace API key that has biolinks: permissions. The key chooses the workspace, so no workspace ID appears in the URL. IDs in paths are the id values the API returns.
New content starts paused
Pages and short links you create are paused. Build them, then make them live with Set page status or Set short link status. New pages get the same starter blocks as the dashboard.status cannot be changed through a normal update; only the status endpoints change it. Changing anything on an active page or link (including its blocks, theme and deletion) also needs the matching publish permission.
Revisions: If-Match
Every page and link has a revision, returned in the body and in the ETag header. Any change to an existing page or link, including its blocks, theme, status and duplication, must send it back:
- Missing:
428. Out of date (someone changed it since you read it):412. Read it again and retry. - Block changes return the page’s new revision as
page_revision. Use that for your next change. - Revisions are opaque strings, not version numbers. Don’t compare them.
Retries: Idempotency-Key
Every POST needs an Idempotency-Key header of 8–200 letters, digits, ., _, : or -.
- Retrying with the same key and the exact same body bytes within 24 hours returns the original response with
Idempotency-Replayed: true. - The same key with a different body returns
409, even if the JSON means the same thing. - A replay doesn’t repeat the original
ETagheader. Take the revision from the body.
Blocks
Use the block endpoints to change a page’s content; sendingblocks in a page update is refused.
- Get the catalogue lists every block type, its default content and a
write_schemashowing which fields you can set. - Updating a block merges the top-level
contentfields you send. A list you send replaces that whole list. - Commerce and embed blocks can’t be created or edited through the API. Existing ones come back with
content_supported: falseand are left alone when you edit other blocks. - Images and other assets are set by URL. The API doesn’t upload or fetch files.
- A page can have up to 200 blocks. Reordering needs every block ID exactly once.
Custom domains
- Connect a domain with its host name. It starts
pending. - Point the domain’s DNS at the platform.
- Verify a domain. This is queued and returns
202with an operation. - Poll Get a domain operation until it finishes, then check
ssl_activeon the domain. Verification alone doesn’t mean HTTPS is ready.
What else to know
- Lists return 25 items by default, up to 100 with
per_page. Pages and links can be filtered bystatusand searched withkeyword. - Form submissions use cursor pagination, newest first.
- Analytics give lifetime totals, a 7-day trend and 30-day breakdowns. Reading through the API never counts as a visit.
- An
activepage can still be unreachable if its domain, plan or the platform blocks it. Checkdisabledand the domain’s status. - Passwords are write-only; responses only say
has_password. Pixel selections aren’t returned either.