Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agentvolumes.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

All Agent Volumes Registry API error responses use RFC 9457 Problem Details with the application/problem+json content type. Each error has a type URI that identifies the problem category, a human-readable title, and an HTTP status code. An optional detail field provides context-specific information about the specific failure. The type URI is the stable machine-readable identifier your client should switch on — not the title, which may vary.

Error response format

{
  "type": "https://agentvolumes.org/problems/not-found",
  "title": "Not Found",
  "status": 404,
  "detail": "Volume '@acme/research-agent-pack' does not exist.",
  "instance": "/api/v1/volumes/@acme/research-agent-pack/1.4.0"
}
FieldTypeDescription
typestring (URI)Machine-readable problem type identifier. Always present.
titlestringHuman-readable problem title. Always present.
statusintegerHTTP status code repeated in the body. Always present.
detailstringContext-specific human-readable explanation. Optional.
instancestring (URI reference)Reference to the specific occurrence. Optional.

Problem type URIs

All Agent Volumes problem type URIs follow the pattern:
https://agentvolumes.org/problems/<slug>
See the Problem Details type URI index for stable public documentation pages for every closed v0.1 problem slug.

Complete error table

SlugStatusMeaning
authentication-required401Bearer authentication is missing, malformed, unknown, expired, or revoked
authorization-failed403The authenticated caller is not authorized for the requested operation or resource
not-found404The requested resource does not exist or is not visible to the caller
validation-failed400Request payload, parameters, manifest, or metadata failed validation
invalid-manifest400A submitted volume.toml is structurally or semantically invalid
invalid-archive400A submitted hosted archive violates the v0.1 archive transport profile
identity-mismatch409A package identity disagrees with its route, manifest, or metadata
version-conflict409The target version already exists or cannot be reused
digest-mismatch400Submitted or resolved bytes do not match the declared digest
subject-binding-mismatch400A trust artifact does not bind to the intended release subject
inconsistent-registry-state409Index, exact metadata, or trust metadata cannot be reconciled
upload-expired410An upload intent expired before finalization
missing-uploaded-bytes400Finalization was requested before upload bytes were available
invalid-upload-state409The upload intent is not in a state that can be finalized
idempotency-conflict409A reused idempotency key conflicts with an earlier request
payload-too-large413The submitted payload exceeds the bibliotheca’s accepted limit
unsupported-media-type415The submitted payload media type is not supported
permission-escalation400Component permissions exceed the parent volume permission boundary
rate-limited429The request was rate limited
The problem type set above is closed for the v0.1 portable baseline. Bibliothecas must not introduce additional problem types in the https://agentvolumes.org/problems/ namespace.

Endpoint-to-error mapping

EndpointCommon problem slugs
GET /api/v1/searchvalidation-failed, rate-limited
GET /api/v1/index/volumes/...not-found, inconsistent-registry-state, rate-limited
GET /api/v1/volumes/{name}/{version}authorization-failed, not-found, inconsistent-registry-state, rate-limited
POST /api/v1/volumes/{name}authentication-required, authorization-failed, validation-failed, version-conflict, idempotency-conflict, rate-limited
POST /api/v1/volumes/{name}/uploads/{uploadId}/finalizeauthentication-required, authorization-failed, not-found, invalid-manifest, invalid-archive, digest-mismatch, identity-mismatch, missing-uploaded-bytes, invalid-upload-state, idempotency-conflict, upload-expired, payload-too-large, unsupported-media-type, permission-escalation, rate-limited
GET /api/v1/volumes/{name}/{version}/trust/summarynot-found, inconsistent-registry-state, rate-limited
GET /api/v1/volumes/{name}/{version}/trust/detailnot-found, inconsistent-registry-state, rate-limited
POST /api/v1/volumes/{name}/{version}/trust/uploadsauthentication-required, authorization-failed, not-found, subject-binding-mismatch, idempotency-conflict, payload-too-large, unsupported-media-type, rate-limited
POST /api/v1/volumes/{name}/{version}/trust/uploads/{uploadId}/finalizeauthentication-required, authorization-failed, not-found, missing-uploaded-bytes, invalid-upload-state, digest-mismatch, subject-binding-mismatch, idempotency-conflict, upload-expired, payload-too-large, unsupported-media-type, rate-limited
GET /api/v1/advisoriesvalidation-failed, rate-limited
GET /api/v1/advisories/{advisoryId}not-found, rate-limited
GET /api/v1/capabilitiesrate-limited

Authentication and authorization errors

A 401 always means the token itself is the problem — it is missing, malformed, unknown, expired, or revoked:
{
  "type": "https://agentvolumes.org/problems/authentication-required",
  "title": "Authentication required",
  "status": 401
}
A 403 means authentication succeeded but the token lacks permission for the specific operation or resource:
{
  "type": "https://agentvolumes.org/problems/authorization-failed",
  "title": "Authorization failed",
  "status": 403,
  "detail": "This token is not authorized to publish to @acme/my-volume."
}

Rate limit errors

When you exceed a rate limit tier, you receive:
{
  "type": "https://agentvolumes.org/problems/rate-limited",
  "title": "Rate limited",
  "status": 429
}
See Overview for the recommended rate limit tiers (anonymous, authenticated, and CI token).

Idempotency key errors

If you pass both an Idempotency-Key header and an idempotencyKey body field with different values, or if you reuse a key with conflicting request parameters, you receive:
{
  "type": "https://agentvolumes.org/problems/idempotency-conflict",
  "title": "Idempotency conflict",
  "status": 409
}
When only one form is present (header or body field), that value is used as the idempotency key. The header form is the preferred portable API surface.

Upload lifecycle errors

ScenarioProblem slugStatus
Finalize called before bytes were uploadedmissing-uploaded-bytes400
Upload intent expired before finalizeupload-expired410
Intent is in a state that cannot be finalizedinvalid-upload-state409
Uploaded bytes don’t match declared digestdigest-mismatch400
Trust artifact doesn’t bind to the release subjectsubject-binding-mismatch400

Permission escalation errors

If a volume.toml declares a component with permissions broader than its parent volume permits and a bibliotheca detects that escalation during validation, it can return:
{
  "type": "https://agentvolumes.org/problems/permission-escalation",
  "title": "Permission escalation",
  "status": 400,
  "detail": "Component 'arxiv-search' declares network=read-write but the volume permits only network=read."
}
Clients must fail before submission when they detect permission escalation locally. Do not rely solely on the server to catch this — validate your volume.toml before calling the publish endpoint.