> ## 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.

# Contributions

> List and create scientific contributions — discoveries that feed the novelty-review pipeline.

# Contributions API

Contributions are scored scientific claims your lab has produced — measurements, predictions, method improvements, constraint results, or null results. Each contribution goes through the novelty-review pipeline (multi-model LLM scoring) to determine whether it is novel, incremental, or already known.

## List Contributions

<ParamField query="labId" type="string" required>
  Convex ID of the lab.
</ParamField>

<CodeGroup>
  ```bash curl theme={null}
  curl "https://www.hubify.com/api/v1/contributions?labId=$LAB_ID" \
    -H "Authorization: Bearer $HUBIFY_TOKEN"
  ```

  ```typescript TypeScript theme={null}
  const { contributions, summary } = await hubify.contributions.list({ labId });
  ```
</CodeGroup>

<ResponseField name="contributions" type="object[]" required>
  All contributions for the lab.

  <Expandable title="Contribution">
    <ResponseField name="_id" type="string" required>Convex document ID.</ResponseField>
    <ResponseField name="labId" type="string" required>Owning lab.</ResponseField>
    <ResponseField name="title" type="string" required>Short claim title.</ResponseField>
    <ResponseField name="description" type="string">Detailed description.</ResponseField>
    <ResponseField name="contributionType" type="string">One of `prediction`, `measurement`, `method`, `catalog`, `constraint`, `null_result`.</ResponseField>
    <ResponseField name="noveltyScore" type="number">0-100 novelty score from multi-model review.</ResponseField>
    <ResponseField name="noveltyStatus" type="string">One of `pending`, `reviewing`, `novel`, `incremental`, `known`.</ResponseField>
    <ResponseField name="experimentId" type="string">Linked experiment, if any.</ResponseField>
    <ResponseField name="paperId" type="string">Linked paper, if any.</ResponseField>
    <ResponseField name="createdAt" type="number">Unix ms.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="summary" type="object" required>
  Lab-level novelty summary.

  <Expandable title="Summary">
    <ResponseField name="total" type="number">Total contribution count.</ResponseField>
    <ResponseField name="novel" type="number">Contributions with `noveltyStatus == novel`.</ResponseField>
    <ResponseField name="pending" type="number">Awaiting review.</ResponseField>
    <ResponseField name="avgNoveltyScore" type="number">Mean score across all scored contributions.</ResponseField>
  </Expandable>
</ResponseField>

## Create Contribution

<ParamField body="labId" type="string" required>Convex lab ID.</ParamField>
<ParamField body="title" type="string" required>Short claim title (max 200 chars).</ParamField>
<ParamField body="description" type="string">Detailed description of the contribution.</ParamField>

<ParamField body="contributionType" type="string">
  One of `prediction`, `measurement`, `method`, `catalog`, `constraint`, `null_result`. Defaults to `measurement`.
</ParamField>

<ParamField body="experimentId" type="string">Convex experiment ID to link.</ParamField>
<ParamField body="paperId" type="string">Convex paper ID to link.</ParamField>

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://www.hubify.com/api/v1/contributions \
    -H "Authorization: Bearer $HUBIFY_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "labId": "$LAB_ID",
      "title": "Galaxy chirality excess sigma=4.2",
      "description": "Left-handed spiral galaxies exceed right-handed by 4.2-sigma in the z=0.1-0.3 redshift shell.",
      "contributionType": "measurement"
    }'
  ```
</CodeGroup>

<ResponseField name="id" type="string" required>New contribution Convex ID.</ResponseField>
<ResponseField name="noveltyStatus" type="string" required>Initial status (`pending`).</ResponseField>

<Note>
  After creation, trigger the novelty review pipeline from the web app Contributions view, or use the [papers publish-loop](/api/papers) endpoint which bundles novelty checks for submitted papers.
</Note>
