For app builders
Your application.
Its own identity.
A SaaS integration uses a separate service actor approved by a current workspace owner. The approving human, application, workspace and payer retain distinct identities.
Loading your app workspaces…
Use the returned client identity.
- Request a scoped access tokenUse client_credentials with private_key_jwt at the returned tokenEndpoint. Bind the assertion issuer and subject to clientId, audience to that endpoint, and use a short expiry and unique jti. Request the returned resource and only approved scopes. The maintained OAuth provider verifies assertions and replay protection.
- Keep tenant context server-ownedThe token selects its application, workspace and service actor. Route identifiers do not change that authority. Payer identity is resolved by the service.
- Rotate and revokePUT /api/backend/workspaces/{workspaceId}/integrations/{connectionId}/keys rotates public keys after fresh owner authentication. DELETE the matching /connections/{connectionId} record to revoke its grant.
- Keep human accessA new integration-created project records the current approving human as its primary owner and a service membership bound to that exact integration grant. Former or revoked approvals cannot create new access.
Ordinary agent connections use the browser consent flow instead. Neither connection type receives billing checkout or workspace membership-management scopes.
Call the same model API.
Use Authorization: Bearer on the public REST facade or Streamable HTTP MCP endpoint. Uploads are bounded to 32 MiB with an exact Content-Length. Ordinary jobs use managed compute, output and spending defaults; quotes are optional estimates. Preserve the exact request and idempotency key after a lost response, then poll the admitted job. Asset rendering and source downloads require their own permissions.