---
title: "List the specifications of a project"
method: GET
path: "/api/projects/{projectId}/specs"
tags: ["API Specs"]
---

# List the specifications of a project

`GET /api/projects/{projectId}/specs`

## Request

- Base URL: `https://api.routebase.dev`
- URL: `https://api.routebase.dev/api/projects/{projectId}/specs`
- Auth: API key in header `X-API-Key`

Returns the specifications of a project together with the number of their
latest published version, so a pipeline can resolve a spec by name and see at a
glance what is live.

## Path parameters

- `ProjectId` string, uuid, required

## Query parameters

- `Skip` integer
- `Take` integer

## Headers

- `X-RB-Region` string

## Response `200`

A page of specifications.

- ApiSpecList: A page of API specifications.
  - `items` ApiSpec[], required: The specifications on this page.
    - `id` string, uuid, required: Public id of the specification.
    - `name` string, required: Display name of the specification, which is what the CLI resolves when you pass a name.
    - `version` string, required: The version string carried in the document itself.
    - `openApiVersion` 'v3_0' | 'v3_1', required: The OpenAPI dialect of a specification.
    - `description` string, nullable: Free-text note on the specification. Null when none was set.
    - `basePath` string, nullable: Path prefix shared by every endpoint, when the specification defines one.
    - `createdAt` string, date-time, required: When the specification was created, in UTC.
    - `modifiedAt` string, date-time, nullable: When the specification was last changed, in UTC. Null when it was never edited.
    - `rowVersion` string, nullable: Base64 concurrency token. Send it back on an update to catch a competing edit.
    - `latestPublishedVersion` string, nullable: Number of the most recent published version, or null when none is published yet.
  - `totalCount` integer, required: Total number of specifications in the project, ignoring paging.

## Other responses

- `401`: The API key is missing, invalid, expired or revoked. A US organization calling without `X-RB-Region: us` also lands here, because the request reached the wrong region.
- `403`: The key is valid but lacks the permission or the project scope for this call. A scoped key is also refused on organization level operations by design.
- `404`: The resource does not exist, or it belongs to another organization or project. Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.
- `429`: The rate limit was exceeded. The `Retry-After` header gives the seconds to wait.

---

[API](https://skmtc.dev/routebase/apis/routebase-public-api.md) · [All operations](https://skmtc.dev/routebase/apis/routebase-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/routebase/apis/routebase-public-api/revisions/7187df489f27?raw)
