Aggre

API reference

75 endpoints, read from the running API's own OpenAPI document. For the walkthrough, keys and MCP setup, start with the guide.

Base URL
https://aggre.orbbit.ai
Auth
x-aggre-api-key: aggre_sk_… or Authorization: Bearer aggre_sk_…
Errors
JSON { "error": "…" } with the status code. A refusal names what was refused and why.
Try it
Swagger UI sends real requests; openapi.json is the raw document.

Use the data

Any key that can read the datasets.

MCP over HTTP

Every MCP tool, callable as plain JSON. List the tools, then call one by name.

MCP call

POST/v1/mcp/call

Request body · McpCallRequest
NameTypeNotes
argumentsany
namerequiredstring
200 response · McpCallResponse
200 response fields
NameTypeNotes
namerequiredstring
resultrequiredany

Errors: 400, 401, 403

List MCP tools

GET/v1/mcp/tools

200 response · McpToolResponse
200 response fields
NameTypeNotes
toolsrequiredany[]

Catalog

The platform datasets your plan lets you select, and your organization's selections.

Get catalog

GET/v1/catalog

Parameters
NameInTypeNotes
org_idqueryuuidStaff only: another organization's view
200 response · CatalogResponse
200 response fields
NameTypeNotes
categoriesrequiredCatalogCategory[]The platform's categories (a flat list; nest by `parent_id`), each with the datasets filed directly under it.
limitrequiredCatalogLimit
org_idrequireduuid
otherrequiredCatalogDataset[]Catalog datasets in no category, plus the org's own datasets.
tierrequiredTier
usedrequiredintegerSelections counted against `limit.total` right now.

Errors: 401, 403, 404

Select catalog dataset

POST/v1/catalog/selections

Request body · SelectCatalogDatasetRequest
NameTypeNotes
dataset_idrequireduuid
org_iduuid | nullStaff only: select on behalf of another organization.
200 response · OrgDatasetSelection
200 response fields
NameTypeNotes
created_atrequiredstring
dataset_idrequireduuid
org_idrequireduuid

Errors: 401, 403, 404, 409

Deselect catalog dataset

DELETE/v1/catalog/selections/{dataset_id}

Parameters
NameInTypeNotes
dataset_idrequiredpathuuidDataset ID
org_idqueryuuidStaff only: another organization

204 response

Errors: 401, 403, 404

Datasets

Datasets your key can read: their records, versions and counts.

List datasets

GET/v1/datasets

200 response · PaginatedDataset
200 response fields
NameTypeNotes
itemsrequiredDataset[]
totalrequiredinteger

Errors: 500

Create dataset

POST/v1/datasets

Request body · CreateDatasetRequest
NameTypeNotes
categorystring | null
descriptionstring | null
governanceany
namerequiredstring
org_iduuid | null
schemaany
slugrequiredstring
tagsstring[] | null
200 response · Dataset
200 response fields
NameTypeNotes
categorystring | null
created_atrequiredstring
descriptionstring | null
governancerequiredany
idrequireduuid
namerequiredstring
org_idrequireduuid
schemarequiredany
slugrequiredstring
statusrequiredDatasetStatus
tagsrequiredstring[]
updated_atrequiredstring
versionrequiredinteger

Errors: 500

Get customer dataset stats

GET/v1/datasets/stats

200 response

Errors: 401

Get dataset

GET/v1/datasets/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
200 response · Dataset
200 response fields
NameTypeNotes
categorystring | null
created_atrequiredstring
descriptionstring | null
governancerequiredany
idrequireduuid
namerequiredstring
org_idrequireduuid
schemarequiredany
slugrequiredstring
statusrequiredDatasetStatus
tagsrequiredstring[]
updated_atrequiredstring
versionrequiredinteger

Errors: 404

Update dataset

PATCH/v1/datasets/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
Request body · UpdateDatasetRequest
NameTypeNotes
categorystring | null
descriptionstring | null
governanceany
namestring | null
schemaany
statusnull | DatasetStatus
tagsstring[] | null
200 response · Dataset
200 response fields
NameTypeNotes
categorystring | null
created_atrequiredstring
descriptionstring | null
governancerequiredany
idrequireduuid
namerequiredstring
org_idrequireduuid
schemarequiredany
slugrequiredstring
statusrequiredDatasetStatus
tagsrequiredstring[]
updated_atrequiredstring
versionrequiredinteger

Errors: 400, 404

List records

