Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/agentaos-ai:agentaos-ai-businesses-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Agentaos Ai Businesses API
version: 1.0.0
contact:
name: AgentaOS
url: https://agentaos.ai
license:
name: Proprietary
url: https://agentaos.ai
description: 'Operations tagged Businesses across 2 of this provider''s published API definitions: agentaos-ai-openapi.json, openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Businesses
description: 'For platforms: the businesses you manage, a client''s business or another app of your own company. To act as one of them on any other endpoint, send its id in the `AgentaOS-Account` header. Every field on this resource is camelCase on the wire.'
paths:
/gateway/businesses:
get:
tags:
- Businesses
operationId: listBusinesses
summary: List businesses
description: 'Every business you manage, with its status and your share. Not paginated: returns a plain array. The platform is always the caller''s own account; an owner or admin of it.'
responses:
'200':
description: Every business you manage.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Business'
examples:
default:
$ref: '#/components/examples/BusinessListExample'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessForbidden'
post:
tags:
- Businesses
operationId: createBusiness
summary: Create a business
description: 'Add a business you manage. It starts in test mode and goes live after its own verification. With `clientEmail`, your client is invited as its admin, and the invitation expires after 7 days. We email the invitation, or with `sendInvitationEmail: false` we send nothing and you send `inviteUrl` yourself (white-label).'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessCreateRequest'
example:
name: ClientCo
country: DE
clientEmail: founder@example.com
sendInvitationEmail: false
responses:
'201':
description: The business was created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedBusiness'
'400':
description: A field is missing or invalid, for example a country that is not a two-letter code or a name that is an email. `message` lists every problem; `errors` names the field of each.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 400
message:
- Country must be a two-letter ISO code.
error: Bad Request
errors:
- field: country
message: Country must be a two-letter ISO code.
timestamp: '2026-09-28T12:00:00.000Z'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
description: 'You are not an owner or admin of the platform, or you sent `clientEmail` as an admin: only an owner of your platform may invite the client.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
owner_only:
value:
statusCode: 403
message: Only an owner of your platform can invite the client as admin.
timestamp: '2026-09-28T12:00:00.000Z'
'409':
description: The caller is itself a business managed by a platform. A managed business cannot manage businesses of its own.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 409
code: one_level
message: A business you manage cannot manage businesses of its own.
timestamp: '2026-09-28T12:00:00.000Z'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
/gateway/businesses/{id}:
get:
tags:
- Businesses
operationId: retrieveBusiness
summary: Retrieve a business
description: One business you manage, the same shape as a row of the list. A business you do not manage and an id that does not exist get the same `403`, so the response never confirms an id.
parameters:
- $ref: '#/components/parameters/BusinessId'
responses:
'200':
description: The business.
content:
application/json:
schema:
$ref: '#/components/schemas/Business'
examples:
default:
$ref: '#/components/examples/BusinessExample'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessForbidden'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
/gateway/businesses/{id}/invitation:
post:
tags:
- Businesses
operationId: resendBusinessInvitation
summary: Resend the invitation
description: 'Send your client''s invitation again, to the person last invited. It is a new link that expires after 7 days: the old one stops working. Refused with `409 client_joined` once your client has joined the business.'
parameters:
- $ref: '#/components/parameters/BusinessId'
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ResendInvitationRequest'
example:
sendInvitationEmail: false
responses:
'201':
description: A new invitation.
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessInvitation'
example:
inviteToken: b7e4c1d9a2f3…
inviteUrl: https://app.agentaos.ai/invite/b7e4c1d9a2f3…
'401':
$ref: '#/components/responses/Unauthorized'
'403':
description: 'A business you do not manage, or an id that does not exist (`You cannot act as this business.`). Also returned to an admin of the platform: only an owner may invite the client.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
not_yours:
value:
statusCode: 403
message: You cannot act as this business.
timestamp: '2026-09-28T12:00:00.000Z'
owner_only:
value:
statusCode: 403
message: Only an owner of your platform can invite the client as admin.
timestamp: '2026-09-28T12:00:00.000Z'
'409':
$ref: '#/components/responses/ClientJoined'
delete:
tags:
- Businesses
operationId: revokeBusinessInvitation
summary: Revoke the invitation
description: Withdraw your client's open invitation. Its link stops working. Refused with `409 client_joined` once your client has joined the business.
parameters:
- $ref: '#/components/parameters/BusinessId'
responses:
'204':
description: The invitation was withdrawn. No body.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BusinessForbidden'
'409':
$ref: '#/components/responses/ClientJoined'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
/gateway/businesses/{id}/verification-link:
post:
tags:
- Businesses
operationId: createBusinessVerificationLink
summary: Create a verification link
description: 'The identity check link for your client. You send it; only your client can complete it. Needs a live key: a test key gets `403 live_key_required`. While a check is open, calling again returns the same check. `url` is `null` when the client is already verified. For another app of your own company it returns `409 identity_from_company`: its identity check is your company''s.'
parameters:
- $ref: '#/components/parameters/BusinessId'
responses:
'201':
description: The link, or `null` when already verified.
content:
application/json:
schema:
$ref: '#/components/schemas/VerificationLink'
example:
url: https://…
status: Not Started
'401':
$ref: '#/components/responses/Unauthorized'
'403':
description: A business you do not manage (`You cannot act as this business.`), or a test key (`live_key_required`).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
not_yours:
value:
statusCode: 403
message: You cannot act as this business.
timestamp: '2026-09-28T12:00:00.000Z'
live_key_required:
value:
statusCode: 403
code: live_key_required
message: 'This needs a live API key: it changes real money, live settings or a real identity check. This is a test key.'
timestamp: '2026-09-28T12:00:00.000Z'
'409':
description: 'Another app of your own company: its identity check is your company''s.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 409
code: identity_from_company
message: This business is another app of your company. Its identity check is your company’s.
timestamp: '2026-09-28T12:00:00.000Z'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
components:
schemas:
BusinessInvitation:
type: object
properties:
inviteToken:
type: string
inviteUrl:
type: string
description: The new link to send. The old one stops working.
required:
- inviteToken
- inviteUrl
ResendInvitationRequest:
type: object
properties:
sendInvitationEmail:
type: boolean
default: true
description: '`false`: a new link only, no email.'
CreatedBusiness:
type: object
properties:
business:
$ref: '#/components/schemas/Business'
inviteToken:
type:
- string
- 'null'
description: The invitation token, or null without `clientEmail`.
inviteUrl:
type:
- string
- 'null'
description: The link your client opens to accept, or null without `clientEmail`. Ready to send.
required:
- business
- inviteToken
- inviteUrl
Business:
type: object
description: 'A business you manage: a client''s business, or another app of your own company. Every field is camelCase on the wire.'
properties:
id:
type: string
format: uuid
description: Business UUID. Send it in `AgentaOS-Account` to act as the business.
name:
type: string
description: The name buyers see.
country:
type:
- string
- 'null'
description: ISO 3166-1 alpha-2.
status:
type: string
enum:
- test_only
- in_review
- changes_needed
- on_hold
- rejected
- live
description: Where the business stands. `live` = verified. A bank account is needed before the first payout, not for this status. `changes_needed` = we asked the business for a change.
platformOrgId:
type: string
format: uuid
description: 'Your own id: the platform that manages it.'
createdAt:
type: string
format: date-time
platformFee:
type: object
description: 'Your share of its new sales, set in the dashboard: basis points of the price before VAT (`1000` = 10%) plus a fixed amount in minor units.'
properties:
bps:
type: integer
fixedMinor:
type: integer
fixedDisplay:
type: string
description: 'The fixed part as money, in the currency of this month''s fees, else euros: `€0.30`.'
required:
- bps
- fixedMinor
- fixedDisplay
sameLegalEntity:
type: boolean
description: '`true` for another app of your own company: verified and priced with you, no share, no identity check of its own.'
feesThisMonth:
type: array
description: Your share of its live sales this month, per currency. `feesDisplay` is ready to show.
items:
type: object
properties:
currency:
type: string
feesMinor:
type: integer
feesDisplay:
type: string
required:
- currency
- feesMinor
- feesDisplay
invitedEmail:
type:
- string
- 'null'
description: Who an open invitation is waiting on, or null.
identityVerified:
type: boolean
description: 'The identity check is done: its own, or your company''s for another app of your own company.'
required:
- id
- name
- country
- status
- platformOrgId
- createdAt
- platformFee
- sameLegalEntity
- feesThisMonth
- invitedEmail
- identityVerified
BusinessCreateRequest:
type: object
properties:
name:
type: string
maxLength: 100
description: The name buyers see. A brand, not an email.
country:
type: string
pattern: ^[A-Z]{2}$
description: Where it is registered, ISO 3166-1 alpha-2, upper case.
clientEmail:
type: string
format: email
description: Invite your client as its admin. Leave it out to run the business yourself. Only an owner of your platform may invite.
sameLegalEntity:
type: boolean
default: false
description: '`true` for another app of your own company.'
sendInvitationEmail:
type: boolean
default: true
description: '`false`: we send no email; you send `inviteUrl` yourself (white-label).'
required:
- name
- country
VerificationLink:
type: object
properties:
url:
type:
- string
- 'null'
description: The identity check link to send your client, or null when already verified.
status:
type: string
description: 'Where the identity check stands. These are the check''s own states, not a business status: `Not Started`, `In Progress`, `Awaiting User`, `In Review`, `Approved`, `Declined`, `Resubmitted`, `Expired`, `Kyc Expired` or `Abandoned`. `Approved` means the check is done.'
required:
- url
- status
Error:
type: object
description: Every non-2xx response is JSON in this shape. Every response (success or error) also carries an `x-request-id` response header; send that header on your request to have your own id echoed back, otherwise the server mints one. On errors the same id is repeated in the `requestId` body field.
properties:
statusCode:
type: integer
description: Same as the HTTP status code.
code:
type: string
description: 'Present on some refusals: a stable machine-readable reason, e.g. `live_key_required`.'
message:
description: Human-readable. A validation failure (400) returns an array of per-field messages instead of one string.
anyOf:
- type: string
- type: array
items:
type: string
errors:
type: array
description: 'Present on 400 validation failures: one entry per invalid field. The flat human-readable strings stay in `message` for back-compat; this is the machine-readable, per-field view.'
items:
type: object
properties:
field:
type: string
description: Name of the invalid field, dot-notated for nested properties (e.g. `checkoutFields.0.type`).
message:
type: string
description: Validation messages for that field, joined with `, `.
required:
- field
- message
requestId:
type: string
description: Correlation id, identical to the `x-request-id` response header. Include it when contacting support. On success it is available on the header only, not the body.
timestamp:
type: string
format: date-time
required:
- statusCode
- message
- timestamp
responses:
BusinessForbidden:
description: 'A business you do not manage, or an id that does not exist: the same answer for both, so the response never confirms an id. Also returned when the caller is not an owner or admin of the platform.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 403
message: You cannot act as this business.
timestamp: '2026-09-28T12:00:00.000Z'
Unauthorized:
description: Missing or invalid `x-api-key`.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 401
message: Invalid API key
timestamp: '2026-08-06T12:00:00.000Z'
ClientJoined:
description: 'Your client has already joined this business: its invitations are now theirs to manage.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 409
code: client_joined
message: Your client has already joined this business.
timestamp: '2026-09-28T12:00:00.000Z'
examples:
BusinessExample:
value:
id: 5b1f0c2e-8a4d-4c7b-9e21-3f6a7d8c9b10
name: ClientCo
country: DE
status: in_review
platformOrgId: 0e6d2c1a-3b4f-4a5e-8c7d-9f1a2b3c4d5e
createdAt: '2026-09-28T10:00:00.000Z'
platformFee:
bps: 1000
fixedMinor: 50
fixedDisplay: €0.50
sameLegalEntity: false
feesThisMonth:
- currency: EUR
feesMinor: 1250
feesDisplay: €12.50
invitedEmail: founder@example.com
identityVerified: false
BusinessListExample:
value:
- id: 5b1f0c2e-8a4d-4c7b-9e21-3f6a7d8c9b10
name: ClientCo
country: DE
status: in_review
platformOrgId: 0e6d2c1a-3b4f-4a5e-8c7d-9f1a2b3c4d5e
createdAt: '2026-09-28T10:00:00.000Z'
platformFee:
bps: 1000
fixedMinor: 50
fixedDisplay: €0.50
sameLegalEntity: false
feesThisMonth:
- currency: EUR
feesMinor: 1250
feesDisplay: €12.50
invitedEmail: founder@example.com
identityVerified: false
parameters:
BusinessId:
name: id
in: path
required: true
description: The business UUID.
schema:
type: string
format: uuid
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: 'Your secret key, from app.agentaos.ai -> Settings -> Developers -> API Keys. The key''s prefix is both its identity and its environment: `sk_test_...` (sandbox, free, no verification) or `sk_live_...` (real money, requires business verification). A missing or invalid key returns 401.'
x-refined-from:
- agentaos-ai-openapi.json
- openapi.json