Core Work Routes

Use these endpoints to retrieve individual works, search across all works with filters, or normalize external identifiers.

CORE WORK ROUTES
GET /works/search // Search works with filters
GET /work/:id // Get a single work by ID (public ID, or external ID like DOI/PMID)

Search and List Works

Returns a paginated list of works matching the query parameters.

GET https://api.drylab.bio/v1/works/search
curl https://api.drylab.bio/v1/works/search?source=medrxiv&q=ACTA2 \
     -H "Authorization: Bearer <YOUR_API_KEY>"

Query parameters

Search filters

Parameter
Type
Description

q

string

Search query for title and abstract

source

string

Filter by source (biorxiv, medrxiv, arxiv)

license

string

Filter by license type

since

string

Filter works published after this date (ISO 8601)

until

string

Filter works published before this date (ISO 8601)

has_assets

boolean

Filter works that have downloadable assets

Pagination and sorting

Parameter
Type
Description

sort

string

Sort by created_at or published_at (default: published_at)

order

string

Sort order asc or desc (default: desc)

limit

integer

Number of results per page (default: 20, max: 100)

cursor

string

Pagination cursor

Content expansion

Parameter
Type
Description

expand

string

Comma-separated fields to expand (sections, blocks, assets, citations, all)

Response:

The WorkCoreSchema is shown here.

{
  "status": "completed",
  "results": [
    {
      "index": 0,
      "status": "success",
      "work": WorkCoreSchema,
      "data": {
        "sections": [
          /* present only if expand=sections */
        ],
        "blocks": [
          /* present only if expand=blocks */
        ],
        "assets": [
          /* present only if expand=assets */
        ],
        "citations": [
          /* present only if expand=citations */
        ]
      }
    },
  ],
  "next_cursor": "eyJzb3J0IjoiY3JlYXRlZF9hdCIsIm9yZGVyIjoiZGVzYyIsInAiOiIyMDI1LTA5LTA1VDEyOjA1OjAwLjAwMFoiLCJpZCI6ImRvaToxMC4xMDM4L3M0MTU4Ni0wMjUtMDEyMzQtNSJ9"
}

Retrieve a work

Retrieves a work by its source and identifier. Drylab IDs do not require to specify a source. Non-drylab IDs (e.g.) need to be passed as the URL-encoded version of the following format source:id, where source can be doi , medrxiv , biorxiv , arxiv , pmid , pmcid.

GET https://api.drylab.bio/v1/work/source:id
curl https://api.drylab.bio/v1/work/medrxiv%3A2025.08.08.25333110 \
     -H "Authorization: Bearer <YOUR_API_KEY>"
     
curl https://api.drylab.bio/v1/work/doi%3A10.1101%2F2025.08.20.25334101 \
     -H "Authorization: Bearer <YOUR_API_KEY>"
     
curl https://api.drylab.bio/v1/work/6682246689 \
     -H "Authorization: Bearer <YOUR_API_KEY>"

Query parameters:

Version selection

Parameter
Type
Description

versions

string

Version selection (all, none, or specific version label)

Content expansion

Parameter
Type
Description

expand

string

Comma-separated fields to expand (sections, blocks, assets, citations, all)

Metadata options

Parameter
Type
Description

raw

boolean

Include raw XML metadata

Response:

The WorkCoreSchema is shown here.

{
  "status": "completed",
  "work": WorkCoreSchema,
  "data": {
    "sections": [
      /* present only if expand=sections */
    ],
    "blocks": [
      /* present only if expand=blocks */
    ],
    "assets": [
      /* present only if expand=assets */
    ],
    "citations": [
      /* present only if expand=citations */
    ]
  }
}

Normalize DOI

Normalizes a DOI and returns the work identifier for use with other endpoints.

GET https://api.drylab.ai/v1/work/doi/*
curl https://api.drylab.ai/v1/work/doi/10.1101/2025.08.07.25333034 \
     -H "Authorization: Bearer <YOUR_API_KEY>

Query parameters:

Parameter
Type
Description

*

string

The DOI path (everything after /doi/)

Response:

{
   "id": "doi%3A10.1101%2F2025.08.07.25333034"
}

Last updated