---
title: "Screen occurrence records for listed species published at a precision that exposes them, in one call"
method: POST
path: "/exposure"
---

# Screen occurrence records for listed species published at a precision that exposes them, in one call

`POST /exposure`

## Request

- Base URL: `https://passage-data.com/api/v1`
- URL: `https://passage-data.com/api/v1/exposure`
- Auth: one of:
  - none
  - HTTP bearer
  - API key in header `x-api-key`

Up to 5000 occurrence records, each a species name and coordinates as published. Our engine's names screen (the one behind a file dropped on passage-data.com) answers: for each species a register lists, which register lists it (status, whether it applies where the records are, the line the register prints) and how many of its records sit at a coordinate finer than a 0.01 degree grid (about 1.1 km), and how many of those a rounding would not protect because another record states the same position. `treatment` is Chapman 2020's: the category the data holder's documented answers (`determinations`) reach, with its grid and what it would round and withhold; without answers, the canon's coded refusal (sensitivity.criteria_unevaluated) naming the next question — a listing is not that determination. Every register screened is named with its edition. Nothing sent is kept. Use it instead of one call a record: the door allows 30 calls in 10 seconds.

## Request body

- object
  - `records` object[], required
    - `scientificName` string, required: The species as the file prints it (authorship allowed).
    - `decimalLatitude` union: As published, WGS84 decimal degrees.
      - number
      - string
    - `decimalLongitude` union: As published, WGS84 decimal degrees.
      - number
      - string
    - `coordinateUncertaintyInMeters` union
      - number
      - string
    - `place` string: ISO 3166 code of where this record is, when it is not the call's place.
    - `dataGeneralizations` string
    - `informationWithheld` string
    - `eventID` string
    - `locationID` string
    - `locality` string
    - `coordinates_obscured` union
      - boolean
      - string
    - `geoprivacy` string
    - `taxon_geoprivacy` string
    - `public_positional_accuracy` union
      - number
      - string
  - `place` string: ISO 3166 code of where the records are: CA, US, FR, CA-QC, US-CA, GB-SCT. Omit it and the screen places them by their points, and says so.
  - `determinations` object: The data holder's documented answers to Chapman 2020's questions, by number: {"1.1": true, ...}.

## Response `200`

Each listed species with its registers and its exposure, every register screened with its edition, and the Chapman 2020 treatment

- ScreenExposure
  - `query` object
  - `summary` object
    - `records` integer
    - `with_coordinates` integer
    - `names` integer
    - `listed` integer
    - `to_confirm` integer
    - `not_asked` integer
    - `exposed_species` integer
    - `records_exposed` integer
    - `records_not_protectable` integer
    - `records_already_declared` integer
    - `records_obscured_by_export` integer
    - `says` string
  - `exposure` object, nullable
  - `treatment` object
  - `outcome_of` string
  - `searched` object
    - `places` string[]
    - `registers` object
  - `packed_as` string
  - `registers` object
  - `outcomes` object
  - `species` object[]
    - `name` string
    - `n_records` integer
    - `outcome` string
    - `backbone` object
    - `listed_by` object[]
    - `exposure` object, nullable
      - `exposed` integer
      - `exposed_not_protectable` integer
    - `exposed` boolean
  - `other_names` array[]
    - unknown[]
      - unknown
  - `refused` object

## Other responses

- `400`: records.missing, records.malformed, records.too_many (over 5000), species.missing, place.malformed, determinations.malformed, body.malformed
- `413`: body.too_large; file.too_large: the records are more than the engine reads in one call
- `422`: engine.refused: the engine could not read the records (its own codes in `engine_codes`)
- `429`: engine.busy: the engine's hourly budget for your address is spent; send the call again later
- `503`: engine.timeout, engine.unreachable, engine.failed: nothing was decided; send the call again

---

[API](https://skmtc.dev/passage-data/apis/passage-data-cited-environmental-limits.md) · [All operations](https://skmtc.dev/passage-data/apis/passage-data-cited-environmental-limits/llms.txt) · [OpenAPI document](https://skmtc.dev/passage-data/apis/passage-data-cited-environmental-limits/revisions/ba066708bf53?raw)
