---
title: "Create OAuth client"
method: POST
path: "/v1/connect/{project_id}/oauth_apps"
---

# Create OAuth client

`POST /v1/connect/{project_id}/oauth_apps`

Register a custom OAuth client for an app

## Request body

- CreateOauthAppOpts
  - `app` string, required — The app's ID or name slug. The app must have custom OAuth clients enabled.
  - `client_id` string, required — The OAuth client ID registered with the upstream provider
  - `client_secret` string, required — The OAuth client secret. Write-only; never returned in responses.
  - `name` string — Display name of the OAuth client
  - `description` string — Description of the OAuth client
  - `scopes` string[] — OAuth scopes to request when users connect through this client
  - `additional_scopes` string[] — Extra OAuth scopes users may grant on top of the base scopes

## Response `201`

OAuth client created

- OauthApp — Response object for a Pipedream app's metadata
  - `id` string, nullable, required — Hash ID for the OAuth client
  - `name_slug` string, required — The name slug of the target app (see https://pipedream.com/docs/connect/quickstart#find-your-apps-name-slug)
  - `name` string, required — The human-readable name of the app
  - `auth_type` 'keys' | 'oauth' | 'none', nullable — The authentication type used by the app
  - `description` string, nullable — A short description of the app
  - `img_src` string, required — The URL to the app's logo
  - `custom_fields_json` string, nullable, required — A JSON string representing the custom fields for the app
  - `categories` string[], required — Categories associated with the app
  - `featured_weight` number, required — A rough directional ordering of app popularity, subject to changes by Pipedream
  - `scope_profiles` object[], required — Named subsets of the app's OAuth scopes that may be requested when users connect their accounts (via the `oauth_scope_profile` parameter). Empty for apps that don't define any.
    - `name` 'read_only' | 'read_write' | 'admin', required — The profile name. Pass this back as `oauth_scope_profile` when starting the OAuth flow for this app.
    - `scopes` string[], required — The actual OAuth scopes of the upstream API that the user will be asked to authorize when this profile is selected.
  - `client_id` string, required — The OAuth client ID registered with the upstream provider
  - `scopes` string[] — OAuth scopes requested when users connect through this client
  - `additional_scopes` string[], nullable — Extra OAuth scopes users may grant on top of the base scopes
  - `redirect_uri` string — The redirect URI to register with the upstream OAuth provider
  - `owner_id` string, required — Hash ID of the owner: the workspace (o_...) or the project (proj_...)
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400` — app not enabled for custom OAuth clients, or missing client_id/client_secret
- `429` — too many requests

## Changes

- **2026-09-03** `94fec36bee7d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pipedream/apis/pipedream-rest-api/changes/v1/connect/:project_id/oauth_apps/post.md)

---

[API](https://skmtc.dev/pipedream/apis/pipedream-rest-api.md) · [All operations](https://skmtc.dev/pipedream/apis/pipedream-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pipedream/pipedream-rest-api/revisions/94fec36bee7d/schema)
