Skip to main content

XRPC endpoints

This page documents all XRPC endpoints available in the Chive API. Endpoints are organized by namespace.

Shared definitions

The pub.chive.defs lexicon defines shared type definitions used across multiple endpoints:

DefinitionTypeValues
documentFormatstringpdf, docx, html, markdown, latex, jupyter, odt, rtf, epub, txt
publicationStatusstringeprint, preprint, under_review, revision_requested, accepted, in_press, published, retracted, withdrawn
supplementaryCategorystringappendix, figure, table, dataset, code, notebook, video, audio, presentation, protocol, questionnaire, other

These definitions are referenced by other lexicons using the ref type, for example:

{
"documentFormatSlug": { "type": "ref", "ref": "pub.chive.defs#documentFormat" }
}

Eprint namespace

Endpoints for querying eprint submissions.

pub.chive.eprint.getSubmission

Retrieve a single eprint by its AT URI.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesAT URI of the eprint

Response

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:abc123...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith"
},
"record": {
"title": "Novel Approach to Quantum Computing",
"abstract": "We present a new method...",
"authors": [...],
"fields": ["cs.QC", "quant-ph"],
"pdfBlob": {
"$type": "blob",
"ref": { "$link": "bafyreib..." },
"mimeType": "application/pdf",
"size": 1234567
},
"createdAt": "2025-01-15T10:30:00Z"
},
"indexedAt": "2025-01-15T10:31:00Z",
"metrics": {
"views": 1234,
"downloads": 456,
"citations": 12
}
}

pub.chive.eprint.searchSubmissions

Search for eprints by query string.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesSearch query
fieldsstring[]NoFilter by field codes
authorsstring[]NoFilter by author DIDs
dateFromstringNoStart date (ISO 8601)
dateTostringNoEnd date (ISO 8601)
sortBystringNoSort order: relevance, date, citations
sortstringNoSort order: relevance (default), recent
limitintegerNoResults per page (default: 25, max: 100)
cursorstringNoPagination cursor

Response

{
"submissions": [
{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"title": "Novel Approach to Quantum Computing",
"authors": [...],
"abstract": "We present...",
"fields": ["cs.QC"],
"indexedAt": "2025-01-15T10:31:00Z"
}
],
"cursor": "eyJvZmZzZXQiOjI1fQ=="
}

pub.chive.eprint.listByAuthor

List eprints by a specific author.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
authorstringYesAuthor DID
limitintegerNoResults per page (default: 25)
cursorstringNoPagination cursor

pub.chive.eprint.listCitations

List citations for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesAT URI of the eprint
limitintegerNoResults per page (default: 50, max: 100)
cursorstringNoPagination cursor

Response

{
"citations": [
{
"uri": "at://did:plc:abc123.../pub.chive.eprint.citation/3k5...",
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"citedWork": {
"title": "Attention Is All You Need",
"doi": "10.48550/arXiv.1706.03762",
"authors": ["Vaswani, A.", "Shazeer, N."],
"year": 2017,
"venue": "NeurIPS"
},
"citationType": "extends",
"createdAt": "2025-01-15T10:30:00Z"
}
],
"cursor": "eyJvZmZzZXQiOjUwfQ=="
}

pub.chive.eprint.listRelatedWorks

List user-curated related works for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesAT URI of the eprint
limitintegerNoResults per page (default: 50, max: 100)
cursorstringNoPagination cursor

Response

{
"relatedWorks": [
{
"uri": "at://did:plc:abc123.../pub.chive.eprint.relatedWork/3k5...",
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"relatedUri": "at://did:plc:def456.../pub.chive.eprint.submission/4m7...",
"relationType": "extends",
"description": "Extends the optimization approach to multi-modal inputs",
"createdAt": "2025-01-16T14:00:00Z"
}
],
"cursor": "eyJvZmZzZXQiOjUwfQ=="
}

Review namespace

Endpoints for peer reviews and comments. Reviews follow the W3C Web Annotation data model, with each review carrying a motivation field and an optional target for inline text span annotations.