GET/v1/datasets/{id}/records

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
limitqueryintegerPage size, 1-500 (omit both limit and offset for the full dump)
offsetqueryintegerPage offset
200 response · PaginatedRecord
200 response fields
NameTypeNotes
itemsrequiredRecord[]
totalrequiredinteger

Errors: 404

Count records

GET/v1/datasets/{id}/records/count

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
200 response · RecordCountResponse
200 response fields
NameTypeNotes
countrequiredinteger

Errors: 404

Republish dataset

POST/v1/datasets/{id}/republish

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
200 response · RepublishResponse
200 response fields
NameTypeNotes
datasetrequiredDataset
jobrequiredJob
recordsrequiredinteger
versionrequiredDatasetVersion

Errors: 400, 404

List dataset versions

GET/v1/datasets/{id}/versions

Parameters
NameInTypeNotes
idrequiredpathuuidDataset ID
200 response · PaginatedDatasetVersion
200 response fields
NameTypeNotes
itemsrequiredDatasetVersion[]
totalrequiredinteger

Errors: 404

Your account

Owners and admins of an organization.

API keys

Create, list and revoke keys. A key never carries more than the person who made it.

List API keys

GET/v1/api-keys

Parameters
NameInTypeNotes
org_idqueryuuidFilter to one organization (staff may name any)

200 response · ApiKey[]

Errors: 403, 500

Create API key

POST/v1/api-keys

Request body · CreateApiKeyRequest
NameTypeNotes
dataset_idsuuid[] | nullDatasets the key may read. Omit for every dataset the org can read; an empty list is refused rather than read as "nothing".
namerequiredstring
org_iduuid | null
scopesPermission[] | null
200 response · ApiKeyCreated
200 response fields
NameTypeNotes
keyrequiredApiKey
secret_oncerequiredstring

Errors: 500

Revoke API key

POST/v1/api-keys/{id}/revoke

Parameters
NameInTypeNotes
idrequiredpathuuidAPI key ID
200 response · ApiKey
200 response fields
NameTypeNotes
created_atrequiredstring
dataset_idsuuid[] | nullThe datasets this key may read. `None` means every dataset its org can read; a list narrows the key further, never widens the org's access.
expires_atstring | null
idrequireduuid
namerequiredstring
org_idrequireduuid
prefixrequiredstring
revoked_atstring | null
scopesrequiredPermission[]
secret_hashrequiredstring

Errors: 401, 403, 404

Usage

Metered calls, for the organization's monthly total.

List usage events

GET/v1/usage

200 response · UsageEvent[]

Errors: 401, 403

Billing

The plan summary. Changing plans and credits is staff-only until payments go live.

Create credit entry

POST/v1/billing/credits

Request body · CreateCreditRequest
NameTypeNotes
amountrequiredinteger
metadataany
org_iduuid | nullThe org to credit (staff may name any); defaults to the caller's.
reasonrequiredstring
200 response · CreditLedgerEntry
200 response fields
NameTypeNotes
amountrequiredinteger
created_atrequiredstring
idrequireduuid
metadatarequiredany
org_idrequireduuid
reasonrequiredstring

Errors: 400, 401, 403

Create invoice

POST/v1/billing/invoices

Request body · CreateInvoiceRequest
NameTypeNotes
amount_duerequiredinteger
currencyrequiredstring
hosted_invoice_urlstring | null
period_endstring | null
period_startstring | null
providerstring | null
provider_invoice_idstring | null
statusrequiredstring
200 response · InvoiceRecord
200 response fields
NameTypeNotes
amount_duerequiredinteger
created_atrequiredstring
currencyrequiredstring
hosted_invoice_urlstring | null
idrequireduuid
org_idrequireduuid
period_endstring | null
period_startstring | null
providerrequiredstring
provider_invoice_idstring | null
statusrequiredstring

Errors: 400, 401, 403

Stripe webhook

POST/v1/billing/stripe/webhook

Request body · StripeWebhookRequest
NameTypeNotes
datarequiredany
event_typerequiredstring
org_iduuid | null
200 response · StripeWebhookResponse
200 response fields
NameTypeNotes
acceptedrequiredboolean
actionrequiredstring
invoicenull | InvoiceRecord
subscriptionnull | BillingSubscription

Errors: 400, 401, 403

Upsert billing subscription

POST/v1/billing/subscription

