GET /organizations
List all organizations for the authenticated user
Operation: list_organizations
Responses
200
List of organizations
DataResponse_Vec_Organization
data*: array
pagination: any
401
Unauthorized
GET /organizations/{organization_id}/custom-skills
Operation: list_custom_skills
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
q |
query |
string,null |
No |
|
include_archived |
query |
boolean |
No |
|
Responses
200
Custom skills retrieved
DataResponse_Vec_OrganizationCustomSkill
data*: array
pagination: any
POST /organizations/{organization_id}/custom-skills
Operation: create_custom_skill
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
Request Body (required)
CreateOrganizationCustomSkillRequest
description: string,null
display_name*: string
initial_revision*: CreateOrganizationCustomSkillRevisionRequest
slug*: string
Responses
200
Custom skill created
DataResponse_OrganizationCustomSkill
data*: object
pagination: any
GET /organizations/{organization_id}/custom-skills/{skill_id}
Operation: get_custom_skill
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
Responses
200
Custom skill retrieved
DataResponse_OrganizationCustomSkill
data*: object
pagination: any
404
Custom skill not found
PATCH /organizations/{organization_id}/custom-skills/{skill_id}
Operation: update_custom_skill
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
Request Body (required)
UpdateOrganizationCustomSkillRequest
description: string,null — If omitted, leave unchanged. If null, clear.
display_name: string,null
status: any
Responses
200
Custom skill updated
DataResponse_OrganizationCustomSkill
data*: object
pagination: any
404
Custom skill not found
GET /organizations/{organization_id}/custom-skills/{skill_id}/revisions
Operation: list_custom_skill_revisions
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
Responses
200
Custom skill revisions retrieved
DataResponse_Vec_OrganizationCustomSkillRevisionSummary
data*: array
pagination: any
POST /organizations/{organization_id}/custom-skills/{skill_id}/revisions
Operation: create_custom_skill_revision
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
Request Body (required)
CreateOrganizationCustomSkillRevisionRequest
files*: array
publish: boolean
Responses
200
Custom skill revision created
DataResponse_OrganizationCustomSkillRevision
data*: object
pagination: any
GET /organizations/{organization_id}/custom-skills/{skill_id}/revisions/{revision_id}
Operation: get_custom_skill_revision
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
revision_id |
path |
string |
Yes |
Revision ID |
Responses
200
Custom skill revision retrieved
DataResponse_OrganizationCustomSkillRevision
data*: object
pagination: any
GET /organizations/{organization_id}/custom-skills/{skill_id}/revisions/{revision_id}/bundle
Operation: download_custom_skill_revision_bundle
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
revision_id |
path |
string |
Yes |
Revision ID |
Responses
200
Revision bundle download
GET /organizations/{organization_id}/custom-skills/{skill_id}/revisions/{revision_id}/file?path=...
Operation: get_custom_skill_revision_file
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
revision_id |
path |
string |
Yes |
Revision ID |
path |
query |
string |
Yes |
|
Responses
200
Revision file retrieved
DataResponse_OrganizationCustomSkillFileContent
data*: object
pagination: any
POST /organizations/{organization_id}/custom-skills/{skill_id}/revisions/{revision_id}/publish
Operation: publish_custom_skill_revision
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID |
skill_id |
path |
string |
Yes |
Custom skill ID |
revision_id |
path |
string |
Yes |
Revision ID |
Responses
200
Revision published
DataResponse_OrganizationCustomSkill
data*: object
pagination: any
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 or 'default' for authenticated user's default organization |
Responses
200
Organization invites retrieved
DataResponse_Vec_OrganizationInvite
data*: array
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 or 'default' for authenticated user's default organization |
Request Body (required)
CreateOrganizationInviteRequest
email*: string — Email address of the invitee.
role: string,null — Optional role for the invitee (defaults to member).
Responses
201
Invite created and email sent
DataResponse_OrganizationInvite
data*: object — Response type for organization invites (token is not exposed over the API).
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 or 'default' for authenticated user's default organization |
Responses
200
Organization members retrieved
DataResponse_Vec_OrganizationMemberWithUser
data*: array
pagination: any
403
User is not a member of the organization
500
Internal server error
GET /organizations/{organization_id}/private-chat-policy
Operation: get_private_chat_policy
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID or 'default' for authenticated user's default organization |
Responses
200
Organization private chat policy
DataResponse_OrganizationPrivateChatPolicy
data*: object
pagination: any
403
User is not a member of the organization
500
Internal server error
PUT /organizations/{organization_id}/private-chat-policy
Operation: update_private_chat_policy
Parameters
| Name | In | Type | Required | Description |
organization_id |
path |
string |
Yes |
Organization ID or 'default' for authenticated user's default organization |
Request Body (required)
UpdateOrganizationPrivateChatPolicyRequest
clear_session_database: boolean
deployment_id: string,null
disable_external_model_providers: boolean
disable_local_agents: boolean
disable_seren_models: boolean
fallback_models: array,null
force_private_model: boolean
hide_model_picker: boolean
mode*: OrganizationPrivateChatMode
model_id: string,null
... and 3 more properties
Responses
200
Updated organization private chat policy
DataResponse_OrganizationPrivateChatPolicy
data*: object
pagination: any
400
Invalid request
403
User is not allowed to update 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 or 'default' for authenticated user's default organization |
Responses
200
Publishers retrieved successfully
DataResponse_Vec_PublisherResponse
data*: array
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 or 'default' for authenticated user's default organization |
Request Body (required)
CreatePublisherRequest
a2a_endpoint_url: string,null — A2A endpoint base URL (required for compute_type = agent)
accepted_asset_ids: array,null — 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,null — Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param: string,null — Query parameter name to inject upstream_api_key into (e.g., "api_key")
api_url: string,null — External API URL (required for integration_type = api)
auth_type: string,null — Upstream auth mode ("static", "jwt", or "oauth2_cc") (default: static)
base_price_per_1000_rows: string,null
billing_model: string,null — Billing model ("x402_per_request", "prepaid_credits", "x402_passthrough", "pay_p
... and 64 more properties
Responses
201
Publisher created successfully
DataResponse_PublisherResponse
data*: object — Publisher response (excludes sensitive fields)
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 or 'default' for authenticated user's default organization |
publisher_id |
path |
string |
Yes |
Publisher ID |
Responses
200
Publisher retrieved successfully
DataResponse_PublisherResponse
data*: object — Publisher response (excludes sensitive fields)
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 or 'default' for authenticated user's default organization |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
UpdatePublisherRequest
a2a_endpoint_url: string,null — A2A endpoint base URL (for compute_type = agent)
add_asset_ids: array,null — Asset IDs to add to accepted assets
allowed_passthrough_headers: array,null — 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,null — Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param: string,null — Query parameter name to inject upstream_api_key into (e.g., "api_key")
api_url: string,null — External API URL (for integration_type = api)
auth_type: string,null — Upstream auth mode ("static" or "jwt")
base_price_per_1000_rows: string,null
billing_model: string,null — Billing model ("x402_per_request", "prepaid_credits", "x402_passthrough", "pay_p
... and 64 more properties
Responses
200
Publisher updated successfully
DataResponse_PublisherResponse
data*: object — Publisher response (excludes sensitive fields)
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 or 'default' for authenticated user's default organization |
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 or 'default' for authenticated user's default organization |
publisher_id |
path |
string |
Yes |
Publisher ID |
Responses
200
Earnings retrieved successfully
DataResponse_Vec_PublisherEarningsResponse
data*: array
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 or 'default' for authenticated user's default organization |
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
DataResponse_LogoUploadResponse
data*: object — Logo upload response
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 or 'default' for authenticated user's default organization |
publisher_id |
path |
string |
Yes |
Publisher ID |
limit |
query |
integer,null |
No |
Maximum number of results (default: 50) |
offset |
query |
integer,null |
No |
Offset for pagination |
Responses
200
Payouts retrieved successfully
DataResponse_Vec_PublisherPayoutResponse
data*: array
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 or 'default' for authenticated user's default organization |
publisher_id |
path |
string |
Yes |
Publisher ID |
Request Body (required)
CreatePublisherPayoutRequest
amount_atomic: integer,null — 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
DataResponse_PublisherPayoutResponse
data*: object — Publisher payout response.
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 or 'default' for authenticated user's default organization |
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,null
grace_period_minutes: integer,null
hourly_rate: string,null
low_balance_threshold: string,null
markup_multiplier: string,null
max_queries_per_minute: integer,null
min_charge: string,null
min_display_price: string,null — Minimum price to display in UI for passthrough publishers (informational only)
minimum_balance: string,null
... and 19 more properties
Responses
200
Pricing updated successfully
DataResponse_PricingConfigResponse
data*: object — Pricing config response
pagination: any
400
Invalid request
403
Not authorized
404
Publisher not found
500
Internal server error