pub.chive.review.getThread

Get a review thread with all replies.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesAT-URI of the root review

Response

{
"parent": {
"uri": "at://did:plc:reviewer.../pub.chive.review.comment/abc...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:reviewer...",
"handle": "bob.bsky.social",
"displayName": "Bob Jones"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "The methodology section needs clarification...",
"motivation": "commenting",
"replyCount": 2,
"createdAt": "2025-01-16T14:00:00Z",
"indexedAt": "2025-01-16T14:01:00Z"
},
"replies": [
{
"uri": "at://did:plc:replier.../pub.chive.review.comment/def...",
"cid": "bafyreic...",
"author": {
"did": "did:plc:replier...",
"handle": "carol.bsky.social"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "Good point, I agree...",
"motivation": "replying",
"parentReviewUri": "at://did:plc:reviewer.../pub.chive.review.comment/abc...",
"replyCount": 0,
"createdAt": "2025-01-16T15:30:00Z",
"indexedAt": "2025-01-16T15:31:00Z"
}
],
"totalReplies": 2
}

Errors

NameDescription
NotFoundThe review URI does not exist

pub.chive.review.listForEprint

List all reviews for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
eprintUristringYesAT-URI of the eprint
motivationstringNoFilter by W3C motivation (e.g., commenting, questioning)
inlineOnlybooleanNoOnly include inline annotations with text span targets (default: false)
limitintegerNoResults per page (1-100, default: 50)
cursorstringNoPagination cursor

Response

{
"reviews": [
{
"uri": "at://did:plc:reviewer.../pub.chive.review.comment/abc...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:reviewer...",
"handle": "bob.bsky.social",
"displayName": "Bob Jones",
"avatar": "https://cdn.bsky.app/..."
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "The methodology section...",
"body": {
"text": "The methodology section...",
"facets": []
},
"motivation": "commenting",
"parentReviewUri": null,
"replyCount": 3,
"createdAt": "2025-01-16T14:00:00Z",
"indexedAt": "2025-01-16T14:01:00Z",
"deleted": false
}
],
"cursor": "50",
"hasMore": false,
"total": 8
}

The deleted field indicates whether a review has been soft-deleted. Soft-deleted reviews remain in the response to preserve thread structure but their content should be hidden in the UI.

pub.chive.review.listForAuthor

List reviews by a specific author.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
reviewerDidstringYesDID of the reviewer
motivationstringNoFilter by W3C motivation
inlineOnlybooleanNoOnly include inline annotations with text span targets (default: false)
limitintegerNoResults per page (1-100, default: 50)
cursorstringNoPagination cursor

Response

{
"reviews": [
{
"uri": "at://did:plc:reviewer.../pub.chive.review.comment/abc...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:reviewer...",
"handle": "bob.bsky.social",
"displayName": "Bob Jones"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "The methodology section...",
"motivation": "commenting",
"replyCount": 3,
"createdAt": "2025-01-16T14:00:00Z",
"indexedAt": "2025-01-16T14:01:00Z"
}
],
"cursor": "50",
"hasMore": false,
"total": 12
}

Annotation namespace

Endpoints for inline annotations and entity links on eprints. Annotations follow the W3C Web Annotation data model, using text quote selectors and text position selectors to anchor annotations to specific text spans within eprint PDFs. Entity links connect text spans to knowledge graph nodes, external identifiers, authors, or other eprints.

pub.chive.annotation.listForEprint

List inline annotations for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
eprintUristringYesAT-URI of the eprint
motivationstringNoFilter by W3C motivation (e.g., commenting, highlighting)
pageNumberintegerNoFilter by page number
includeEntityLinksbooleanNoInclude entity links in response (default: false)
limitintegerNoResults per page (1-100, default: 50)
cursorstringNoPagination cursor

Response

{
"annotations": [
{
"uri": "at://did:plc:annotator.../pub.chive.annotation.comment/3k5...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:annotator...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "This claim needs a citation.",
"body": {
"text": "This claim needs a citation.",
"facets": []
},
"target": {
"source": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"selector": {
"type": "TextQuoteSelector",
"exact": "quantum entanglement enables faster-than-light communication",
"prefix": "We show that ",
"suffix": " between nodes."
},
"refinedBy": {
"type": "TextPositionSelector",
"start": 1245,
"end": 1312,
"pageNumber": 3
},
"page": 3
},
"motivation": "commenting",
"parentAnnotationUri": null,
"replyCount": 2,
"createdAt": "2025-01-17T09:15:00Z",
"indexedAt": "2025-01-17T09:16:00Z",
"deleted": false
}
],
"entityLinks": [
{
"uri": "at://did:plc:linker.../pub.chive.annotation.entityLink/3k6...",
"cid": "bafyreic...",
"creator": {
"did": "did:plc:linker...",
"handle": "bob.bsky.social"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"target": {
"source": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"selector": {
"type": "TextQuoteSelector",
"exact": "quantum entanglement"
},
"refinedBy": {
"type": "TextPositionSelector",
"start": 1245,
"end": 1265,
"pageNumber": 3
},
"page": 3
},
"linkedEntity": {
"$type": "pub.chive.annotation.listForEprint#graphNodeLink",
"type": "graphNode",
"label": "Quantum Entanglement",
"nodeId": "quant-ph.entanglement"
},
"confidence": 0.95,
"createdAt": "2025-01-17T09:20:00Z",
"indexedAt": "2025-01-17T09:21:00Z"
}
],
"cursor": "50",
"hasMore": false,
"total": 14
}

The entityLinks field is only present when includeEntityLinks is set to true. The linkedEntity object uses a discriminated union with $type to indicate the entity kind: #graphNodeLink, #externalIdLink, #authorLink, or #eprintLink.

pub.chive.annotation.listForPage

List annotations for a specific page in an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
eprintUristringYesAT-URI of the eprint
pageNumberintegerYesPage number (must be at least 1)
includeEntityLinksbooleanNoInclude entity links in response (default: true)

Response

{
"annotations": [
{
"uri": "at://did:plc:annotator.../pub.chive.annotation.comment/3k5...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:annotator...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "Interesting approach here.",
"target": {
"source": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"selector": {
"type": "TextQuoteSelector",
"exact": "novel optimization technique"
},
"refinedBy": {
"type": "TextPositionSelector",
"start": 450,
"end": 478,
"pageNumber": 5
},
"page": 5
},
"motivation": "highlighting",
"replyCount": 0,
"createdAt": "2025-01-18T11:00:00Z",
"indexedAt": "2025-01-18T11:01:00Z",
"deleted": false
}
],
"entityLinks": [],
"pageNumber": 5
}

pub.chive.annotation.getThread

Get an annotation thread with all replies.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesAT-URI of the annotation
maxDepthintegerNoMaximum reply depth (default: 10)

Response

{
"thread": [
{
"uri": "at://did:plc:annotator.../pub.chive.annotation.comment/3k5...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:annotator...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "This claim needs a citation.",
"target": {
"source": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"selector": {
"type": "TextQuoteSelector",
"exact": "quantum entanglement enables faster-than-light communication"
},
"page": 3
},
"motivation": "commenting",
"replyCount": 1,
"createdAt": "2025-01-17T09:15:00Z",
"indexedAt": "2025-01-17T09:16:00Z",
"deleted": false
},
{
"uri": "at://did:plc:replier.../pub.chive.annotation.comment/3k6...",
"cid": "bafyreic...",
"author": {
"did": "did:plc:replier...",
"handle": "bob.bsky.social"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "Added reference to Bell 1964.",
"motivation": "replying",
"parentAnnotationUri": "at://did:plc:annotator.../pub.chive.annotation.comment/3k5...",
"replyCount": 0,
"createdAt": "2025-01-17T10:00:00Z",
"indexedAt": "2025-01-17T10:01:00Z",
"deleted": false
}
],
"totalReplies": 1
}

The thread array contains the root annotation as the first element, followed by all replies in depth-first order.

Errors

NameDescription
NotFoundThe annotation URI does not exist

pub.chive.annotation.listByAuthor

List annotations by a specific author.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
annotatorDidstringYesDID of the annotator
motivationstringNoFilter by W3C motivation
limitintegerNoResults per page (1-100, default: 50)
cursorstringNoPagination cursor

Response

{
"annotations": [
{
"uri": "at://did:plc:annotator.../pub.chive.annotation.comment/3k5...",
"cid": "bafyreib...",
"author": {
"did": "did:plc:annotator...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith"
},
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"content": "This claim needs a citation.",
"motivation": "commenting",
"replyCount": 2,
"createdAt": "2025-01-17T09:15:00Z",
"indexedAt": "2025-01-17T09:16:00Z",
"deleted": false
}
],
"cursor": "50",
"hasMore": false,
"total": 7
}

Endorsement namespace

Endpoints for formal endorsements.

pub.chive.endorsement.getSummary

Get endorsement summary for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

Response

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"totalEndorsements": 15,
"byContribution": {
"methodological": 8,
"analytical": 5,
"theoretical": 12,
"data": 3
},
"endorsers": [
{
"did": "did:plc:endorser...",
"handle": "expert.bsky.social",
"contributions": ["methodological", "theoretical"]
}
]
}

pub.chive.endorsement.listForEprint

List all endorsements for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.endorsement.getUserEndorsement

Get a specific user's endorsement for an eprint.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
uristringYesEprint URI
didstringNoUser DID (defaults to authenticated user)

Graph namespace

Endpoints for the knowledge graph.

pub.chive.graph.getField

Get details for a specific field.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
idstringYesField identifier

Response

{
"id": "cs.QC",
"kind": "object",
"subkind": "field",
"label": "Quantum Computing",
"alternateLabels": ["Quantum Computation", "QC"],
"description": "Research on quantum computation and information",
"externalIds": [
{ "source": "wikidata", "value": "Q339" },
{ "source": "lcsh", "value": "sh2008010405" }
],
"status": "established",
"eprintCount": 4523,
"edges": {
"broader": ["cs", "quant-ph"],
"narrower": ["cs.QC.error-correction", "cs.QC.algorithms"],
"related": ["cs.CC", "quant-ph.theory"]
}
}

pub.chive.graph.listFields

List all fields with optional filtering.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
parentstringNoFilter by parent field
querystringNoSearch field names
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.graph.getNode

Get a specific knowledge graph node.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
idstringYesNode ID

Response

{
"id": "quantum-computing",
"kind": "object",
"subkind": "field",
"label": "Quantum Computing",
"alternateLabels": ["Quantum Computation", "QC"],
"description": "Computational paradigm using quantum-mechanical phenomena",
"externalIds": [{ "source": "wikidata", "value": "Q339" }],
"status": "established",
"createdAt": "2024-01-15T10:30:00Z"
}

pub.chive.graph.listNodes

List knowledge graph nodes with optional filtering.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
kindstringNoFilter by kind: type, object
subkindstringNoFilter by subkind: field, facet, etc.
statusstringNoFilter by status: established, etc.
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.graph.searchNodes

Search knowledge graph nodes by label.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesSearch query
kindstringNoFilter by kind
subkindstringNoFilter by subkind: field, institution
limitintegerNoResults per page

pub.chive.graph.listEdges

List edges for a node.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
nodeIdstringYesSource or target node ID
relationSlugstringNoFilter by relation: broader, related
directionstringNooutgoing, incoming, or both
limitintegerNoResults per page

pub.chive.graph.browseFaceted

Browse eprints using PMEST facets.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
personalitystring[]NoSubject facets
matterstring[]NoMaterial facets
energystring[]NoProcess facets
spacestring[]NoGeographic facets
timestring[]NoTemporal facets
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.graph.getFieldEprints

Get eprints in a specific field.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
fieldstringYesField identifier
includeChildrenbooleanNoInclude child fields
sortBystringNoSort order
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.graph.getAuthorityReconciliations

Get reconciliation history for an authority record.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
idstringYesAuthority record ID

Tag namespace

Endpoints for user-generated tags.

pub.chive.tag.search

Search tags.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesSearch query
limitintegerNoResults per page

pub.chive.tag.listForEprint

List tags on an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

pub.chive.tag.getTrending

Get trending tags.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
timeWindowstringNoTime window: day, week, month
limitintegerNoNumber of tags

pub.chive.tag.getSuggestions

Get tag suggestions based on content.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringNoEprint URI
textstringNoText to analyze

pub.chive.tag.getDetail

Get details for a specific tag.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
tagstringYesTag name

Governance namespace

Endpoints for community governance.

pub.chive.governance.listProposals

List governance proposals.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
statusstringNoFilter: pending, voting, approved, rejected
typestringNoProposal type
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.governance.getProposal

Get details for a specific proposal.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
idstringYesProposal ID

Response

{
"id": "proposal-123",
"type": "create_field",
"status": "voting",
"proposer": {
"did": "did:plc:proposer...",
"handle": "researcher.bsky.social"
},
"title": "Add Quantum Machine Learning field",
"description": "Propose adding QML as a subfield of both...",
"changes": {
"fieldName": "Quantum Machine Learning",
"parentFields": ["cs.QC", "cs.LG"]
},
"votes": {
"approve": 12,
"reject": 3,
"weightedApprove": 28.5,
"weightedReject": 4.5
},
"threshold": 0.67,
"createdAt": "2025-01-10T09:00:00Z",
"votingEndsAt": "2025-01-17T09:00:00Z"
}

pub.chive.governance.listVotes

List votes on a proposal.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
proposalIdstringYesProposal ID
limitintegerNoResults per page
cursorstringNoPagination cursor

pub.chive.governance.getUserVote

Get the authenticated user's vote on a proposal.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
proposalIdstringYesProposal ID

pub.chive.governance.getPendingCount

Get count of pending proposals.

PropertyValue
MethodQuery (GET)
AuthOptional

Metrics namespace

Endpoints for analytics and engagement metrics.

pub.chive.metrics.getMetrics

Get metrics for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

Response

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"views": 12453,
"downloads": 3421,
"citations": 45,
"endorsements": 23,
"reviews": 8,
"shares": 156,
"history": {
"views": [
{ "date": "2025-01-14", "count": 234 },
{ "date": "2025-01-15", "count": 456 }
]
}
}

pub.chive.metrics.getViewCount

Get view count for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

pub.chive.metrics.getTrending

Get trending eprints.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
periodstringNoTime period: day, week, month
fieldstringNoFilter by field
fieldUrisstringNoComma-separated field URIs to filter by user's fields
limitintegerNoNumber of results

Response

{
"trending": [
{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"title": "Paper Title",
"score": 0.95,
"inUserFields": true
}
]
}

When fieldUris is provided, results include an inUserFields boolean per entry and are partitioned with in-field papers sorted first.

pub.chive.metrics.recordView

Record a view event.

PropertyValue
MethodProcedure (POST)
AuthOptional

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"source": "search"
}

