---
title: "Download manifest"
method: GET
path: "/manifest/"
tags: ["Data"]
---

# Download manifest

`GET /manifest/`

## Request

- Base URL: `https://onlygoodantibodies.co.uk/api/v1`
- URL: `https://onlygoodantibodies.co.uk/api/v1/manifest/`
- Auth: API key in header `X-API-Key`

Every published figure you may download, as URLs with their metadata. **Contains no image bytes** - the URLs are public and permanent, so fetch them directly from the CDN.

Complete by default and carries a strong `ETag`. Send it back as `If-None-Match` on reconnect and an unchanged dataset answers `304` with no body. The ETag covers image identity, stored filename and every recommendation in scope, so a replaced figure and a changed recommendation both break it - which a timestamp cursor cannot.

No side effects: it never advances your review cursor.

## Query parameters

- `format` 'json' | 'csv' | 'urls'
- `since` string
- `gene` string
- `limit` integer
- `offset` integer

## Headers

- `If-None-Match` string

## Response `200`

Success.

- Manifest
  - `manifest_version` integer, required
  - `generated_at` string, date-time
  - `dataset_version` string, required: Identifies the data. Two clients holding the same value hold the same figures. NOT the ETag - that also identifies the format.
  - `consumer` string
  - `consumer_type` 'manufacturer' | 'rrid'
  - `scope` object
    - `genes` string[], nullable
    - `supplier_filter` string, nullable
    - `includes_recommendations` boolean
    - `recommendation_scope` string
    - `application_notes` object: Temporary notices keyed by application (WB, IP, ICC-IF, FC, IHC). Show the sentence beside that application's results. Empty when no notice is in force.
    - `requested_genes` string[], nullable: What `?gene=` asked for, echoed. Null when the request was not narrowed.
  - `counts` object
    - `files_in_scope` integer
    - `files_matched` integer
    - `files_returned` integer
  - `complete` boolean, required: **Read this before treating a missing URL as a deletion.** True means the response holds every file in your scope. False means it was capped or filtered, and absence means nothing.
  - `filename_collisions` integer
  - `files` ManifestFile[], required
    - `image_id` integer
    - `url` string, uri: Public and permanent. Fetch it directly; no key is needed.
    - `filename` string: Your filename pattern applied, de-duplicated if it collides.
    - `application` 'WB' | 'IP' | 'ICC-IF' | 'FC' | 'IHC'
    - `application_display` string
    - `oga_support` 'supportive' | 'limited_support' | 'not_supportive' | 'not_tested': What the characterisation data shows for one application, in the four rungs every OGA page prints. **This is the field to switch on.** - `supportive` - The characterisation data supports this application in the conditions tested. - `limited_support` - Tested; the characterisation data does not support this application overall, and the antibody was still seen to do what the application is for. - `not_supportive` - Tested; the characterisation data does not support this application in the conditions tested. - `not_tested` - Not tested for this application. The legacy `oga_recommendations` reports `not_recommended` for both `limited_support` and `not_supportive`, so a client switching on it files an antibody that did what the application is for with one that showed nothing. On the live dataset that is 491 of 1,833 negatives. Results are based on consensus protocols. Antibody performance is assay, protocol and sample dependent, so performance in your own experimental context may differ and needs its own controls.
    - `oga_recommendation` 'recommended' | 'not_recommended' | 'not_tested': OGA's recommendation for one application. **Legacy — prefer `oga_support`**, which has a value for each of the four rungs this one collapses into three. Still emitted on every response and not going anywhere. - `recommended` - The characterisation data supports this application in the conditions tested. - `not_recommended` - Tested; the characterisation data does not support this application in the conditions tested. - `not_tested` - Not tested for this application. Results are based on consensus protocols. Antibody performance is assay, protocol and sample dependent, so performance in your own experimental context may differ and needs its own controls.
    - `oga_display` 'Supportive' | 'Limited support' | 'Not supportive' | 'Not tested': The same result in the words OGA's own pages print, one rung per `oga_support` value. Switch on `oga_support`; print this.
    - `oga_qualifier` string: What was seen, as a clause — e.g. "detects the target, but is not selective". Empty where the axis behind it was not judged. It qualifies a supportive result as readily as a negative one.
    - `oga_methods_text` string: How this figure was made: the methods paragraph the website's Copy methods button copies, citing the report it was published in (2.5.0). The same text as `oga_methods[application].text` on /antibodies/. Empty where the result is not supportive or no methods are on file; absent when recommendations are not in scope.
    - `gene` string
    - `catalogue_number` string
    - `rrid` string, nullable
    - `supplier` string, nullable
    - `product_link` string, uri, nullable
    - `discontinued` boolean
    - `gene_page_url` string, uri
    - `added_at` string, date-time, nullable
  - `sync` object, required
    - `mode` 'full' | 'incremental'
    - `etag` string: Send this back verbatim as If-None-Match.
    - `reconnect_with` string
    - `deletions_tracked` boolean
    - `image_format` 'original'

## Other responses

- `304`: Nothing has changed since the ETag you sent. Empty body.
- `400`: A parameter could not be read.
- `401`: No X-API-Key header.
- `403`: Key unknown or inactive, or this endpoint is not available to your account type.
- `429`: Over 60/minute or 1000/hour. Carries `Retry-After` in seconds.

---

[API](https://skmtc.dev/onlygoodantibodies/apis/oga-data-api.md) · [All operations](https://skmtc.dev/onlygoodantibodies/apis/oga-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onlygoodantibodies/apis/oga-data-api/revisions/8df16a210acb?raw)
