OAuth applications are designed for web, mobile, desktop, and CLI applications where a user needs to authenticate.
{ "object": "connect_application", "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "name": "My Application", "description": "Application description", "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": false, "is_first_party": true, "scopes": ["example-permission:read", "example-permission:write"], "created_at": "2024-01-15T12:30:00.000Z", "updated_at": "2024-01-15T12:30:00.000Z" }
{ "object": "connect_application", "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "name": "My Application", "description": "Application description", "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": false, "is_first_party": false, "was_dynamically_registered": false, "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "scopes": ["example-permission:read", "example-permission:write"], "created_at": "2024-01-15T12:30:00.000Z", "updated_at": "2024-01-15T12:30:00.000Z" }
{ "object": "connect_application", "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "name": "My Application", "description": "Application description", "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": false, "is_first_party": false, "was_dynamically_registered": true, "scopes": [], "created_at": "2024-01-15T12:30:00.000Z", "updated_at": "2024-01-15T12:30:00.000Z" }
| { | |
| "object": "connect_application", | |
| "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "name": "My Application", | |
| "description": "Application description", | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": false, | |
| "is_first_party": true, | |
| "scopes": ["example-permission:read", "example-permission:write"], | |
| "created_at": "2024-01-15T12:30:00.000Z", | |
| "updated_at": "2024-01-15T12:30:00.000Z" | |
| } |
| { | |
| "object": "connect_application", | |
| "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "name": "My Application", | |
| "description": "Application description", | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": false, | |
| "is_first_party": false, | |
| "was_dynamically_registered": false, | |
| "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "scopes": ["example-permission:read", "example-permission:write"], | |
| "created_at": "2024-01-15T12:30:00.000Z", | |
| "updated_at": "2024-01-15T12:30:00.000Z" | |
| } |
| { | |
| "object": "connect_application", | |
| "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "name": "My Application", | |
| "description": "Application description", | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": false, | |
| "is_first_party": false, | |
| "was_dynamically_registered": true, | |
| "scopes": [], | |
| "created_at": "2024-01-15T12:30:00.000Z", | |
| "updated_at": "2024-01-15T12:30:00.000Z" | |
| } |
OAuth ApplicationM2M applications are designed for server-to-server authentication without user interaction.
{ "object": "connect_application", "id": "app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "client_id": "client_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "name": "Backend Service", "description": "Machine-to-machine application for API access", "application_type": "m2m", "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "scopes": ["api:read", "api:write", "api:admin"], "created_at": "2024-01-15T12:30:00.000Z", "updated_at": "2024-01-15T12:30:00.000Z" }
M2M ApplicationRetrieve details for a specific Connect Application by ID or client ID.
curl "https://api.workos.com/connect/applications/conn_app_01HXYZ123456789ABCDEFGHIJ" \ --header "Authorization: Bearer sk_example_123456789"
{ "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": true, "is_first_party": true, "object": "connect_application", "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", "client_id": "client_01HXYZ123456789ABCDEFGHIJ", "description": "An application for managing user access", "name": "My Application", "scopes": [ "openid", "profile", "email" ], "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }
| curl "https://api.workos.com/connect/applications/conn_app_01HXYZ123456789ABCDEFGHIJ" \ | |
| --header "Authorization: Bearer sk_example_123456789" |
| require "workos" | |
| WorkOS.configure do |config| | |
| config.api_key = "sk_example_123456789" | |
| end | |
| WorkOS.client.connect.get_application(id: "conn_app_01HXYZ123456789ABCDEFGHIJ") |
| from workos import WorkOSClient | |
| client = WorkOSClient(api_key="sk_example_123456789", client_id="client_123456789") | |
| client.connect.get_application(id_="conn_app_01HXYZ123456789ABCDEFGHIJ") |
| package main | |
| import ( | |
| "context" | |
| "github.com/workos/workos-go/v9" | |
| ) | |
| func main() { | |
| client := workos.NewClient("sk_example_123456789") | |
| _, err := client.Connect().GetApplication(context.Background(), "conn_app_01HXYZ123456789ABCDEFGHIJ") | |
| if err != nil { | |
| panic(err) | |
| } | |
| } |
| <?php | |
| use WorkOS\WorkOS; | |
| $workos = new WorkOS( | |
| apiKey: "sk_example_123456789", | |
| clientId: "client_123456789", | |
| ); | |
| $workos->connect()->getApplication(id: "conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| import com.workos.WorkOS; | |
| WorkOS workos = new WorkOS("sk_example_123456789"); | |
| workos.connect.getApplication("conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| using WorkOS; | |
| var client = new WorkOSClient(new WorkOSOptions { | |
| ApiKey = "sk_example_123456789", | |
| ClientId = "client_123456789", | |
| }); | |
| await client.Connect.GetApplicationAsync("conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| use workos::Client; | |
| #[tokio::main] | |
| async fn main() -> Result<(), workos::Error> { | |
| let client = Client::builder() | |
| .api_key("sk_example_123456789") | |
| .client_id("client_123456789") | |
| .build(); | |
| let _result = client | |
| .connect() | |
| .get_application("conn_app_01HXYZ123456789ABCDEFGHIJ") | |
| .await?; | |
| Ok(()) | |
| } |
| { | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": true, | |
| "is_first_party": true, | |
| "object": "connect_application", | |
| "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", | |
| "client_id": "client_01HXYZ123456789ABCDEFGHIJ", | |
| "description": "An application for managing user access", | |
| "name": "My Application", | |
| "scopes": [ | |
| "openid", | |
| "profile", | |
| "email" | |
| ], | |
| "created_at": "2026-01-15T12:00:00.000Z", | |
| "updated_at": "2026-01-15T12:00:00.000Z" | |
| } |
GET/connect /applications /:idParameters Returns List all Connect Applications in the current environment with optional filtering.
curl "https://api.workos.com/connect/applications" \ --header "Authorization: Bearer sk_example_123456789"
{ "object": "list", "data": [ { "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": true, "is_first_party": true, "object": "connect_application", "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", "client_id": "client_01HXYZ123456789ABCDEFGHIJ", "description": "An application for managing user access", "name": "My Application", "scopes": [ "openid", "profile", "email" ], "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" } ], "list_metadata": { "before": "conn_app_01HXYZ123456789ABCDEFGHIJ", "after": "conn_app_01HXYZ987654321KJIHGFEDCBA" } }
| curl "https://api.workos.com/connect/applications" \ | |
| --header "Authorization: Bearer sk_example_123456789" |
| require "workos" | |
| WorkOS.configure do |config| | |
| config.api_key = "sk_example_123456789" | |
| end | |
| WorkOS.client.connect.list_applications |
| from workos import WorkOSClient | |
| client = WorkOSClient(api_key="sk_example_123456789", client_id="client_123456789") | |
| client.connect.list_applications() |
| package main | |
| import ( | |
| "context" | |
| "github.com/workos/workos-go/v9" | |
| ) | |
| func main() { | |
| client := workos.NewClient("sk_example_123456789") | |
| _, err := client.Connect().ListApplications(context.Background()) | |
| if err != nil { | |
| panic(err) | |
| } | |
| } |
| <?php | |
| use WorkOS\WorkOS; | |
| $workos = new WorkOS( | |
| apiKey: "sk_example_123456789", | |
| clientId: "client_123456789", | |
| ); | |
| $workos->connect()->listApplications(); |
| import com.workos.WorkOS; | |
| WorkOS workos = new WorkOS("sk_example_123456789"); | |
| workos.connect.listApplications(); |
| using WorkOS; | |
| var client = new WorkOSClient(new WorkOSOptions { | |
| ApiKey = "sk_example_123456789", | |
| ClientId = "client_123456789", | |
| }); | |
| await client.Connect.ListApplicationsAsync(); |
| use workos::Client; | |
| #[tokio::main] | |
| async fn main() -> Result<(), workos::Error> { | |
| let client = Client::builder() | |
| .api_key("sk_example_123456789") | |
| .client_id("client_123456789") | |
| .build(); | |
| let _result = client | |
| .connect() | |
| .list_applications() | |
| .await?; | |
| Ok(()) | |
| } |
| { | |
| "object": "list", | |
| "data": [ | |
| { | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": true, | |
| "is_first_party": true, | |
| "object": "connect_application", | |
| "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", | |
| "client_id": "client_01HXYZ123456789ABCDEFGHIJ", | |
| "description": "An application for managing user access", | |
| "name": "My Application", | |
| "scopes": [ | |
| "openid", | |
| "profile", | |
| "email" | |
| ], | |
| "created_at": "2026-01-15T12:00:00.000Z", | |
| "updated_at": "2026-01-15T12:00:00.000Z" | |
| } | |
| ], | |
| "list_metadata": { | |
| "before": "conn_app_01HXYZ123456789ABCDEFGHIJ", | |
| "after": "conn_app_01HXYZ987654321KJIHGFEDCBA" | |
| } | |
| } |
GET/connect /applicationsParameters Returns objectCreate a new Connect Application. Supports both OAuth and Machine-to-Machine (M2M) application types.
curl -X POST https://api.workos.com/connect/applications \ --header "Authorization: Bearer sk_example_123456789" \ --header "Content-Type: application/json" \ --data '{ "name": "My OAuth App", "application_type": "oauth", "description": "Customer-facing OAuth application", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": false, "is_first_party": false, "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "scopes": ["example-permission:write"] }'
curl -X POST https://api.workos.com/connect/applications \ --header "Authorization: Bearer sk_example_123456789" \ --header "Content-Type: application/json" \ --data '{ "name": "My M2M App", "application_type": "m2m", "description": "Backend service application", "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", "scopes": ["api:read", "api:write"] }'
{ "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": true, "is_first_party": true, "object": "connect_application", "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", "client_id": "client_01HXYZ123456789ABCDEFGHIJ", "description": "An application for managing user access", "name": "My Application", "scopes": [ "openid", "profile", "email" ], "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }
| curl -X POST https://api.workos.com/connect/applications \ | |
| --header "Authorization: Bearer sk_example_123456789" \ | |
| --header "Content-Type: application/json" \ | |
| --data '{ | |
| "name": "My OAuth App", | |
| "application_type": "oauth", | |
| "description": "Customer-facing OAuth application", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": false, | |
| "is_first_party": false, | |
| "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "scopes": ["example-permission:write"] | |
| }' |
| curl -X POST https://api.workos.com/connect/applications \ | |
| --header "Authorization: Bearer sk_example_123456789" \ | |
| --header "Content-Type: application/json" \ | |
| --data '{ | |
| "name": "My M2M App", | |
| "application_type": "m2m", | |
| "description": "Backend service application", | |
| "organization_id": "org_01J9Q2Z3X4Y5W6V7U8T9S0R1Q", | |
| "scopes": ["api:read", "api:write"] | |
| }' |
| { | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": true, | |
| "is_first_party": true, | |
| "object": "connect_application", | |
| "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", | |
| "client_id": "client_01HXYZ123456789ABCDEFGHIJ", | |
| "description": "An application for managing user access", | |
| "name": "My Application", | |
| "scopes": [ | |
| "openid", | |
| "profile", | |
| "email" | |
| ], | |
| "created_at": "2026-01-15T12:00:00.000Z", | |
| "updated_at": "2026-01-15T12:00:00.000Z" | |
| } |
POST/connect /applicationsReturns Update an existing Connect Application. For OAuth applications, you can update redirect URIs. For all applications, you can update the name, description, and scopes.
curl --request PUT \ --url "https://api.workos.com/connect/applications/conn_app_01HXYZ123456789ABCDEFGHIJ" \ --header "Authorization: Bearer sk_example_123456789" \ --header "Content-Type: application/json" \ -d @- <<'BODY' { "name": "My Application", "description": "An application for managing user access", "scopes": [ "openid", "profile", "email" ], "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ] } BODY
{ "application_type": "oauth", "redirect_uris": [ { "uri": "https://example.com/callback", "default": true } ], "uses_pkce": true, "is_first_party": true, "object": "connect_application", "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", "client_id": "client_01HXYZ123456789ABCDEFGHIJ", "description": "An application for managing user access", "name": "My Application", "scopes": [ "openid", "profile", "email" ], "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }
| curl --request PUT \ | |
| --url "https://api.workos.com/connect/applications/conn_app_01HXYZ123456789ABCDEFGHIJ" \ | |
| --header "Authorization: Bearer sk_example_123456789" \ | |
| --header "Content-Type: application/json" \ | |
| -d @- <<'BODY' | |
| { | |
| "name": "My Application", | |
| "description": "An application for managing user access", | |
| "scopes": [ | |
| "openid", | |
| "profile", | |
| "email" | |
| ], | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ] | |
| } | |
| BODY |
| require "workos" | |
| WorkOS.configure do |config| | |
| config.api_key = "sk_example_123456789" | |
| end | |
| WorkOS.client.connect.update_application(id: "conn_app_01HXYZ123456789ABCDEFGHIJ") |
| from workos import WorkOSClient | |
| client = WorkOSClient(api_key="sk_example_123456789", client_id="client_123456789") | |
| client.connect.update_application(id_="conn_app_01HXYZ123456789ABCDEFGHIJ") |
| package main | |
| import ( | |
| "context" | |
| "github.com/workos/workos-go/v9" | |
| ) | |
| func main() { | |
| client := workos.NewClient("sk_example_123456789") | |
| _, err := client.Connect().UpdateApplication(context.Background(), "conn_app_01HXYZ123456789ABCDEFGHIJ") | |
| if err != nil { | |
| panic(err) | |
| } | |
| } |
| <?php | |
| use WorkOS\WorkOS; | |
| $workos = new WorkOS( | |
| apiKey: "sk_example_123456789", | |
| clientId: "client_123456789", | |
| ); | |
| $workos->connect()->updateApplication(id: "conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| import com.workos.WorkOS; | |
| WorkOS workos = new WorkOS("sk_example_123456789"); | |
| workos.connect.updateApplication("conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| using WorkOS; | |
| var client = new WorkOSClient(new WorkOSOptions { | |
| ApiKey = "sk_example_123456789", | |
| ClientId = "client_123456789", | |
| }); | |
| await client.Connect.UpdateApplicationAsync("conn_app_01HXYZ123456789ABCDEFGHIJ"); |
| use workos::Client; | |
| #[tokio::main] | |
| async fn main() -> Result<(), workos::Error> { | |
| let client = Client::builder() | |
| .api_key("sk_example_123456789") | |
| .client_id("client_123456789") | |
| .build(); | |
| let _result = client | |
| .connect() | |
| .update_application("conn_app_01HXYZ123456789ABCDEFGHIJ") | |
| .await?; | |
| Ok(()) | |
| } |
| { | |
| "application_type": "oauth", | |
| "redirect_uris": [ | |
| { | |
| "uri": "https://example.com/callback", | |
| "default": true | |
| } | |
| ], | |
| "uses_pkce": true, | |
| "is_first_party": true, | |
| "object": "connect_application", | |
| "id": "conn_app_01HXYZ123456789ABCDEFGHIJ", | |
| "client_id": "client_01HXYZ123456789ABCDEFGHIJ", | |
| "description": "An application for managing user access", | |
| "name": "My Application", | |
| "scopes": [ | |
| "openid", | |
| "profile", | |
| "email" | |
| ], | |
| "created_at": "2026-01-15T12:00:00.000Z", | |
| "updated_at": "2026-01-15T12:00:00.000Z" | |
| } |
PUT/connect /applications /:idParameters Returns Delete an existing Connect Application.
curl -X DELETE https://api.workos.com/connect/applications/app_01J9Q2Z3X4Y5W6V7U8T9S0R1Q \ --header "Authorization: Bearer sk_example_123456789"
require "workos" WorkOS.configure do |config| config.api_key = "sk_example_123456789" end WorkOS.client.connect.delete_application(id: "conn_app_01HXYZ123456789ABCDEFGHIJ")
from workos import WorkOSClient client = WorkOSClient(api_key="sk_example_123456789", client_id="client_123456789") client.connect.delete_application(id_="conn_app_01HXYZ123456789ABCDEFGHIJ")
package main import ( "context" "github.com/workos/workos-go/v9" ) func main() { client := workos.NewClient("sk_example_123456789") _, err := client.Connect().DeleteApplication(context.Background(), "conn_app_01HXYZ123456789ABCDEFGHIJ") if err != nil { panic(err) } }
<?php use WorkOS\WorkOS; $workos = new WorkOS( apiKey: "sk_example_123456789", clientId: "client_123456789", ); $workos->connect()->deleteApplication(id: "conn_app_01HXYZ123456789ABCDEFGHIJ");
import com.workos.WorkOS; WorkOS workos = new WorkOS("sk_example_123456789"); workos.connect.deleteApplication("conn_app_01HXYZ123456789ABCDEFGHIJ");
using WorkOS; var client = new WorkOSClient(new WorkOSOptions { ApiKey = "sk_example_123456789", ClientId = "client_123456789", }); await client.Connect.DeleteApplicationAsync("conn_app_01HXYZ123456789ABCDEFGHIJ");
use workos::Client; #[tokio::main] async fn main() -> Result<(), workos::Error> { let client = Client::builder() .api_key("sk_example_123456789") .client_id("client_123456789") .build(); let _result = client .connect() .delete_application("conn_app_01HXYZ123456789ABCDEFGHIJ") .await?; Ok(()) }
DELETE/connect /applications /:idParameters Returns