pub.chive.metrics.recordDownload

Record a download event.

PropertyValue
MethodProcedure (POST)
AuthOptional

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"format": "pdf"
}

pub.chive.metrics.recordSearchClick

Record a search result click.

PropertyValue
MethodProcedure (POST)
AuthOptional

Input

{
"query": "quantum computing",
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"position": 3
}

pub.chive.metrics.recordDwellTime

Record time spent on an eprint.

PropertyValue
MethodProcedure (POST)
AuthOptional

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"durationMs": 45000
}

Discovery namespace

Endpoints for personalized recommendations.

pub.chive.discovery.getRecommendations

Get personalized recommendations for the authenticated user.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
limitintegerNoNumber of recommendations
cursorstringNoPagination cursor

Response

{
"recommendations": [
{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"title": "Advances in Quantum Error Correction",
"reason": "Based on your reading history in quantum computing",
"score": 0.92
}
],
"cursor": "eyJvZmZzZXQiOjIwfQ=="
}

pub.chive.discovery.getSimilar

Get eprints similar to a given eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI
limitintegerNoNumber of results

pub.chive.discovery.getCitations

Get citation graph for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI
directionstringNociting, cited, both
limitintegerNoNumber of results

pub.chive.discovery.getEnrichment

Get enriched metadata for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

