The public surface

Everything a third party can fetch from Candid Beacon. Three URLs, all GET, all unauthenticated. This is the complete list - there is nothing else.

The three URLs

Replace :username with the freelancer’s Candid Beacon username throughout.

URLReturns
/beacon/:usernameThe full availability page as server-rendered HTML. Details.
/beacon/:username/og-imageA PNG for link previews. Details.
/beacon/:username/badgeThe badge as a standalone HTML document. Details.

There is a fourth address you will use in practice - /embed/badge?u=:username. It is the embeddable wrapper around the badge document, and it is a static file rather than a route, for reasons the badge page explains. It is what goes in your <iframe>.

What there is not

Worth stating explicitly, so nobody spends an afternoon looking:

  • No write API. Nothing a third party can call changes anything.
  • No credential. No API key, no token, no OAuth. Every route above is open, and there is no authenticated route a third party is meant to reach.
  • No way to read the inputs. A freelancer’s jobs, clients, capacity settings, waitlist and contacts are not exposed by any route, at any level of access. Only the published summary is public.
  • No webhooks out. Nothing notifies your system when somebody’s availability changes. Poll the badge or the page.

If an integration seems to need one of those, it is not something this product exposes.

Two properties you can rely on

  • None of the three can show more than the others. The badge and the card read the same published snapshot the page does, through the same code. Choose whichever fits your surface; you are not choosing a detail level.
  • The data is published, not live. Every one of them serves the last snapshot the freelancer chose to publish. None of them recomputes, and none of them reflects work the freelancer has not published.

All of this in one file

If you would rather hand the whole surface to a developer - or to an AI assistant - in a single fetch, there is a plain-text document that describes it. See The integration file.