Register an OAuth client dynamically (RFC 7591)
const url = 'https://api.aerandil.com/oauth/register';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"client_name":"example","grant_types":["authorization_code"],"redirect_uris":["example"],"response_types":["code"],"scope":"example","software_id":"example","software_version":"example","token_endpoint_auth_method":"none"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aerandil.com/oauth/register \ --header 'Content-Type: application/json' \ --data '{ "client_name": "example", "grant_types": [ "authorization_code" ], "redirect_uris": [ "example" ], "response_types": [ "code" ], "scope": "example", "software_id": "example", "software_version": "example", "token_endpoint_auth_method": "none" }'Obtain a client_id for an interactive OAuth 2.1 client — the way an MCP client (Claude, ChatGPT, n8n, Cursor) connects to this cell without anyone provisioning a credential for it.
Public — no authentication. RFC 7591 §1.2 permits an open registration policy, and registering grants nothing: a fresh client_id can only ask a human to sign in, and the token that eventually results is capped by that person’s role. Rate-limited per IP alongside /oauth/token.
Public clients only: token_endpoint_auth_method must be none and the client must use PKCE (S256). Redirect URIs are exact-matched at authorization time and must be https: or http: on a loopback address.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Exact redirect targets. https:, or http: on 127.0.0.1 / [::1] / localhost.
Responses
Section titled “Responses”The registered client.
object
Examplegenerated
{ "client_id": "example", "client_id_issued_at": 1, "client_name": "example", "grant_types": [ "example" ], "redirect_uris": [ "example" ], "response_types": [ "example" ], "scope": "example", "token_endpoint_auth_method": "example"}RFC 7591 §3.2.2 error — invalid_redirect_uri or invalid_client_metadata.
object
Examplegenerated
{ "error": "example", "error_description": "example"}