pub.chive.discovery.recordInteraction

Record a user interaction for recommendation training.

PropertyValue
MethodProcedure (POST)
AuthRequired

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"type": "click",
"context": "recommendations"
}

Claiming namespace

Endpoints for authorship claims.

pub.chive.claiming.startClaim

Start a new authorship claim.

PropertyValue
MethodProcedure (POST)
AuthRequired

Input

{
"eprintUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"authorPosition": 1,
"orcid": "0000-0002-1825-0097"
}

pub.chive.claiming.getClaim

Get details of a claim.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
idstringYesClaim ID

pub.chive.claiming.completeClaim

Complete a pending claim by linking to the canonical record.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.claiming.getSubmissionData

Get prefilled submission data for external claiming.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
sourcestringYesExternal source
externalIdstringYesExternal identifier

pub.chive.claiming.requestCoauthorship

Request to be added as co-author on an existing paper.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.claiming.getCoauthorRequests

Get pending co-author requests for the authenticated user's papers.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.claiming.getMyCoauthorRequests

Get co-author requests submitted by the authenticated user.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.claiming.approveCoauthor

Approve a co-author request.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.claiming.rejectCoauthor

Reject a co-author request.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.claiming.approveClaim

Approve a claim (admin only).

PropertyValue
MethodProcedure (POST)
AuthRequired (admin)