Request body · UpsertSubscriptionRequest
NameTypeNotes
current_period_endstring | null
current_period_startstring | null
org_iduuid | null
providerstring | null
provider_subscription_idstring | null
statusrequiredstring
tierrequiredTier
200 response · BillingSubscription
200 response fields
NameTypeNotes
created_atrequiredstring
current_period_endstring | null
current_period_startstring | null
idrequireduuid
org_idrequireduuid
providerrequiredstring
provider_subscription_idstring | null
statusrequiredstring
tierrequiredTier
updated_atrequiredstring

Errors: 400, 401, 403

Billing summary

GET/v1/billing/summary

Parameters
NameInTypeNotes
org_idqueryuuidStaff only: another organization's summary
200 response · BillingSummary
200 response fields
NameTypeNotes
addon_dataset_slotsinteger
catalog_selectedintegerCatalog selections currently counted against the plan's limit.
credit_balancerequiredinteger
entitlementsrequiredEntitlements
invoicesrequiredInvoiceRecord[]
org_idrequireduuid
periodstringThe billing period `request_usage` covers, `YYYY-MM` (UTC).
request_usagerequiredintegerData-plane requests the org made in `period` (all keys and SSO sessions together) -- the number `entitlements.monthly_requests` caps.
subscriptionnull | BillingSubscription
tierrequiredTier

Errors: 401, 403, 404

X402 quote

POST/v1/x402/quote

Request body · X402QuoteRequest
NameTypeNotes
routerequiredstring
unitsinteger | null
200 response · X402Quote
200 response fields
NameTypeNotes
amountrequiredinteger
currencyrequiredstring
expires_atrequiredstring
idrequireduuid
payment_headerrequiredstring
routerequiredstring
unitsrequiredinteger

Errors: 400, 401, 403

X402 settle

POST/v1/x402/settle

Request body · X402SettleRequest
NameTypeNotes
amountrequiredinteger
currencyrequiredstring
proofstring | null
quote_idrequireduuid
routerequiredstring
200 response · X402SettleResponse
200 response fields
NameTypeNotes
acceptedrequiredboolean
ledger_entryrequiredCreditLedgerEntry

Errors: 400, 401, 403

Bring your own data

Keys with write access to their organization's datasets.

Sources

Where a dataset's records come from: preview a source, then run it.

List sources

GET/v1/sources

Parameters
NameInTypeNotes
dataset_idqueryuuidOptional dataset filter
200 response · PaginatedSource
200 response fields
NameTypeNotes
itemsrequiredSource[]
totalrequiredinteger

Errors: 500

Create source

POST/v1/sources

Request body · CreateSourceRequest
NameTypeNotes
configany
dataset_idrequireduuid
kindrequiredSourceKind
namerequiredstring
org_iduuid | null
schedule_interval_minutesinteger | null
slugrequiredstring
200 response · Source
200 response fields
NameTypeNotes
configrequiredany
created_atrequiredstring
dataset_idrequireduuid
enabledrequiredboolean
idrequireduuid
kindrequiredSourceKind
namerequiredstring
org_idrequireduuid
schedule_interval_minutesinteger | nullHow often the scheduler should automatically re-run this source, in minutes. `None` means manual-only (the pre-existing behavior).
slugrequiredstring
updated_atrequiredstring

Errors: 404

Get source

GET/v1/sources/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
200 response · Source
200 response fields
NameTypeNotes
configrequiredany
created_atrequiredstring
dataset_idrequireduuid
enabledrequiredboolean
idrequireduuid
kindrequiredSourceKind
namerequiredstring
org_idrequireduuid
schedule_interval_minutesinteger | nullHow often the scheduler should automatically re-run this source, in minutes. `None` means manual-only (the pre-existing behavior).
slugrequiredstring
updated_atrequiredstring

Errors: 404

Update source

PATCH/v1/sources/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
Request body · UpdateSourceRequest
NameTypeNotes
configany
enabledboolean | null
namestring | null
schedule_interval_minutesinteger | nullSet to change the schedule; `Some(0)` (or any non-positive value) clears it back to manual-only. `None` leaves it unchanged.
200 response · Source
200 response fields
NameTypeNotes
configrequiredany
created_atrequiredstring
dataset_idrequireduuid
enabledrequiredboolean
idrequireduuid
kindrequiredSourceKind
namerequiredstring
org_idrequireduuid
schedule_interval_minutesinteger | nullHow often the scheduler should automatically re-run this source, in minutes. `None` means manual-only (the pre-existing behavior).
slugrequiredstring
updated_atrequiredstring

Errors: 400, 404

Enqueue source

POST/v1/sources/{id}/enqueue

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 400, 404

