---
title: "GET /v1/origin/apps/{appId}"
method: GET
path: "/v1/origin/apps/{appId}"
tags: ["OriginService"]
---

# GET /v1/origin/apps/{appId}

`GET /v1/origin/apps/{appId}`

## Request

- Base URL: `https://api.cursor.com`
- URL: `https://api.cursor.com/v1/origin/apps/{appId}`
- Auth: HTTP bearer

Returns a single app by its identifier.

 This is the management read for app publishers; GetAuthenticatedApp is
 the equivalent self-read for the app's own JWT credential.

## Path parameters

- `appId` string, required

## Response `200`

OK

- App: An Origin app.
  - `id` string: Globally unique app identifier.
  - `displayName` string
  - `webhookUrl` string
  - `events` string[]: Outbound webhook event subscriptions. The `installation.*` events are always delivered and never appear here.
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `installationRedirectUris` string[]: OAuth install callback allowlist: redirect URIs an app-initiated install may return to, matched exactly at authorize time.
  - `namespaceSlug` string: Slug of the namespace that owns (publishes) the app.
  - `description` string: Publisher-provided app description. Empty when unset.
  - `websiteUrl` string: Publisher website. Empty when unset.
  - `defaultScopes` string[]: Default scopes offered when the app is installed, as catalog scope strings.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: The addressed resource, or its repository, does not exist or is not visible to the caller. Not-found and no-access are deliberately indistinguishable; a 404 never confirms that the resource does not exist.
- `429`: Too Many Requests
- `default`: Default error response

---

[API](https://skmtc.dev/cursor/apis/cursor-origin-api.md) - [All operations](https://skmtc.dev/cursor/apis/cursor-origin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cursor/apis/cursor-origin-api/revisions/cbc1547d6ef7?raw)
