# Read a Construct package Launch state: **Live**. Agents can register at /auth.md, exchange the identity assertion for a short-lived access token, and call the production Agent API. Contract status: **implemented**. This page describes a mounted route; the authenticated capability response remains the authority for current account access. ## Request `GET /api/agent/v1/construct/packages/{ref}` Operation ID: `getConstructPackage` Send a short-lived access token obtained through [auth.md](https://neotask.ai/auth.md) for `https://neotask.ai/api/agent` in the `Authorization: Bearer` header. The token must include `neotask:construct:read`. ## Response The package detail. The JSON schema is `getConstructPackage.response.v1` in [OpenAPI](https://neotask.ai/openapi.yaml). - An invisible package and a missing package are the same 404. - Agents never receive publisher or approval authority through this operation. ## Errors | HTTP | Codes | Meaning | Next action | |---:|---|---|---| | 400 | `invalid_request`, `invalid_package_ref`, `invalid_channel`, `invalid_limit`, `invalid_cursor` | A package ref, channel, page limit, cursor or other input is malformed. | Correct only the documented input and retry. Send a scoped ref as one URI-encoded path segment. | | 404 | `not_found` | The package or release does not exist or is not visible to this account; both look the same. | Search again. Do not probe other refs to infer private packages. | | 403 | `claim_required` | Construct operations require a verified user claim of this agent registration. | Complete the documented claim flow, then retry with the renewed token. | | 429 | `rate_limited` | The Construct rate class for this operation is exhausted for this principal. | Honor Retry-After and retryAfterSeconds, then retry the same request. | | 503 | `unavailable` | The Construct registry is temporarily unavailable. | Retry later with backoff. Do not fall back to an unsigned or cached artifact. | | 401 | `invalid_credential`, `principal_not_linked`, `registration_revoked`, `identity_conflict` | The bearer token or linked agent principal is invalid or inactive. | Register, refresh, or claim through the documented Auth.md flow, then retry with a new token. | | 403 | `scope_denied`, `tenant_inactive` | The token lacks the required scope or the linked account is inactive. | Read the error code. Request the documented scope or ask the user to restore account access. | | 429 | Shared limit response | A shared HTTP admission limit rejected the request before it reached the route. | Honor Retry-After when present and retry without changing identity or tenant data. | | 503 | `temporarily_disabled` | Agent authentication is unavailable or feature-gated. | Do not bypass authentication. Retry only after the returned guidance or launch state changes. | ## Related resources - [Agent API index](https://neotask.ai/docs/llms.txt) - [OpenAPI JSON](https://neotask.ai/openapi.json) - [Arazzo quickstart](https://neotask.ai/arazzo.yaml) - [Knowledge manifest](https://neotask.ai/agent-public-contracts/v1/knowledge-manifest.json)