Ingest source

POST/v1/sources/{id}/ingest

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
Request body · IngestRequest
NameTypeNotes
cursorstring | null
formatnull | DataFormat
job_iduuid | null
recordsrequiredany[]
200 response · IngestResponse
200 response fields
NameTypeNotes
acceptedrequiredinteger
cursorstring | null
errorsrequiredstring[]
jobrequiredJob
raw_archiverequiredRawArchive
recordsrequiredRecord[]
rejectedrequiredinteger

Errors: 400, 404

Preview source

POST/v1/sources/{id}/preview

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
limitqueryintegerPreview record limit, capped at 50
200 response · SourcePreviewResponse
200 response fields
NameTypeNotes
acceptedrequiredinteger
dataset_idrequireduuid
errorsrequiredstring[]
formatrequiredstring
recordsrequiredany[]
rejectedrequiredinteger
returnedrequiredinteger
source_idrequireduuid
totalrequiredinteger

Errors: 400, 404, 502

Same fire-and-poll shape as run_job (see the comment there) -- a source with a large enough backlog can take longer to fetch and ingest than a proxy's request timeout allows, so this starts the job and returns immediately rather than blocking the response on the whole run.

POST/v1/sources/{id}/run

Parameters
NameInTypeNotes
idrequiredpathuuidSource ID
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 400, 404, 502

Jobs

Pipeline runs and the errors they logged.

List error logs

GET/v1/error-logs

Parameters
NameInTypeNotes
job_idqueryuuidOptional job filter
source_idqueryuuidOptional source filter
dataset_idqueryuuidOptional dataset filter

200 response · PipelineErrorLog[]

Errors: 401, 403

List jobs

GET/v1/jobs

200 response · Job[]

Errors: 500

Create job

POST/v1/jobs

Request body · CreateJobRequest
NameTypeNotes
dataset_iduuid | null
kindrequiredJobKind
max_attemptsinteger | null
source_iduuid | null
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 500

Get job

GET/v1/jobs/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidJob ID
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 404

Claim job

POST/v1/jobs/{id}/claim

Parameters
NameInTypeNotes
idrequiredpathuuidJob ID
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 400, 404

Fetching + ingesting can take far longer than a proxy's request timeout once a source has tens of thousands of records (each paginated fetch is one round trip, and a big enough batch of records is still real work to validate and write). Doing that inline in the HTTP handler meant a slow run got its connection killed by the reverse proxy mid-flight, which silently dropped the in-flight future -- the job was left stuck at "running" forever, while whatever had already been written stayed in the dataset. So run_job only starts the job and returns immediately; the actual work happens in a spawned task, and callers poll GET /v1/jobs/{id} for the terminal status.

POST/v1/jobs/{id}/run

Parameters
NameInTypeNotes
idrequiredpathuuidJob ID
200 response · Job
200 response fields
NameTypeNotes
attemptsrequiredinteger
created_atrequiredstring
dataset_iduuid | null
errorstring | null
idrequireduuid
kindrequiredJobKind
max_attemptsrequiredinteger
source_iduuid | null
statusrequiredJobStatus
updated_atrequiredstring

Errors: 400, 404

Raw archives

The untouched payloads every run keeps.

List raw archives

GET/v1/raw-archives

200 response · PaginatedRawArchive
200 response fields
NameTypeNotes
itemsrequiredRawArchive[]
totalrequiredinteger

Errors: 500

Platform staff

Only Orbbit's own staff organization.

Categories

How catalog datasets are grouped.

List categories

GET/v1/categories

200 response · PaginatedCategory
200 response fields
NameTypeNotes
itemsrequiredCategory[]
totalrequiredinteger

Errors: 500

Create category

POST/v1/categories

Request body · CreateCategoryRequest
NameTypeNotes
descriptionstring | null
namerequiredstring
org_iduuid | null
parent_iduuid | null
slugrequiredstring
200 response · Category
200 response fields
NameTypeNotes
created_atrequiredstring
descriptionstring | null
idrequireduuid
namerequiredstring
org_idrequireduuid
parent_iduuid | null
slugrequiredstring
updated_atrequiredstring

Errors: 400, 404

Get category

GET/v1/categories/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID
200 response · Category
200 response fields
NameTypeNotes
created_atrequiredstring
descriptionstring | null
idrequireduuid
namerequiredstring
org_idrequireduuid
parent_iduuid | null
slugrequiredstring
updated_atrequiredstring

