# info.description
Search the EbooksDepository catalog and find bookshop links for ebooks and audiobooks. Anonymous and read-only: no key, no registration (see /auth.md). Every operation is a GET and therefore idempotent — retrying is always safe. Errors other than search degradation are RFC 9457 application/problem+json documents with a stable `code`; every response carries standard RateLimit headers. Human/agent twin: /api.md. The contract is served as YAML at /api/openapi.yaml and JSON at /api/openapi.json, with the conventional /openapi.json alias retained.

# paths./api/v1/search.get.description
Search by title, author, or ISBN. The response includes catalog metadata and bookshop links.

# paths./api/v1/search.get.parameters[].description
An optional ISO 639-1 book-language code.

# paths./api/v1/search.get.responses.200.headers.RateLimit.description
Current policy state, e.g. "public-api";r=59.

# paths./api/v1/search.get.responses.200.headers.RateLimit-Policy.description
The quota policy, e.g. "public-api";q=60;w=60.

# components.schemas.Problem.description
RFC 9457 problem document. Branch on `code`, not on prose; codes are documented at /api.md#errors.

# components.schemas.Problem.properties.errors.description
Present on validation_failed: parameter name to messages.

# components.responses.RateLimited.description
The client exceeded the public limit of 60 requests per minute. Wait Retry-After seconds.

# components.responses.RateLimited.headers.RateLimit.description
Current policy state, e.g. "public-api";r=59.

# components.responses.RateLimited.headers.RateLimit-Policy.description
The quota policy, e.g. "public-api";q=60;w=60.

# components.responses.ServerError.description
Any undocumented failure. Nothing about the failure leaks; retrying is safe (reads only).

# externalDocs.description
EbooksDepository developer portal and API quickstart