Finding Reviewers

Suggest peer reviewers for a manuscript: researchers who recently published close to it, each with a contact email, with the authors' co-authors and colleagues left out. The search runs in the background. Start it, then poll it until it ends.

Start a search: POST https://www.reviewerzero.ai/api/v1/reviewer-searches

curl -X POST https://www.reviewerzero.ai/api/v1/reviewer-searches \
  -H "Authorization: Bearer rz_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Predicting scientific success",
    "abstract": "We research scientists often worry about the future of our careers...",
    "keywords": ["science of science", "citation dynamics"],
    "authors": [
      { "name": "Daniel Acuna", "affiliation": "University of Colorado Boulder", "orcid": "0000-0002-7765-1595" }
    ],
    "reviewers": 10
  }'

Request fields:

FieldTypeDefaultDescription
titlestringrequiredThe manuscript's title
abstractstringrequiredThe manuscript's abstract, 50 to 6,000 characters
keywordsstring[][]Up to 12 keywords; they widen the search beyond the wording of the abstract
authorsobject[][]Up to 40 authors, each with name and optionally affiliation and orcid. Without authors, conflicts of interest are not checked. An ORCID iD makes that check much more reliable.
reviewersinteger20How many reviewers to return, 5 to 20
papers_sinceintegerten years agoEarliest publication year used for matching
conflict_window_yearsinteger5Co-authorship with an author this recent counts as a conflict of interest
active_within_yearsinteger3People with no paper in this window are left out
recognized_journals_onlybooleanfalseLeave out people who mostly publish in journals that no recognized journal register lists

The response is 202 with the new search (status is queued). Keep its search_id.

Follow the search: GET https://www.reviewerzero.ai/api/v1/reviewer-searches/{search_id}

Poll every 10 to 30 seconds until status is completed, failed or canceled. While the search runs, progress says which step it is on, with a label you can show:

{
  "search_id": "52dac83b-d83a-4a35-a353-c5db640030c7",
  "status": "running",
  "progress": {
    "step": "contacts",
    "label": "Confirming identities and contact emails",
    "reviewers_found": 4,
    "reviewers_wanted": 10
  },
  "result": null
}

Once status is completed, result.reviewers lists the suggested reviewers, best match first:

{
  "name": "Jane Doe",
  "orcid": "0000-0001-2345-6789",
  "institution": { "name": "Example University", "country": "Canada", "ror": "https://ror.org/00example" },
  "match": "strong",
  "match_label": "Strong match",
  "acceptance": "likely",
  "acceptance_label": "Likely to accept",
  "career_stage": "mid",
  "career_label": "Mid-career",
  "h_index": 18,
  "last_publication_year": 2026,
  "papers": [{ "title": "...", "year": 2025, "venue": "Scientometrics", "url": "https://doi.org/..." }],
  "links": [{ "label": "ORCID record", "url": "https://orcid.org/0000-0001-2345-6789" }],
  "email": { "address": "jane.doe@example.edu", "kind": "institutional", "confidence": "high", "label": "Institutional address" },
  "other_emails": [],
  "works_with": [],
  "group_lead": true,
  "areas": []
}

result also carries excluded (people left out, each with reasons and kinds), areas (for an interdisciplinary manuscript, the areas of expertise its review panel needs; each reviewer's areas lists the ones they cover), authors (the manuscript's authors as found, with coauthors_checked) and notes. A failed search has error set instead. The interactive documentation lists every field.

Errors: 400 names the field that is missing or out of range. 402 means no reviewer search credits remain. 429 means 20 of your searches are already waiting or running; start more once some finish. A search uses one credit when it starts; if it fails or you stop it, the credit is given back. Your searches run one at a time for each organization (or your personal account); the others stay queued until it is their turn.

List your searches: GET https://www.reviewerzero.ai/api/v1/reviewer-searches

Your searches, newest first, including the ones started from the reviewer finder page in the app. With x-organization-id, the list holds the searches you started in that organization; without it, the ones in your personal account. offset (default 0) and limit (1 to 100, default 20) page through them.

curl "https://www.reviewerzero.ai/api/v1/reviewer-searches?limit=20" \
  -H "Authorization: Bearer rz_abc123def456"
{
  "searches": [
    {
      "search_id": "52dac83b-d83a-4a35-a353-c5db640030c7",
      "title": "Predicting scientific success",
      "status": "completed",
      "created_at": "2026-10-08T17:49:31.190Z",
      "completed_at": "2026-10-08T17:50:24.086Z",
      "reviewers_found": 10
    }
  ],
  "pagination": { "total": 1, "count": 1, "offset": 0, "limit": 20, "has_more": false, "next_offset": null }
}

reviewers_found is null until a search has completed. Fetch a search's reviewers with GET /reviewer-searches/{search_id}; pass next_offset as offset for the next page.

Delete a search: DELETE https://www.reviewerzero.ai/api/v1/reviewer-searches/{search_id}

curl -X DELETE https://www.reviewerzero.ai/api/v1/reviewer-searches/52dac83b-d83a-4a35-a353-c5db640030c7 \
  -H "Authorization: Bearer rz_abc123def456"

The search is removed with its manuscript details and suggested reviewers, and the response is { "success": true, "message": "The search was deleted." }. A search still running is stopped first and its credit is given back. Deleting can't be undone: afterwards the search returns 404, as does any search that isn't yours.