On this page:
Political creative approval process overview
Certain publishers complete compliance checks before Political ads start running. To help streamline the creative review-and-approval process for these ads, they use a specific Creative Submission API. It’s a request that, once sent, returns any creatives attached to Political campaigns that include a Federal Election Commission Identifier (FEC ID) or a state equivalent. This process allows the publisher partners to manually review Political creatives prior to approving them.
Publisher partners complete a simple three-step process when they use an API to review Political campaign creatives:
Obtain the right permissions (access token)
Client ID and Client Secret notice: Contact your IQM representative to obtain a ClientID and ClientSecret. These items are required before you can obtain the access token and send a Creative Submission API request for Political campaign creatives. |
The publisher partner will obtain client credentials, also known as the access token, to confirm they have the proper authorization to access a particular Political campaign’s creatives. They’ll send a POST API request containing the following details to ask for these credentials:
Section | Requirement type | Requirement details |
Header | x-iaa-host | api.iqm.com [Global Host] |
Header | Authorization* | Basic <base64(ClientID:ClientSecret)> |
Header | Content-Type | application/x-www-form-urlencoded |
Body | Grant-Type | grant_type=client_credentials |
*Refer to Obtain the base64 string for additional support with the Authorization header.
Obtain the base64 string
Obtaining the base64 string for the Authorization header is a two-step process:
Concatenate the Client ID and Client Secret with a colon.
Base64-encode the result.
Refer to the example below for more information.
Item | Example value |
Example ClientID | Test |
Example ClientSecret | 123456 |
Example concatenation | Test:123456 |
Example base64 | cm9rdV8yOjEyMzQ1Ng== |
Example cURL request
Refer to the block below to review an example of a request to obtain the access token.
curl --location 'http://api.iqm.com/api/v3/ua/oauth/token' \
--header 'x-iaa-host: api.iqm.com' \
--header 'Authorization: Basic cm9rdV8yOjEyMzQ1Ng==' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials'
Example token response
Access token notice: After you successfully submit the access token request, remember to save the access token included in the response. You’ll need to include this token when you call the Creative Submission API. |
Refer to the block below to review an example of a successful response to your access-token request. Pay special attention to the scope: when a response excludes the “creative.submit” scope, it means the client isn’t authorized to submit creatives via this API.
{
"access_token": "eyJhbGciOiJI...kVJhsWWDCL3...",
"expires_at": 1763632934684,
"scope": "creative.submit"
"token_type": "bearer",
"expires_in": 1799,
"jti": "1c04c09a-67ab-4fe0-a626-a5f1475d283e"
}
Request a Political campaign’s creatives
The publisher partner will use the credentials they obtained to request all of the creatives associated with a specific Political campaign. They’ll send an API request containing the following details to submit a request for these creatives. This request is called the “Creative Submission API.”
Section | Requirement type | Requirement details |
API Endpoint | URL | |
Header | Authorization* | Bearer <access_token> |
Header | x-iaa-host | api.iqm.com |
Query Parameters | Limit (Optional) | If desired, limit the number of creatives submitted. The default value is “-1”, meaning all valid creatives will be submitted when you send the API request. |
*Replace the <access_token> value with the actual access token you received.
Example cURL request
Refer to the block below to review an example of a Creative Submission API request.
curl --location 'http://api.iqm.com/api/v3/crt/creatives/submit?limit=10' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'x-iaa-host: api.iqm.com'
Example response
Publisher partners know that their request was successful when they receive a 200 OK API response that includes the information shown in the example below. A successful request means that the details of the request were valid and the publisher obtained the proper authorization before sending the request.
{
"success": true,
"data": [
{
"creativeId": 715863,
"creativeName": "Sample Creative Name",
"creativeSource": "https://cdn.example.com/creatives/715863/sample-creative.jpg",
"advertiserDetails": {
"advertiserName": "Sample Advertiser",
"website": "https://www.sampleadvertiser.com",
"chiefName": "John Doe",
"contactNumber": "+1-202-555-0147",
"address": "123 Main Street, New York, NY 10001",
"politicalIdentifier": "POL-45678",
"advertiserId": 11124,
"legalInfo": "Verified advertiser with compliance clearance",
"links": [
"https://www.sampleadvertiser.com/about",
"https://www.sampleadvertiser.com/campaigns"
]
}
}
]
}
Unsuccessful requests for a Political campaign’s creatives
Requests for a Political campaign’s creative details aren’t always successful. Refer to the table below for more information on errors that a publisher partner may encounter.
Error | Error description |
401 Unauthorized | Either the token is missing, invalid, or expired; or the client is expired. |
403 Forbidden | The token is valid, but does not have the required “creative.submit” scope. This can occur if you use an access token issued for a client that isn’t otherwise authorized to submit creatives. |
Locate additional Creatives resources

