---
title: "Submit a Custom OAuth App's client secret (persist)"
method: PUT
path: "/v1/oauth-apps/{id}"
tags: ["oauth-apps"]
---

# Submit a Custom OAuth App's client secret (persist)

`PUT /v1/oauth-apps/{id}`

## Request

- Base URL: `https://api.typenode.ai`
- URL: `https://api.typenode.ai/v1/oauth-apps/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- SubmitCustomOAuthAppSecret
  - `additional_body_params` object
  - `allowed_scopes` string[], required
  - `already_revoked_answer` object
    - `error` string, required
    - `status` integer, required
  - `auth_params` object
  - `authorize_url` string, required
  - `client_id` string, required
  - `client_secret` string, required
  - `granted_scope_separator` ' ' | ','
  - `id` string, required
  - `name` string, required
  - `pkce_required` boolean
  - `revocation_url` string
  - `scope_separator` ' ' | ','
  - `token_content_type` 'json' | 'form'
  - `token_endpoint_auth_method` 'basic' | 'header' | 'body' | 'none'
  - `token_url` string, required

## Response `200`

The app is persisted into the credential vault; registered or already_registered.

- union
  - object
    - `oauth_app_id` string, required
    - `status` 'registered', required
  - object
    - `oauth_app_id` string, required
    - `status` 'already_registered', required

## Other responses

- `401`: Authentication required.
- `default`: An error occurred (RFC 9457 problem+json).

## Changes

- **2026-10-20** `9b943024aa98`: 1 info
  - added the new optional request property `already_revoked_answer`

[Operation history](https://skmtc.dev/typenode/apis/typenode-management-api/changes/v1/oauth-apps/:id/put.md)

---

[API](https://skmtc.dev/typenode/apis/typenode-management-api.md) · [All operations](https://skmtc.dev/typenode/apis/typenode-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/typenode/apis/typenode-management-api/revisions/9b943024aa98?raw)