pub.chive.claiming.rejectClaim

Reject a claim (admin only).

PropertyValue
MethodProcedure (POST)
AuthRequired (admin)

pub.chive.claiming.getUserClaims

Get claims for the authenticated user.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.claiming.findClaimable

Find eprints claimable by the user.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.claiming.autocomplete

Autocomplete for claim search.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.claiming.searchEprints

Search eprints for claiming.

PropertyValue
MethodQuery (GET)
AuthRequired

Response

{
"eprints": [...],
"sourceErrors": [
{
"source": "arxiv",
"message": "Request timeout after 10000ms"
}
]
}

The sourceErrors array contains per-source error information when individual external sources fail. Results from working sources are still returned.

pub.chive.claiming.getSuggestions

Get claim suggestions for the user.

PropertyValue
MethodQuery (GET)
AuthRequired

Response

{
"suggestions": [
{
"title": "Paper Title",
"source": "chive",
"externalId": "10.1234/example",
"score": 85,
"chiveUri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5..."
},
{
"title": "External Paper",
"source": "arxiv",
"externalId": "2401.12345",
"score": 42
}
]
}

Papers with source: "chive" include a chiveUri field pointing to the existing Chive record. Papers from external sources do not have this field.

pub.chive.claiming.dismissSuggestion

Dismiss a paper suggestion so it no longer appears.

