---
title: "Dynamic client registration (RFC 7591)"
method: POST
path: "/api/oauth/register"
tags: ["oauth"]
---

# Dynamic client registration (RFC 7591)

`POST /api/oauth/register`

## Request

- Base URL: `https://app.presify.io`
- URL: `https://app.presify.io/api/oauth/register`
- Auth: none declared

Open registration: no initial access token is required. Redirect URIs must be https, or http on localhost for development. Public clients (token_endpoint_auth_method "none") receive no secret; confidential clients receive a client_secret exactly once. Registration is throttled per IP and unused clients are cleaned up nightly.

## Request body

- ClientRegistrationRequest: RFC 7591 client metadata. Unknown fields are ignored.
  - `redirect_uris` string[], required: https URIs, or http on localhost/127.0.0.1 for development. Exact-match on authorize.
  - `client_name` string
  - `client_uri` string, uri
  - `token_endpoint_auth_method` 'none' | 'client_secret_basic' | 'client_secret_post'
  - `grant_types` string[]
  - `response_types` string[]
  - `scope` string: Only `presify:read` is issued.
  - `software_id` string
  - `software_version` string

## Response `201`

Client created.

- ClientRegistrationResponse
  - `client_id` string, uuid, required
  - `client_id_issued_at` integer, required: Unix seconds.
  - `client_name` string
  - `redirect_uris` string[], required
  - `grant_types` string[], required
  - `response_types` string[], required
  - `token_endpoint_auth_method` string, required
  - `scope` string, required
  - `client_secret` string: Confidential clients only. Shown once; only a hash is stored.
  - `client_secret_expires_at` integer: 0 = never expires (rotate by re-registering).

## Other responses

- `400`: Invalid registration request (invalid_client_metadata, invalid_redirect_uri).
- `429`: Registration throttled for this IP.

---

[API](https://skmtc.dev/presify/apis/presify-public-api.md) · [All operations](https://skmtc.dev/presify/apis/presify-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/presify/apis/presify-public-api/revisions/5e3fe7801ad1?raw)
