Skip to main content

Documentation Index

Fetch the complete documentation index at: https://hubify.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Papers API

Papers are the long-form research artifacts your lab produces. The Papers API surfaces the lab’s paper roster and exposes the 5-round publish loop that walks a draft from rough text to arXiv-ready submission. Paper content (sections, figures, citations, draft history) lives in Convex and is read directly by the web app. The HTTP surface today covers two operations: listing papers for a lab, and triggering the publish loop on a paper that already exists.

List Papers

Returns every paper in a lab.
labId
string
required
Convex ID of the lab.
curl "https://www.hubify.com/api/v1/papers?labId=j57a8k9m2n3p4q5r" \
  -H "Authorization: Bearer $HUBIFY_TOKEN"
papers
object[]
required
Array of paper documents (Convex shape from papers.listByLab).
total
number
required
Number of papers returned.

Auth and rate limiting

Requires an API key with read access to the lab. Subject to the read rate limit. Returns 400 if labId is missing, 403 if the key cannot access the lab.

Run the Publish Loop

Runs the 5-round publish pipeline against an existing paper. The loop fans out reviews (one Claude review per round, plus a multi-model fan-out in round 2) and persists each review to the paper. Failures inside a round are recorded and the loop continues.
id
string
required
Convex ID of the paper to run the loop against.
abstract
string
default:""
Abstract text passed to each reviewer. If omitted, reviewers see an empty abstract (only useful for very early drafts).
rounds
number
default:5
Number of rounds to run. Capped at 5. Use a smaller number to run an early stage in isolation (for example, rounds: 2 to stop after the cross-model review).

Round map

#NameWhat runs
1Mechanical QASingle Claude review checking structure, citations, figure references
2Cross-Model ReviewMulti-model fan-out (Claude + GPT + Gemini + Grok); each model files an independent review
3Houston MethodSingle Claude review applying the Houston Method critique pass
4Format CheckSingle Claude review for journal formatting and section ordering
5arXiv PrepSingle Claude review for arXiv submission readiness
curl -X POST "https://www.hubify.com/api/v1/papers/p4q5r6s7t8u9v0w1/publish-loop" \
  -H "Authorization: Bearer $HUBIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "abstract": "We present a Bayesian analysis of...",
    "rounds": 5
  }'
paperId
string
required
The paper the loop ran against.
rounds
object[]
required
Per-round results, in execution order.
summary
object
required

Auth and rate limiting

Requires an API key with write access. Subject to the write rate limit. The loop runs synchronously: round 2 (multi-model fan-out) is the slowest stage. Expect total request time on the order of minutes, not seconds.

Reading the reviews

The loop persists reviews to Convex; this endpoint returns counts, not review bodies. Read the actual review text from the paper detail view in the web app, or via the lab’s paperReviews Convex query.

Common Workflows

# List drafts in flight, pick one, run a single QA round
curl "https://www.hubify.com/api/v1/papers?labId=$LAB_ID" \
  -H "Authorization: Bearer $HUBIFY_TOKEN" | jq '.papers[] | {id: ._id, title}'

curl -X POST "https://www.hubify.com/api/v1/papers/$PAPER_ID/publish-loop" \
  -H "Authorization: Bearer $HUBIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"abstract": "...", "rounds": 1}'
# Full publish gauntlet, all 5 rounds, then check the summary
curl -X POST "https://www.hubify.com/api/v1/papers/$PAPER_ID/publish-loop" \
  -H "Authorization: Bearer $HUBIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"abstract": "...", "rounds": 5}' | jq '.summary'