PropertyValue
MethodProcedure (POST)
AuthRequired

Input

{
"source": "arxiv",
"externalId": "2401.12345"
}

Parameters

NameTypeRequiredDescription
sourcestringYesSource of the paper (e.g., arxiv, semanticscholar, chive)
externalIdstringYesExternal identifier for the paper

Response

Returns empty object on success. Uses INSERT ... ON CONFLICT DO NOTHING so dismissing the same paper twice is a no-op.

pub.chive.claiming.startClaimFromExternal

Start a claim from an external identifier.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.claiming.getPendingClaims

Get pending claims (admin only).

PropertyValue
MethodQuery (GET)
AuthRequired (admin)

Endpoints for AT Protocol app references.

List backlinks for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI
sourcestringNoFilter by source app

pub.chive.backlink.create

Create a backlink.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.backlink.delete

Delete a backlink.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.backlink.getCounts

Get backlink counts for an eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesEprint URI

Activity namespace

Endpoints for user activity.

pub.chive.activity.getFeed

Get the user's activity feed.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.activity.log

Log an activity event.

PropertyValue
MethodProcedure (POST)
AuthRequired

pub.chive.activity.getCorrelationMetrics

Get activity correlation metrics.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.activity.markFailed

Mark an activity as failed.

PropertyValue
MethodProcedure (POST)
AuthRequired

