Your Bio Page Now Has an API

API keys are live. Manage your Selfbase pages from your own scripts, dashboards, or AI tools — no dashboard clicking required.

Egon Sale

Egon Sale

May 5, 20266 MIN READ
Share:
Your Bio Page Now Has an API

There is a small but significant moment in any tool's life when it stops being a destination and starts being a building block.

For Selfbase, that moment is now.

We just shipped API keys, which means your pages no longer live exclusively inside our dashboard. You can list them from a script, create them from a CI job, update them from a Raycast extension, or push changes from whatever weird internal tool your team has running on a Friday afternoon.

The page is yours. Now the workflow is yours too.

Why we added an API

If you only ever build one page, you probably don't need an API. The dashboard is faster.

But the moment you start managing several pages — for clients, for campaigns, for product launches that all need a slightly different "smart link" — clicking through the UI for every small change starts to feel a lot like data entry.

API keys turn that boring repetition into a function call.

You can:

  • Spin up a new page when a customer signs up
  • Sync your latest content into a "Latest" block automatically
  • Toggle pages between published and unpublished from a script
  • Generate dozens of campaign pages from a CSV instead of by hand

We had a lot of users asking for this politely. And a few asking for it less politely. Both groups should now be happier.

What you actually get

The API is REST, the format is JSON, and authentication is a bearer token. Nothing surprising, which is the highest compliment you can give an API.

You can:

  • Manage pages — list, create, fetch, rename, publish, unpublish
  • Manage blocks — add, update, reorder, hide, or delete the content units inside a page (links, headers, forms, products, embeds, the lot)
  • Update settings — page-level config like avatars, slugs, SEO metadata

If it exists in the dashboard, the goal is for it to exist in the API. We are not fully there yet, but we are close.

The full reference lives at selfbase.co/developers.

A 60-second tour

Create a key in Profile → API Keys. Copy it once — we only show it once, on purpose.

Then call the API like you would any other:

curl https://selfba.se/api/pages \
  -H "Authorization: Bearer YOUR_API_KEY"

That returns your pages. Add a new one:

curl -X POST https://selfba.se/api/pages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug": "spring-campaign", "title": "Spring Campaign"}'

Then drop a header onto it:

curl -X POST https://selfba.se/api/pages/spring-campaign/blocks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"block": {"name": "header", "label": "Header"}, "content": {"text": "Welcome"}}'

That is the whole shape of it. Pages contain blocks. Blocks contain content. You manipulate either.

Where this gets interesting

The simplest use case is automation: stop doing in the UI what a script can do for you. That alone justifies the API for most heavy users.

But the more interesting use cases come from treating Selfbase as infrastructure:

  • Agencies running 50 client pages can keep them all consistent without 50 manual updates.
  • Newsletter operators can sync their latest issue to a "Featured" block automatically.
  • Product teams can generate per-customer landing pages programmatically.
  • Creators with multiple offers can spin up campaign-specific pages in seconds and tear them down when the campaign ends.

The dashboard is great for one page that you tend like a houseplant. The API is for everything else.

The fine print, briefly

A few things worth knowing:

  • Up to 5 API keys per account. Rotate freely.
  • Keys do not expire by default — but you can revoke them whenever you want.
  • Rate limit is 150 requests per minute, which is plenty for nearly everything except a misbehaving script. (If your script is misbehaving, the rate limit is doing you a favor.)
  • Every error returns a clear status code and a statusMessage field, so you don't have to guess what went wrong.

Standard stuff, intentionally.

Where we go from here

The direction is clear: anything you can do in Selfbase, you should also be able to do to Selfbase from anywhere else.

Webhooks, richer block content endpoints, and bulk operations are all on the way. If there's a specific workflow you're trying to automate, tell us — those tend to jump the queue.

Full reference at selfbase.co/developers. If you build something interesting with it, we'd love to see it.

If you build something cursed with it, we'd also love to see that.

Photo by Jakub Żerdzicki on Unsplash