GET /organizations
List all organizations for the authenticated user
Operation: list_organizations
Responses
200
List of organizations
OrganizationsResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
401
Unauthorized
GET /organizations/{organization_id}/invites
List pending and historical organization invites.
Operation: list_invites
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Responses
200
Organization invites retrieved
OrganizationInvitesResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
403
User is not allowed to view invites
500
Internal server error
POST /organizations/{organization_id}/invites
Create a new organization invite and send an email via the configured mailer.
Operation: create_invite
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Request Body (required)
CreateOrganizationInviteRequest
email*: string — Email address of the invitee.
role: string — Optional role for the invitee (defaults to member).
Responses
201
Invite created and email sent
OrganizationInviteResponse
data*: OrganizationInvite
pagination: any
400
Invalid request
403
User is not allowed to create invites
500
Internal server error
GET /organizations/{organization_id}/members
List organization members with basic user details.
Operation: list_members
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Responses
200
Organization members retrieved
OrganizationMembersResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
403
User is not a member of the organization
500
Internal server error
GET /organizations/:org_id/publishers
List publishers owned by an organization
Operation: list_org_publishers
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Responses
200
Publishers retrieved successfully
PublishersDataResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
403
Not authorized
500
Internal server error
POST /organizations/:org_id/publishers
Create a new publisher
Operation: create_publisher
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Request Body (required)
CreatePublisherRequest
accepted_asset_ids: array — Asset IDs the publisher accepts for payment
allowed_passthrough_headers: array — Whitelist of agent-provided headers allowed to pass through to upstream
api_headers: any — Headers for API requests (will be encrypted)
api_key_header: string — Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param: string — Query parameter name to inject upstream_api_key into (e.g., "api_key")
api_url: string — External API URL (required for integration_type = api)
auth_type: string — Upstream auth mode ("static", "jwt", or "oauth2_cc") (default: static)
base_price_per_1000_rows: string
billing_model: string — Billing model ("x402_per_request", "prepaid_credits", "x402_passthrough", "pay_p
branch_id: string — SerenDB branch ID (required for database_type = serendb)
... and 60 more properties
Responses
201
Publisher created successfully
PublisherDataResponse
data*: PublisherResponse
pagination: any
400
Invalid request
403
Not authorized
409
Publisher slug already exists
500
Internal server error
GET /organizations/:org_id/publishers/:publisher_id
Get publisher details
Operation: get_org_publisher
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Responses
200
Publisher retrieved successfully
PublisherDataResponse
data*: PublisherResponse
pagination: any
403
Not authorized
404
Publisher not found
500
Internal server error
PUT /organizations/:org_id/publishers/:publisher_id
Update a publisher
Operation: update_publisher
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
UpdatePublisherRequest
add_asset_ids: array — Asset IDs to add to accepted assets
allowed_passthrough_headers: array — Whitelist of agent-provided headers allowed to pass through to upstream
api_headers: any — Headers for API requests (will be encrypted)
api_key_header: string — Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param: string — Query parameter name to inject upstream_api_key into (e.g., "api_key")
api_url: string — External API URL (for integration_type = api)
auth_type: string — Upstream auth mode ("static" or "jwt")
base_price_per_1000_rows: string
billing_model: string — Billing model ("x402_per_request", "prepaid_credits", "x402_passthrough", "pay_p
branch_id: string — SerenDB branch ID (for database_type = serendb)
... and 60 more properties
Responses
200
Publisher updated successfully
PublisherDataResponse
data*: PublisherResponse
pagination: any
400
Invalid request
403
Not authorized
404
Publisher not found
500
Internal server error
DELETE /organizations/:org_id/publishers/:publisher_id
Soft delete a publisher
Operation: delete_publisher
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Responses
200
Publisher deleted successfully
403
Not authorized
404
Publisher not found
500
Internal server error
GET /organizations/:org_id/publishers/:publisher_id/earnings
List earnings for a publisher (per asset).
Operation: get_org_publisher_earnings
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Responses
200
Earnings retrieved successfully
PublisherEarningsDataResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
403
Not authorized
404
Publisher not found
500
Internal server error
POST /organizations/{organization_id}/publishers/{publisher_id}/logo
Upload a logo for a publisher
Operation: upload_publisher_logo
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
LogoUploadRequest
content_type*: string — Content type of the image (image/png, image/jpeg, image/webp, image/svg+xml)
logo*: string — Base64 encoded image data
Responses
200
Logo uploaded successfully
LogoUploadDataResponse
data*: LogoUploadResponse
pagination: any
400
Invalid image format or size
403
Not authorized
404
Publisher not found
500
Internal server error
GET /organizations/:org_id/publishers/:publisher_id/payouts
List payout requests for a publisher.
Operation: list_org_publisher_payouts
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
limit |
query |
integer |
No |
Maximum number of results (default: 50) |
offset |
query |
integer |
No |
Offset for pagination |
Responses
200
Payouts retrieved successfully
PublisherPayoutsDataResponse
data*: array — The actual response data (can be a single object or a collection)
pagination: any
403
Not authorized
404
Publisher not found
500
Internal server error
POST /organizations/:org_id/publishers/:publisher_id/payouts
Request a payout for a publisher's earnings.
Operation: create_org_publisher_payout
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
CreatePublisherPayoutRequest
amount_atomic: integer — Amount to withdraw in atomic units (defaults to max available)
asset_id*: string — Asset to withdraw (must be an asset accepted by the publisher)
destination_wallet: any
Responses
201
Payout request created
PublisherPayoutDataResponse
data*: PublisherPayoutResponse
pagination: any
400
Invalid request
403
Not authorized
404
Publisher not found
500
Internal server error
PUT /organizations/:org_id/publishers/:publisher_id/pricing
Update publisher pricing config for a specific asset
Operation: update_publisher_pricing
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
UpdatePricingRequest
asset_id*: string — Asset ID for this pricing config (required)
base_price_per_1000_rows: string
grace_period_minutes: integer
hourly_rate: string
low_balance_threshold: string
markup_multiplier: string
max_charge: string
max_queries_per_minute: integer
min_charge: string
min_display_price: string — Minimum price to display in UI for passthrough publishers (informational only)
... and 18 more properties
Responses
200
Pricing updated successfully
PricingConfigDataResponse
data*: PricingConfigResponse
pagination: any
400
Invalid request
403
Not authorized
404
Publisher not found
500
Internal server error