---
title: "Get a deal request"
method: GET
path: "/deal-requests/{id}"
tags: ["Deal Requests"]
---

# Get a deal request

`GET /deal-requests/{id}`

## Request

- Base URL: `https://api.sovrn.com/sovrnos/v1`
- URL: `https://api.sovrn.com/sovrnos/v1/deal-requests/{id}`
- Auth: API key in header `x-api-key`

The status-polling endpoint: status is refreshed from source (30-second cache), and `statusAsOf` reports when it was last confirmed. `statusSettable` reports whether this deal is one whose status you can set yourself, so you never have to infer it from the buyers. On a `review` deal that a buyer did not accept, `buyerIssues` names that buyer and says what it reported, with the field to correct where there is one.

## Path parameters

- `id` string, required

## Response `200`

The deal request.

- DealRequestDetail
  - `dealRequestId` string, required
  - `status` 'active' | 'archived' | 'paused' | 'scheduled' | 'review' | 'dsp review', required
  - `statusAsOf` string, date-time, required
  - `statusSettable` boolean, required
  - `buyerIssues` BuyerIssue[]: On a read of a `review` deal that a buyer did not accept: what that buyer's DSP reported, one entry per issue, in this API's words. Absent when there is nothing to report or it could not be read, and never on the `PATCH` response. See the Deal lifecycle guide.
    - `partner` 'simpli.fi' | 'basis' | 'dv360' | 'thetradedesk' | 'quantcast' | 'pulsepoint' | 'pubmatic' | 'illumin' | 'pubmatic-uk' | 'openx' | 'magnite' | 'magnite-uk' | 'clickagy' | 'beeswax' | 'rtbhouse' | 'mediaforce' | 'xandr' | 'nexxen' | 'epom' | 'madhive' | 'krush' | 'opera' | 'motorik' | 'equativ' | 'emodo' | 'smaato' | 'edge226' | 'decenterads' | 'consumable' | 'epsilon' | 'boldwin' | 'taurusx' | 'stirista' | '140proof' | 'altavara' | 'adipolo' | 'madopi' | 'bsw-ninedotsmedia' | 'bsw-adelement' | 'bsw-adform' | 'bsw-adingenious' | 'bsw-admatic' | 'bsw-admixer' | 'bsw-amazon' | 'bsw-appier' | 'bsw-aroscop' | 'bsw-azberry' | 'bsw-bedrockplatform' | 'bsw-betweenexchange' | 'bsw-boldwin' | 'bsw-criteo' | 'bsw-edge226' | 'bsw-igaworks' | 'bsw-instal' | 'bsw-iponwebbidcore' | 'bsw-knorex' | 'bsw-lift' | 'bsw-madopi' | 'bsw-madopimedia' | 'bsw-marketperf' | 'bsw-my6sense' | 'bsw-nrich' | 'bsw-nextroll' | 'bsw-samsung' | 'bsw-sportradar' | 'bsw-taptap' | 'bsw-webeye' | 'bsw-yahoo' | 'bsw-zetaglobal', required
    - `message` string, required
    - `field` string: The field to correct, as a path into the deal request such as `pricing.floor`, or `buyers.0.seatIds` for the seats of the first entry in `buyers`. Absent when the issue maps to no field.
  - `name` string, required
  - `description` string, nullable, required
  - `type` 'pmp' | 'open', required
  - `adFormat` 'audio' | 'banner' | 'native' | 'video', required
  - `environments` Environment[], required
  - `pricing` Pricing, required
    - `model` 'auction' | 'fixed', required
    - `floor` number
    - `currency` 'USD' | 'JPY', required
  - `commercial` Commercial, required
    - `takeRate` number, required
  - `schedule` Schedule, required
    - `startDate` string, required
    - `endDate` string
  - `buyers` Buyer[], required
    - `partner` 'simpli.fi' | 'basis' | 'dv360' | 'thetradedesk' | 'quantcast' | 'pulsepoint' | 'pubmatic' | 'illumin' | 'pubmatic-uk' | 'openx' | 'magnite' | 'magnite-uk' | 'clickagy' | 'beeswax' | 'rtbhouse' | 'mediaforce' | 'xandr' | 'nexxen' | 'epom' | 'madhive' | 'krush' | 'opera' | 'motorik' | 'equativ' | 'emodo' | 'smaato' | 'edge226' | 'decenterads' | 'consumable' | 'epsilon' | 'boldwin' | 'taurusx' | 'stirista' | '140proof' | 'altavara' | 'adipolo' | 'madopi' | 'bsw-ninedotsmedia' | 'bsw-adelement' | 'bsw-adform' | 'bsw-adingenious' | 'bsw-admatic' | 'bsw-admixer' | 'bsw-amazon' | 'bsw-appier' | 'bsw-aroscop' | 'bsw-azberry' | 'bsw-bedrockplatform' | 'bsw-betweenexchange' | 'bsw-boldwin' | 'bsw-criteo' | 'bsw-edge226' | 'bsw-igaworks' | 'bsw-instal' | 'bsw-iponwebbidcore' | 'bsw-knorex' | 'bsw-lift' | 'bsw-madopi' | 'bsw-madopimedia' | 'bsw-marketperf' | 'bsw-my6sense' | 'bsw-nrich' | 'bsw-nextroll' | 'bsw-samsung' | 'bsw-sportradar' | 'bsw-taptap' | 'bsw-webeye' | 'bsw-yahoo' | 'bsw-zetaglobal', required
    - `seatIds` string[]
  - `runOfNetwork` boolean, required
  - `targeting` TargetingGroup[], nullable, required
    - `name` string, required
    - `rules` TargetingRule[], required
      - `attribute` 'device.geo.country' | 'geo.zip' | 'site.domain' | 'app.bundleId' | 'device.deviceType' | 'adUnit.size' | 'audience.segmentids' | 'device.language' | 'device.geo.region' | 'content.categorization.v3' | 'content.genre' | 'publisher.id' | 'content.categorization.v1' | 'imp.tagid', required
      - `values` union[], required
        - union
          - string
          - number
      - `match` 'include' | 'exclude', required
  - `deal` DealLinkage, required
    - `externalDealId` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400`: The request failed validation; `message` names the problem, for example `takeRate is a decimal fraction; expected 0 ≤ x ≤ 0.85`. See the Errors guide.
- `401`: The API key was missing or not accepted. **Not JSON**: a bare `text/plain` string: `api key not provided`, `invalid api key`, or `invalid api key syntax`.
- `403`: The key is valid but not permitted. `{"message": "Insufficient scope"}`: a read-only key sent a write (`POST` or `PATCH`). It is checked before the body is validated, even with `?dryRun=true`. `{"message": "Partner not authorized for this API"}`: the account is not enabled for this API. It is checked after the request is validated, so an invalid request gets its `400` first.
- `404`: No deal request with that id exists for your account: `{"message": "Deal request not found"}`.

---

[API](https://skmtc.dev/sovrn/apis/curation-api.md) - [All operations](https://skmtc.dev/sovrn/apis/curation-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sovrn/apis/curation-api/revisions/0ef84c7a4a94?raw)
