
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. filteris a substring match, not a glob or regex.- Follow
nextPageTokenuntil it is empty; do not invent page numbers. - Listing does not require the paid-plan eligibility that Create Repo enforces for new writes.