---
title: GET /api/v1/specs/{spec_id}/progress
description: Get Spec Progress
locale: en
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/api/specs/get-specs-spec-id-progress/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

:::note
Generated from the OpenAPI contract — do not edit by hand. Interactive explorer with full schemas: [https://entherium.duckdns.org:8443/reference](https://entherium.duckdns.org:8443/reference); frozen spec for this build: [openapi.json](/developers/api/openapi.json). Group: [specs](../).
:::

Get Spec Progress

Implementation progress grouped by spec section — each leaf §-anchor
with its label and whether a test covers it (`SPEC-NNN §X.Y` citation).

**Auth:** `Authorization: Bearer <token>` required

## Request

```sh
curl -sS -X GET "https://entherium.duckdns.org:8443/api/v1/specs/<spec_id>/progress" \
  -H "Authorization: Bearer <token>"
```

## Response `200`

The contract carries no example for this response; schema: `array of ProgressSection`. Field-level shape: [interactive explorer](https://entherium.duckdns.org:8443/reference).

## Returns

`array of ProgressSection` — Successful Response

| Field | Type | Description |
| --- | --- | --- |
| `anchors` | `array of ProgressAnchor` |  |
| `done` | `integer` |  |
| `section` | `string` |  |
| `title` | `string` |  |
| `total` | `integer` |  |

## Parameters

| Parameter | In | Required | Type | Default | Constraints | Description |
| --- | --- | --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` | — | — |  |

## Errors

| Code | Meaning | Body |
| --- | --- | --- |
| `400` | Malformed spec id (expected SPEC-NNN) | — |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `404` | Spec not found | — |
| `422` | Validation Error | `HTTPValidationError` |

Every error body is `{detail, code?, request_id, doc_url}` — `request_id` is the value to quote, `doc_url` points at the [Errors reference](../../../reference/errors/).
