Request For Proposal API For Buyers

Request For Proposal API allows Buyers to request their preferred inventory from connected Supplier partners, to view and update existing requests, to accept and reject deals provided by Suppliers.

To connect to Request For Proposal API, use the following steps.

  • Create an API user in your myBidSwitch UI account.

  • Using this user’s credentials, get your API token by making a POST request to the BidSwitch authorization endpoint.

  • Pass this token in your request header Authorization:Bearer ${TOKEN}

To view all existing requests for proposal, GET the following endpoint:

api/v1/dsp/<dsp-id>/rfp/

To sort the list of requests by the date of update in descending order, GET the following endpoint:

api/v1/dsp/<dsp-id>/rfp/<rfp-id>/

To search for a request by its name, GET the following endpoint:

api/v1/dsp/1/rfp/?query=rfp-name

Existing requests can be filtered by status, GET the following endpoint:

api/v1/dsp/1/rfp/?status=requested

To get details of a particular request, GET the following endpoint:

api/v1/dsp/<dsp-id>/rfp/<rfp-id>/

Creating New Request

To create a new request for proposal, POST to the following endpoint:

api/v1/dsp/<dsp-id>/rfp/

"contract_type", "private_auction" and "currency_code" fields are readonly.

See the POST request example below.

New Request For Proposal
{
  "name": "Proposed Deal",
  "ssp_ids": [23, 255],
  "start_time": "2025-01-23T15:28:24.394000Z",
  "end_time": "2025-03-23T15:28:24.394000Z",
  "auction_type": 2,
  "device_type": ["MediaCenter"],
  "content_type": ["display"],
  "geo": [{"country": {"code": "AM", "regions": [{"code": "AG", "subregions": []}, {"code": "AR", "subregions": []}]}}],
  "ads_txt_status": ["direct", "reseller", "unauthorized"],
  "language": ["en"],
  "content_categories": [{"code": "150", "subcategories": [{"code": "M"}]}, {"code": "151"}],
  "submitted_by": "Jane Doe",
  "contact_email": "janedoe@example.com",
  "max_price": 2.34
}

Updating Request Status

This is the only change that can be made in an existing request. POST the new status to the following endpoint:

/api/v1/dsp/{dsp-id}/dsp_rfp/{rfp-id}

See the POST request example below.

Updating Status
{
  "status": "requested"
}

A request can have the following statuses:

  • requested: for requests created by a Buyer and not yet reviewed by a Supplier; can only be set by Buyer

  • canceled: for requests canceled by a Buyer, a canceled request can be updated; can only be set by Buyer

  • resolved: status set by the Supplier after the Buyer accepts the deal; can only be set by Supplier

Request For Proposal API Fields

Request For Proposal API is represented by the following fields.

Optional fields are marked with *.

Field

Type

Description

id

integer

The unique ID of the request

name

string

The unique name of the request

created*

string

The time when the request was created

updated*

string

The time of the latest update

contract_type

string

This field is hardcoded and cannot be edited; the only possible value is "non-guaranteed"

start_time

string

The start time of the request. Should be earlier than the end time of the request

end_time

string

The expiration time of the request. Should be later than the start time of the request

private_auction

integer

This field is hardcoded and cannot be edited; the only possible value is 1

auction_type

integer

The following values are supported:

  • 1 - first price

  • 2 - second price

  • 3 - fixed price

currency_code

string

This field is hardcoded and cannot be edited; the only possible value is "USD"

device_type

array of strings

The following values are supported:

  • "connected_tv"

  • "pc"

  • "phone"

  • "tablet"

content_type

array of strings

The following values are supported:

  • "audio"

  • "display"

  • "native"

  • "video"

geo*

array of dictionaries

Countries and regions targeted by the request, for example "country": {"code": "AM", "regions": [{"code": "AG"}]}

language*

array of strings

Languages targeted by the request, codes from the DB table are supported, for example "language": ["en"]

content_categories

array of dictionaries

An array of key-value pairs representing content categories from IAB Taxonomy - for example, "content_categories": [{"code": "150", "subcategories": [{"code": "M"}]}]

ads_txt_status*

array of strings

The following values are supported:

  • "direct"

  • "reseller"

  • "unauthorized"

  • "unknown"

submitted_by

string

The contact person who submitted the request

contact_email

string

The email address of the contact person

max_price

decimal

Specifies the maximum monetary amount a DSP is willing to pay for a requested deal. This field must contain a non-zero value and represents the upper limit for acceptable pricing

description*

string

The general information about the request and the targeted partners