OAuth Clients

Register OAuth client

Register a new OAuth client for third-party application integration.

The generated client_id and client_secret are returned in the response. The secret is shown only once — store it securely.

post/admin/oauth-clients

Request body

allowed_scopesstring[] nullable

If set, restricts which scopes this client may request. An empty list denies all non-OIDC scopes. Null means unrestricted (all scopes permitted).

consent_model'user' | 'agent'

What a user's consent grants for this client. user keeps today's act-as-user semantics; agent marks the client for agent-bound consent (the MCP path).

descriptionstring nullable

Optional description of the client.

namestring required

Human-readable name for the client.

redirect_urisstring[] required

Allowed OAuth callback URLs. At least one required.

require_consentboolean

Whether to show a consent screen during authorization. Set to false for trusted first-party integrations.

token_endpoint_auth_method'client_secret_basic' | 'none'

Client authentication method at the token endpoint. client_secret_basic creates a confidential client with a generated secret; none creates a public (secret-less) client that relies on PKCE alone — no secret is generated or returned.

Example request

{
  "description": "My application production deployment",
  "name": "my-app-production",
  "redirect_uris": [
    "https://app.example.com/auth/callback"
  ],
  "require_consent": true
}

Response

Successful Response

activeboolean required
allowed_scopesstring[] nullable required

Scopes this client may request. Null means unrestricted.

approval_statusstring required

Admin approval lifecycle: pending, approved, or denied. Only approved clients may enter OAuth flows; active remains the independent kill switch.

client_idstring required

Public client identifier used in OAuth flows.

client_secretstring nullable required

The client secret. Shown only once at creation — store it securely. Null for public (secret-less) clients.

consent_modelstring required

What a user's consent grants for this client: user or agent.

created_atstring date-time required
created_bystring nullable required
descriptionstring nullable required
idstring required

Internal ID (ksuid).

namestring required
redirect_urisstring[] required
registration_sourcestring required

How the client entered the registry: admin or dcr.

require_consentboolean required

Whether a consent screen is shown during authorization.

software_idstring nullable required

RFC 7591 software identifier claimed at registration, if any.

token_endpoint_auth_methodstring required

Client authentication method at the token endpoint: client_secret_basic (confidential) or none (public, PKCE-only).

updated_atstring date-time nullable required

Example response

{
  "active": true,
  "approval_status": "approved",
  "client_id": "oc_abc123...",
  "consent_model": "user",
  "created_at": "2026-08-18T12:00:00Z",
  "created_by": "usr_abc123",
  "description": "My application production deployment",
  "id": "oac_2NxYz...",
  "name": "my-app-production",
  "redirect_uris": [
    "https://app.example.com/auth/callback"
  ],
  "registration_source": "admin",
  "require_consent": true,
  "token_endpoint_auth_method": "client_secret_basic"
}

Changes