Import namespace

Endpoints for importing from external sources.

pub.chive.import.search

Search external sources for eprints.

PropertyValue
MethodQuery (GET)
AuthRequired

Parameters

NameTypeRequiredDescription
querystringYesSearch query
sourcestringNoSource: arxiv, semanticscholar, openalex

pub.chive.import.exists

Check if an external eprint already exists.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
externalIdstringYesExternal identifier (DOI, arXiv ID)

pub.chive.import.get

Get details for an external eprint.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
externalIdstringYesExternal identifier

Actor namespace

Endpoints for user profiles and autocomplete.

pub.chive.actor.getMyProfile

Get the authenticated user's profile.

PropertyValue
MethodQuery (GET)
AuthRequired

Response

{
"did": "did:plc:abc123...",
"handle": "alice.bsky.social",
"displayName": "Alice Smith",
"orcid": "0000-0002-1825-0097",
"affiliation": "MIT",
"bio": "Quantum computing researcher",
"eprintCount": 12,
"endorsementCount": 45
}

pub.chive.actor.autocompleteOrcid

Autocomplete ORCID lookup.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesPartial name or ORCID

pub.chive.actor.discoverAuthorIds

Discover external author identifiers.

PropertyValue
MethodQuery (GET)
AuthRequired

pub.chive.actor.autocompleteAffiliation

Autocomplete institution names.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesPartial institution name

pub.chive.actor.autocompleteKeyword

Autocomplete research keywords.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
querystringYesPartial keyword

Author namespace

Endpoints for public author profiles.

pub.chive.author.getProfile

Get a public author profile.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
didstringYesAuthor DID

Sync namespace

Endpoints for data synchronization.

pub.chive.sync.checkStaleness

Check if indexed data is stale.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesRecord URI

pub.chive.sync.verify

Verify a record against PDS.

PropertyValue
MethodQuery (GET)
AuthOptional

Parameters

NameTypeRequiredDescription
uristringYesRecord URI

pub.chive.sync.refreshRecord

Force refresh a record from PDS.

PropertyValue
MethodProcedure (POST)
AuthRequired (service)

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5..."
}

pub.chive.sync.deleteRecord

Notify the AppView that a record has been deleted from a PDS.

PropertyValue
MethodProcedure (POST)
AuthRequired (service)

Input

{
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"collection": "pub.chive.eprint.submission"
}

Response

{
"success": true,
"uri": "at://did:plc:abc123.../pub.chive.eprint.submission/3k5...",
"deletedAt": "2025-01-15T10:30:00Z"
}

This endpoint is used by PDS operators to notify the AppView of record deletions when firehose delivery is delayed or unreliable. The AppView removes the record from its index.

Supported collections: pub.chive.review.comment, pub.chive.review.endorsement, pub.chive.annotation.comment, pub.chive.annotation.entityLink, pub.chive.eprint.userTag, pub.chive.eprint.citation, pub.chive.eprint.relatedWork.


Error codes

All endpoints may return these error codes:

CodeHTTP StatusDescription
InvalidRequest400Malformed request
AuthRequired401Authentication needed
InvalidToken401Token invalid or expired
Forbidden403Not authorized
RecordNotFound404Record doesn't exist
RateLimitExceeded429Too many requests
InternalError500Server error

Next steps