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​