Skip to navigation

SCO Validation & Verification API

Check OpenRTB supply chain objects in real time, one at a time or in bulk.

The SCO Validation & Verification API checks an OpenRTB supply chain object (SCO) before you act on a bid request. Validation checks that the SCO is well formed. Verification also checks each seller it declares against the publisher’s ads.txt or app-ads.txt and each seller’s sellers.json entry. You get back a status and reason codes you can use to decline the request or take the problem to the seller.

Before you start

  • API key: send it in the x-api-key header. See Authentication and API keys.
  • Base URL: https://api.pixalate.com/api/v2
  • Format: every endpoint takes a JSON POST body and returns JSON.

Make your first request

Validate and verify one SCO for a website. Send the serialized SCO string as sco and the publisher domain as id:

curl -X POST "https://api.pixalate.com/api/v2/sco/website/vv" \
-H "x-api-key: $PIXALATE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sco": "1.0,1!ssp.example.com,1234,1,bid-request-id-1,ExampleSSP,ssp.example.com",
"id": "example.com"
}'

For a mobile or CTV app, call /sco/app/vv and send the app’s bundle ID as id, for example com.example.mobileapp.

Read the response

The response is an array of results. Each result has a status and, when there’s a problem, the reasons behind it. This example shows the shape of a failed verification:

[
{
"status": "invalid",
"reasons": [206]
}
]
FieldTypeDescription
statusstringvalid: the SCO is valid. invalid: the SCO is invalid. error: there was an error.
reasonsarray of integersThe reason codes for the verdict.

Endpoints

Pick an endpoint by supply type, by whether you want verification, and by single or bulk.

EndpointChecksSupply typeid valueReference
POST /sco/app/vvValidate and verifyApps (mobile and CTV)App bundle IDSingle
POST /sco/bulk/app/vvValidate and verifyApps (mobile and CTV)App bundle IDBulk
POST /sco/website/vvValidate and verifyWebsitesPublisher domainSingle
POST /sco/bulk/website/vvValidate and verifyWebsitesPublisher domainBulk
POST /sco/vvValidate and verifyWebsites or appsPublisher domain or app bundle IDSingle
POST /sco/bulk/vvValidate and verifyWebsites or appsPublisher domain or app bundle IDBulk
POST /sco/vValidate onlyAnySee note belowSingle
POST /sco/bulk/vValidate onlyAnySee note belowBulk

Use /sco/vv and /sco/bulk/vv when one integration submits both websites and apps.

Check many SCOs in one call

The bulk endpoints take a JSON array. Each element has the same sco and id fields as a single request:

curl -X POST "https://api.pixalate.com/api/v2/sco/bulk/vv" \
-H "x-api-key: $PIXALATE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"sco": "1.0,1!ssp.example.com,1234,1,bid-request-id-1,ExampleSSP,ssp.example.com",
"id": "example.com"
},
{
"sco": "1.0,1!ssp.example.com,1234,1,bid-request-id-2,ExampleSSP,ssp.example.com",
"id": "com.example.mobileapp"
}
]'

The response is an object with a results array that holds one outcome per submitted item. Each outcome has the same status and reasons fields as the single-item response.

Validate only

/sco/v and /sco/bulk/v check that an SCO is well formed without looking up any seller records, so they can only return reason codes 101 and 102. Use the validate-and-verify endpoints when you need authorization checks.

The API reference lists id as a required field for the validate-only endpoints but doesn’t describe it. If a validate-only request is rejected, contact support@pixalate.com.

Reason codes

reasons contains one or more of these codes. Codes 101 and 102 are problems with the SCO itself. Codes 201 to 209 are problems with the authorization of the entities it declares, and only the validate-and-verify endpoints return them.

CodeMeaning
101SCO declared incomplete
102SCO deserialization failed
201sellers.json not resolved
202ads.txt not resolved
203app-ads.txt not resolved
204Unable to resolve seller domain
205Publisher missing in SCO
206Direct seller not authorized
207Reseller not authorized
208Reseller listed as direct seller
209Link in SCO missing in sellers.json

Errors

StatusMeaningWhat to do
400The request has invalid parameters.Check that the body is valid JSON with the fields shown above.
401The API key is invalid.Check the key in your x-api-key header.

A 200 response with status: "invalid" or status: "error" isn’t an HTTP error. It’s the result of the check. See Quotas, limits and errors for status codes across all Pixalate APIs.