Browse the docs

Call the API

Make a token, name the business, and call any operation over HTTPS.

Every operation in Allpage is one endpoint: https://allpage.site/api/v1/operations/<operation id>. Reads are GET, changes are POST. The full reference, generated from the same registry, is at https://allpage.site/docs/api and as OpenAPI 3.1 at https://allpage.site/api/v1/openapi.json.

1. Get a token

The owner makes one under Settings, For developers and picks what it can see and change (api.createToken). Send it as Authorization: Bearer ap_pat_…. A connected app's OAuth token works the same way.

2. Name the business

A token from Settings works with the business it was made on. An app's token names the business per request with the Allpage-Business: biz_… header; leave it out with several and you get 409 choose_business with the choices.

3. Call it

curl https://allpage.site/api/v1/operations/customers.search?q=maya \
  -H "Authorization: Bearer $ALLPAGE_TOKEN"
curl -X POST https://allpage.site/api/v1/operations/customers.add \
  -H "Authorization: Bearer $ALLPAGE_TOKEN" \
  -H "Idempotency-Key: 7b1c…" \
  -H "Content-Type: application/json" \
  -d '{"name": "Maya Chen", "email": "maya@example.com"}'

Send an Idempotency-Key on every change so a retry can't do it twice.

Start a business

Starting a business and listing the owner's businesses take no Allpage-Business header. With a connected app's token, this works before the owner has any business:

curl -X POST https://allpage.site/api/v1/operations/business.create \
  -H "Authorization: Bearer $ALLPAGE_TOKEN" \
  -H "Idempotency-Key: 3f9a…" \
  -H "Content-Type: application/json" \
  -d '{"stage": "starting", "name": "Rise Bakery", "kind": "baker", "location": "Portland, OR", "email": "hello@risebakery.com"}'

It answers with businessId. Send it as Allpage-Business from then on. Then read onboarding.next for the next setup step, do it, and read it again until step is null. A retry with the same Idempotency-Key finishes the same business. organizations.list lists the owner's businesses.

Answers

  • 200 with status: done.
  • 202 with proposed (waits for the owner at approveAt) or pending (read Location until it's done).
  • A problem (application/problem+json) with code and detail otherwise. A needs answer says what to do next. Codes are listed at https://allpage.site/docs/api/errors.

Ids say what they name (cus_…, bk_…): see typed ids.

Versions

Each token and connected app is pinned to the API version that was newest when it was made. A request without an Allpage-Version header speaks that version, so a later change doesn't break what you built. Send Allpage-Version: <date> to pick another. Every answer names its version in the same header.