API / list-origin-repos-via-api

API

List Origin Repos via the API

Page the repositories under an owner with GET https://api.cursor.com/v1/origin/repos/{ownerSlug}. Official reference: Origin API (OpenAPI OriginService_ListRepos).

Origin is in Early Beta and subject to change. Authenticate with a Cursor user access token that carries namespace:repositories:read. Installation tokens and app JWTs are not accepted on this list. Availability: Early Beta per the API overview.

Cost: 1 point against the user principal budget (ordinary read).

Create a repo under the same path with Create an Origin Repo via the API. Fetch one repo with Get an Origin Repo via the API.

Path parameters

Param Required Meaning
ownerSlug yes Parent owner entity slug

Query parameters

Param Required Meaning
pageSize no Max repos to return (default 30 when unset or 0; values above 100 clamp to 100)
pageToken no Opaque cursor from a previous response's nextPageToken; empty for the first page
filter no Optional case-insensitive substring filter on repo names
curl --request GET \
  --url 'https://api.cursor.com/v1/origin/repos/OWNER_SLUG?pageSize=30' \
  --header 'Authorization: Bearer YOUR_USER_ACCESS_TOKEN'

Filter by substring:

curl --request GET \
  --url 'https://api.cursor.com/v1/origin/repos/OWNER_SLUG?filter=rocket&pageSize=30' \
  --header 'Authorization: Bearer YOUR_USER_ACCESS_TOKEN'

Response

200 returns repositories and an optional nextPageToken (empty when there is no next page). Each repo matches the Create/Get shape: id, name, fullName, owner (slug, id, type), defaultBranch, createdAt, updatedAt, pushedAt, and cloneUrl.

Example shape from the OpenAPI:

{
  "repositories": [
    {
      "id": "repo_01k2ja2000e0080000000000q4",
      "name": "rocket",
      "fullName": "acme/rocket",
      "owner": {
        "slug": "acme",
        "id": "ns_01k2ja2000e0080000000000p3",
        "type": "team"
      },
      "defaultBranch": "main",
      "createdAt": "2026-08-01T09:30:00Z",
      "updatedAt": "2026-08-02T14:45:00Z",
      "pushedAt": "2026-08-02T14:45:00Z",
      "cloneUrl": "https://origin.cursor.com/git/acme/rocket.git"
    }
  ],
  "nextPageToken": ""
}

Errors

Status When
400 Bad request
401 Missing or invalid user token
403 Token lacks namespace:repositories:read
404 Owner not found or not visible (not-found and no-access are indistinguishable)
429 Rate limited

Pitfalls

  • Use a user access token. An installation oit_… token will not list namespace repos here.
  • filter is a substring match, not a glob or regex.
  • Follow nextPageToken until it is empty; do not invent page numbers.
  • Listing does not require the paid-plan eligibility that Create Repo enforces for new writes.

Related