Conventions & envelope
Scholar Metadata API response shape, errors, and pagination.
List response envelope
Metadata entity list endpoints return a meta block plus a results array. Single-entity endpoints return the bare entity object with no wrapper, matching the compatibility API.
- GET
/v1/oa/works{ meta: { count, db_response_time_ms, page, per_page }, results: [...] }
Pagination
Both 1-based page pagination and cursor pagination are supported. For result sets beyond ~10k rows, prefer cursor.
- GET
/v1/oa/works?page=2&per_page=50Basic page pagination. Max per_page is 200.
- GET
/v1/oa/works?cursor=*Start a cursor traversal. The response's meta.next_cursor feeds the next call.
Errors
Errors return the compatibility body { error, message } with the appropriate HTTP status.
- GET
404 Not Found{ "error": "Not found.", "message": "Work not found." }
- GET
400 Bad Request{ "error": "invalid_filter", "message": "..." }
- GET
429 Too Many RequestsIncludes Retry-After header.
Rate limiting & polite pool
Anonymous traffic shares a shared-tier bucket; authenticated tenants receive dedicated quotas. Pass mailto to share contact info with operators, matching the legacy flow. Include a meaningful User-Agent — bots without one are deprioritized.