# Get a shared model reference

```http
GET /api/public/v1/contributor-network/items/{itemId}
```

**Scope**: `contributor-network.read`.

Returns one active Modular Arithmetic Contributor Network model reference with its exact pinned Hugging Face revision and lineage references. Use an `itemId` returned by [List shared model references](./list-contributor-models.md).

Send both optional type assertions when the client expects a Modular Arithmetic model reference. They prevent an ID from another competition or Contributor Network kind from being accepted as the requested type.

## Path parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `itemId` | string | Yes | Stable Contributor Network item ID. |

## Query parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `competitionId` | string | No | When present, must be `modular-arithmetic-challenge` and must be sent with `kind`. |
| `kind` | string | No | When present, must be `model-reference` and must be sent with `competitionId`. |

## Example request

```bash
curl --get "https://api.sair.foundation/api/public/v1/contributor-network/items/$ITEM_ID" \
  -H "Authorization: Bearer $SAIR_API_KEY" \
  --data-urlencode "competitionId=modular-arithmetic-challenge" \
  --data-urlencode "kind=model-reference"
```

## Response fields

The response contains every [ContributorModelSummary](./list-contributor-models.md#summary-fields) field, plus:

| Field | Type | Description |
| :--- | :--- | :--- |
| `modelName` | string | Immutable Hugging Face repository name in `owner/name` form. |
| `commitHash` | string | Immutable full 40-character lowercase Git commit SHA. |
| `lineage.depth` | integer | Number of parent edges from the root; `0` for an original item. |
| `lineage.parent` | [ContributorItemReference](#lineage-reference-fields) \| null | Direct parent, or `null` for an original item. |
| `lineage.root` | [ContributorItemReference](#lineage-reference-fields) | Root of this lineage; points to this item when `depth` is `0`. |

`contentBytes` and `contentSha256` from the summary describe the canonical UTF-8 string `modelName@commitHash`. They do not describe or verify the external model files. This endpoint returns the pinned reference stored by SAIR; it does not fetch the repository or report whether Hugging Face can still serve it.

### Lineage reference fields

| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | string | Referenced Contributor Network item ID. |
| `publicCode` | string | Immutable public code of the referenced publication. |
| `available` | boolean | Whether the referenced item is still active and can be retrieved. |

An inactive ancestor remains as a structural reference with `available: false`; its model reference and other redacted metadata are not returned by this endpoint. Parent and root references belong to the same competition and Contributor Network kind.

## Example response

```json
{
  "ok": true,
  "data": {
    "id": "cn_01JMODULAR0000000000000001",
    "publicCode": "MAC01-000042",
    "competitionId": "modular-arithmetic-challenge",
    "kind": "model-reference",
    "title": "your-team/modular-solver",
    "remark": "Pinned revision used for public comparison.",
    "author": {
      "sairId": "U-9f7e1c00",
      "displayName": "alice",
      "avatarUrl": null
    },
    "contentBytes": 65,
    "contentSha256": "bf18f581ed57f05b4aac5af249017bd371991bbca1d5002fac7fc32612b01604",
    "favoriteCount": 2,
    "viewerHasFavorited": false,
    "commentCount": 1,
    "directChildCount": 0,
    "publishedAt": "2026-06-08T09:00:00Z",
    "modelName": "your-team/modular-solver",
    "commitHash": "0123456789abcdef0123456789abcdef01234567",
    "lineage": {
      "depth": 0,
      "parent": null,
      "root": {
        "id": "cn_01JMODULAR0000000000000001",
        "publicCode": "MAC01-000042",
        "available": true
      }
    }
  }
}
```

## Errors

| HTTP | Code | When |
| :---: | :--- | :--- |
| `404` | `NOT_FOUND` | The item or owning competition is unavailable, or a supplied type assertion does not match. |
| `422` | `RESOURCE_FIELD_INVALID` | Type assertions are incomplete or invalid, or the request contains an unknown or repeated query parameter. |

Inactive and mismatched items use the same `404` response as a missing ID. See [Errors](../../../errors.md) for authentication, scope, and rate-limit errors.
