Developer: API overview

The BoostUp API is a JSON API built with FastAPI. The web app, the Hermes employee and your own tools use the same endpoints.

Schema

The live OpenAPI schema is at /openapi.json on the API host. A readable view of it is in the API reference.

Authentication

Browsers authenticate with a session cookie set by POST /auth/login or POST /auth/register:

  • bu_session: httpOnly, SameSite=Lax, Secure in production.
  • bu_csrf: readable by the page. Every POST, PATCH and DELETE must send its value in the X-CSRF-Token header. Requests from a foreign Origin are refused.

Scoped tokens for the Hermes employee arrive with agent provisioning.

Organization context

Most endpoints act inside one organization. By default this is your active organization. To pick another one you belong to, send X-Org-Id: <organization id>. Asking for an organization you do not belong to returns 404, the same answer as for one that does not exist.

Main endpoints

AreaEndpoints
AuthPOST /auth/register, POST /auth/login, POST /auth/logout, GET /auth/me, POST /auth/verify, POST /auth/password/forgot, POST /auth/password/reset
OrganizationsGET /orgs, POST /orgs, GET /orgs/{id}/members, POST /orgs/{id}/members (invite), PATCH and DELETE /orgs/{id}/members/{membership_id}, POST /invites/{id}/accept
BrandsGET /brands, POST /brands, GET, PATCH, DELETE /brands/{id}, POST /brands/{id}/websites
ApprovalsGET /approvals, POST /approvals, POST /approvals/{id}/decision
JobsGET /jobs, GET /jobs/{id}, POST /jobs/ping, POST /jobs/{id}/cancel
UsageGET /usage/summary, GET /usage/records
SupportGET and POST /support/tickets, GET and POST /support/feature-requests, POST and DELETE /support/feature-requests/{id}/vote
HealthGET /health

Errors

Errors are JSON with a detail field. Notable status codes:

CodeMeaning
401Not signed in or session expired
402Plan limit reached, or a provider budget would be exceeded (code: budget_exceeded)
403Your role is not allowed to do this, or the CSRF token is missing
404Not found, including anything that belongs to another organization
409Conflict, for example a duplicate invitation or removing the last owner
503A provider is not configured on this deployment