API Overview
Subscriberbot is designed API-first. Everything the dashboard, the Concierge, and the adapters do is available through a single GraphQL API, so any client or integration can build on the same surface.
Endpoint
POST https://graphqlworkspaces.burdenoff.com/workspaces/graphql
A single GraphQL endpoint serves all queries, mutations, and subscriptions.
The endpoint above is production. For alpha, use https://alphagraphqlworkspaces.burdenoff.com/workspaces/graphql. For local development, use http://localhost:4003/workspaces/graphql. Set BURDENOFF_ENV=local|alpha|prod to select the target automatically in CLI and SDK tools. See Environment Selection for details.
Authentication
Requests are authenticated with a bearer token tied to an Identity:
POST /graphql HTTP/1.1
Host: graphqlworkspaces.burdenoff.com
Authorization: Bearer <token>
Content-Type: application/json
For workspace-scoped operations, the platform also requires a workspace token. SDKs and the CLI handle this automatically after you select a workspace.
See Authentication for OAuth2 flows, token refresh, and M2M client credentials.
The shape of the API
The API mirrors the domain entities. The main types you will work with:
| Type | Description |
|---|---|
Identity | A user or organization. |
Provider | A service provider in the registry. |
Relationship | A subscription, membership, license, or contract. |
Plan | A pricing model. |
PaymentInstrument | A card, bank, wallet, or UPI handle. |
Entitlement | What a relationship grants. |
Asset | A document attached to a relationship. |
Policy | An automation rule. |
Queries
query MySubscriptions {
subListRelationships(filter: { status: ACTIVE }) {
id
provider { name category }
plan { name price interval }
renewalDate
healthScore
entitlements { name value }
}
}
Mutations
mutation CancelUnused {
subCancelRelationship(id: "rel_123", reason: UNUSED) {
id
status
effectiveDate
}
}
Subscriptions (real-time events)
Clients can subscribe to the event bus to react in real time:
subscription {
events(types: [RENEWAL_DETECTED, TRIAL_ENDING]) {
type
relationship { id provider { name } }
occurredAt
}
}
SDKs and adapters
- Node SDK —
@subscriberbot/sdk - Python SDK —
subscriberbot-sdk - CLI —
@subscriberbot/cli - For provider integrations, see the Adapter Framework and Build an Adapter guide.
Conventions
- GraphQL-first — one typed schema for everything.
- Identity-scoped — every request operates within the calling Identity's graph.
- Event-driven — state changes are observable through subscriptions and webhooks.
- Prefixing — product-owned types are prefixed
Sub*and root fieldssub*to avoid supergraph collisions. - RBAC — every Query/Mutation field carries an
@rbacdirective; the gateway enforces it.