Errors: 404

Update category

PATCH/v1/categories/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID
Request body · UpdateCategoryRequest
NameTypeNotes
clear_parentbooleanMove the category to the top level, clearing parent_id. Distinct from parent_id being absent (leave the parent unchanged) -- ordinary JSON can't tell "omitted" from "explicitly null" without extra deserializer plumbing, so this is a plain flag instead.
descriptionstring | null
namestring | null
parent_iduuid | null
200 response · Category
200 response fields
NameTypeNotes
created_atrequiredstring
descriptionstring | null
idrequireduuid
namerequiredstring
org_idrequireduuid
parent_iduuid | null
slugrequiredstring
updated_atrequiredstring

Errors: 400, 404

Delete category

DELETE/v1/categories/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID

204 response

Errors: 404

List category datasets

GET/v1/categories/{id}/datasets

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID
200 response · PaginatedDataset
200 response fields
NameTypeNotes
itemsrequiredDataset[]
totalrequiredinteger

Errors: 404

Add category dataset

POST/v1/categories/{id}/datasets

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID
Request body · AddCategoryDatasetRequest
NameTypeNotes
dataset_idrequireduuid
200 response · CategoryDataset
200 response fields
NameTypeNotes
added_atrequiredstring
category_idrequireduuid
dataset_idrequireduuid

Errors: 404

Remove category dataset

DELETE/v1/categories/{id}/datasets/{dataset_id}

Parameters
NameInTypeNotes
idrequiredpathuuidCategory ID
dataset_idrequiredpathuuidDataset ID

204 response

Errors: 404

Grants

Category access given to an organization outside its plan.

List subscriptions

GET/v1/subscriptions

Parameters
NameInTypeNotes
org_idqueryuuidFilter to one organization's subscriptions

200 response · Subscription[]

Errors: 401, 403

Create subscription

POST/v1/subscriptions

Request body · CreateSubscriptionRequest
NameTypeNotes
category_idrequireduuid
org_idrequireduuid
200 response · Subscription
200 response fields
NameTypeNotes
category_idrequireduuid
created_atrequiredstring
org_idrequireduuid

Errors: 401, 403, 404

Delete subscription

DELETE/v1/subscriptions/{org_id}/{category_id}

Parameters
NameInTypeNotes
org_idrequiredpathuuidOrganization ID
category_idrequiredpathuuidCategory ID

204 response

Errors: 401, 403, 404

Administration

Every organization, user and key, and platform status.

List orgs

GET/v1/admin/orgs

Parameters
NameInTypeNotes
qquerystringMatches slug, name or a member's email (case-insensitive)
limitqueryintegerPage size, 1-200 (default 50)
offsetqueryintegerPage offset
200 response · AdminOrgList
200 response fields
NameTypeNotes
itemsrequiredAdminOrgRow[]
totalrequiredinteger

Errors: 401, 403

Get org

GET/v1/admin/orgs/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidOrganization ID
200 response · AdminOrgDetail
200 response fields
NameTypeNotes
api_keysrequiredApiKey[]
billingrequiredBillingSummary
grantsrequiredAdminGrant[]
membersrequiredAdminMember[]
orgrequiredOrganization
selectionsrequiredAdminSelection[]
usagerequiredAdminUsage

Errors: 401, 403, 404

Update org

PATCH/v1/admin/orgs/{id}

Parameters
NameInTypeNotes
idrequiredpathuuidOrganization ID
Request body · AdminUpdateOrgRequest
NameTypeNotes
addon_dataset_slotsinteger | null
namestring | null
tiernull | Tier
200 response · Organization
200 response fields
NameTypeNotes
addon_dataset_slotsintegerCatalog datasets this org may select on top of its tier's `catalog_datasets`. Staff-set for now; a paid add-on later.
created_atrequiredstring
idrequireduuid
kindrequiredOrganizationKindGitHub-style account model: every Orbbit SSO login gets a Personal org (auto-provisioned, sole Owner) so customers never need to be granted membership anywhere just to use Aggre. Team orgs are for multi-member organizations -- including Orbbit's own internal staff org -- and are created explicitly. Enterprise is a billing `Tier` on a Team org, not a separate kind, since org shape and billing tier are independent axes.
namerequiredstring
slugrequiredstring
tierrequiredTier

Errors: 400, 401, 403, 404

Add org member

POST/v1/admin/orgs/{id}/members

