Dynamic Client Registration (RFC 7591)
POST
/oauth/register
const url = 'https://app.buildworkpro.com/api/v1/oauth/register';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"client_name":"example","redirect_uris":["https://example.com"],"grant_types":["authorization_code","refresh_token"],"scope":"","token_endpoint_auth_method":"none","contact":"hello@example.com"}'};
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://app.buildworkpro.com/api/v1/oauth/register \ --header 'Content-Type: application/json' \ --data '{ "client_name": "example", "redirect_uris": [ "https://example.com" ], "grant_types": [ "authorization_code", "refresh_token" ], "scope": "", "token_endpoint_auth_method": "none", "contact": "hello@example.com" }'Self-registers a new OAuth client. Public endpoint — no authentication required. Per-IP rate-limited to 5 requests/minute. Each redirect_uri must be https, a loopback http URL on any port (http://127.0.0.1:{port}, http://localhost:{port}, http://[::1]:{port} — RFC 8252 §7.3), or a private-use scheme such as cursor:// (RFC 8252 §7.1); script-injection schemes (javascript:, data:, file:, blob:), embedded credentials, and fragments are rejected.
Request Body
Section titled “ Request Body ”
Media type
application/json
object
client_name
required
string
redirect_uris
required
Array<string>
grant_types
Array<string>
scope
string
token_endpoint_auth_method
string
contact
string
format: email
Responses
Section titled “ Responses ”Client registered
Media type
application/json
object
client_id
required
string
client_secret
string
client_id_issued_at
required
integer
client_name
required
string
client_secret_expires_at
integer
redirect_uris
required
Array<string>
grant_types
required
Array<string>
scope
required
string
token_endpoint_auth_method
required
string
Example
{ "token_endpoint_auth_method": "none"}RFC 7591 error envelope (invalid_client_metadata, invalid_redirect_uri, invalid_scope)
Media type
application/json
object
error
required
string
error_description
string
Example generated
{ "error": "example", "error_description": "example"}Per-IP rate limit exceeded
Media type
application/json
object
error
required
string
error_description
string
Example generated
{ "error": "example", "error_description": "example"}