---
title: "GET /v1/origin/repos/{ownerSlug}/{repoName}"
method: GET
path: "/v1/origin/repos/{ownerSlug}/{repoName}"
tags: ["OriginService"]
---

# GET /v1/origin/repos/{ownerSlug}/{repoName}

`GET /v1/origin/repos/{ownerSlug}/{repoName}`

## Request

- Base URL: `https://api.cursor.com`
- URL: `https://api.cursor.com/v1/origin/repos/{ownerSlug}/{repoName}`
- Auth: HTTP bearer

Returns a single repo by its `(owner_id, name)` identifier.

## Path parameters

- `ownerSlug` string, required
- `repoName` string, required

## Response `200`

OK

- Repo: A repository.
  - `id` string
  - `name` string, required: The repo name, unique to its owner. Required on create.
  - `fullName` string: "{owner.login}/{name}". Derived.
  - `owner` Owner: The owner of a repo.
    - `slug` string: Unique URL-friendly name of the owner.
    - `id` string: Unique ID of the owner namespace.
    - `type` 'team' | 'user': `team` or `user`. Output-only; unset when unknown.
  - `defaultBranch` string: Default branch name. Always set on responses. On create, omitting this field or leaving it empty defaults to "main".
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `pushedAt` string, date-time: Most-recent-push timestamp on any branch; absent until the first push.
  - `cloneUrl` string: HTTPS URL for cloning the repository.
  - `mirror` RepositoryMirror: The external source and lifecycle state of a mirrored repository.
    - `source` 'github'
    - `sourceId` string: Opaque repository identifier assigned by the source.
    - `status` 'inbound': Effective direction during a transition, until cutover completes.
  - `visibility` 'internal' | 'private': Repository visibility, `internal` or `private`.
  - `allowMergeCommit` boolean: Whether pull requests may land as merge commits.
  - `allowSquashMerge` boolean: Whether pull requests may land as squash merges.
  - `deleteBranchOnMerge` boolean: Whether the head branch is deleted automatically on merge.
  - `webUrl` string: Web URL for this repository on Cursor.

## 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)
