Skip to main content
GET
/
api
/
v1
/
providers
List available providers (catalog)
curl --request GET \
  --url https://openapi.beeos.ai/api/v1/providers \
  --header 'Authorization: Bearer <token>'
{
  "success": true,
  "data": [
    {
      "meta": {
        "id": "<string>",
        "name": "<string>",
        "description": "<string>",
        "version": "<string>"
      },
      "capabilities": {
        "longRunning": true,
        "browserUse": true,
        "codeExec": true,
        "fileSystem": true,
        "customImage": true,
        "maxDurationSec": 123,
        "costModel": "<string>",
        "device": true
      }
    }
  ]
}

Authorizations

Authorization
string
header
required

Pass a user JWT or a oag_ User API Key on the Authorization: Bearer <token> header. Both are validated by openapi-gateway against the Auth service.

Both credential types are user-scoped: every key (and every JWT) is bound to exactly one owner, and every route grants the caller full access to that owner's own resources. Cross-tenant access is denied by owner-ACL inside the handlers — there is no per-route scope vocabulary on this API.

Removed in v1.1.0: the legacy agents:* / tasks:* / files:* / instances:* scope set has been dropped together with the 403 insufficient_scope error. Existing oag_ keys automatically gain full owner-level access and do not need to be re-issued. SDK calls that previously passed scopes to createAPIKey should drop the argument. See the changelog at the bottom of this spec for the full migration note.

Response

Standard { success, data } envelope; data is an array of ProviderCatalogItem entries, each carrying a meta block (id, name, description, version) and a capabilities block (camelCase booleans + maxDurationSec / costModel). Mintlify renders the wrapper as object[] until you expand "Show child attributes" — the items are fully typed.

success
boolean
required
data
ProviderCatalogItem · object[]
required