Parameters
NameInTypeNotes
idrequiredpathuuidOrganization ID
Request body · AdminAddMemberRequest
NameTypeNotes
emailrequiredstring
rolerequiredRole
200 response · AdminMember
200 response fields
NameTypeNotes
created_atrequiredstringWhen the membership (not the user) was created.
emailrequiredstring
namerequiredstring
rolerequiredRole
user_idrequireduuid

Errors: 400, 401, 403, 404

Status

GET/v1/admin/status

200 response · AdminStatusResponse
200 response fields
NameTypeNotes
audit_logsrequiredinteger
auth_requiredrequiredboolean
credit_ledger_entriesrequiredinteger
database_enabledrequiredboolean
dataset_versionsrequiredinteger
datasetsrequiredinteger
error_logsrequiredinteger
event_backendrequiredstring
event_targetrequiredstring
invoicesrequiredinteger
job_queue_backendrequiredstring
job_queue_targetrequiredstring
jobsrequiredinteger
organization_membersrequiredinteger
organizationsrequiredinteger
raw_archive_backendrequiredstring
raw_archive_locationrequiredstring
raw_archive_rootrequiredstring
raw_archivesrequiredinteger
request_quota_per_keyrequiredinteger
sourcesrequiredinteger
subscriptionsrequiredinteger
usage_eventsrequiredinteger
usersrequiredinteger

Errors: 401, 403

List users

GET/v1/admin/users

Parameters
NameInTypeNotes
qquerystringMatches email or name (case-insensitive)
limitqueryintegerPage size, 1-200 (default 50)
offsetqueryintegerPage offset
200 response · AdminUserList
200 response fields
NameTypeNotes
itemsrequiredAdminUserRow[]
totalrequiredinteger

Errors: 401, 403

List audit logs

GET/v1/audit-logs

Parameters
NameInTypeNotes
limitqueryintegerPage size, 1-500
offsetqueryintegerPage offset
200 response · PaginatedAuditLog
200 response fields
NameTypeNotes
itemsrequiredAuditLog[]
totalrequiredinteger

Errors: 401, 403

List organizations

GET/v1/orgs

200 response · Organization[]

Errors: 401, 403

Create organization

POST/v1/orgs

Request body · CreateOrganizationRequest
NameTypeNotes
kindnull | OrganizationKind
namerequiredstring
slugrequiredstring
tiernull | Tier
200 response · Organization
200 response fields
NameTypeNotes
addon_dataset_slotsintegerCatalog datasets this org may select on top of its tier's `catalog_datasets`. Staff-set for now; a paid add-on later.
created_atrequiredstring
idrequireduuid
kindrequiredOrganizationKindGitHub-style account model: every Orbbit SSO login gets a Personal org (auto-provisioned, sole Owner) so customers never need to be granted membership anywhere just to use Aggre. Team orgs are for multi-member organizations -- including Orbbit's own internal staff org -- and are created explicitly. Enterprise is a billing `Tier` on a Team org, not a separate kind, since org shape and billing tier are independent axes.
namerequiredstring
slugrequiredstring
tierrequiredTier

Errors: 400, 401, 403

List organization members

GET/v1/orgs/{id}/members

Parameters
NameInTypeNotes
idrequiredpathuuidOrganization ID

200 response · OrganizationMember[]

Errors: 401, 403, 404

Add organization member

POST/v1/orgs/{id}/members

Parameters
NameInTypeNotes
idrequiredpathuuidOrganization ID
Request body · AddOrganizationMemberRequest
NameTypeNotes
rolerequiredRole
user_idrequireduuid
200 response · OrganizationMember
200 response fields
NameTypeNotes
created_atrequiredstring
org_idrequireduuid
rolerequiredRole
user_idrequireduuid

Errors: 400, 401, 403, 404

List users

GET/v1/users

200 response · User[]

Errors: 401, 403

Create user

POST/v1/users

Request body · CreateUserRequest
NameTypeNotes
emailrequiredstring
namerequiredstring
200 response · User
200 response fields
NameTypeNotes
created_atrequiredstring
emailrequiredstring
idrequireduuid
namerequiredstring

Errors: 400, 401, 403

System

Liveness and readiness, no key needed.

Health

GET/health

200 response · HealthResponse
200 response fields
NameTypeNotes
servicerequiredstring
statusrequiredstring

Ready

GET/ready

200 response · ReadyResponse
200 response fields
NameTypeNotes
databaserequiredstring
rerankerrequiredstring
servicerequiredstring
statusrequiredstring

Errors: 503

API reference · Aggre