When an organization is disabled (i.e. it does not have an active subscription), the API will return a 403 Forbidden response:
The Campaign object
The campaign object is used to tell us where to store the Ad and Screenshot data for the request. You must included either campaign.idorcampaign.name in the request.
Using campaign.name is the most common, as we will find or create a Campaign using this key
campaign.id
The Ad Reform ID for an existing Campaign. Use this if you know the specific ID for the campaign you want to use, otherwise use campaign.name.
campaign.name
The name you want to use for the Campaign. If a Campaign already exists with this name, we'll use that, otherwise we'll create a new one with this value as the name.
Note: Campaign names cannot be longer than 250 characters. A campaign.name longer than 250 characters will be truncated automatically.
The Ad object
The ad object (within each object in the screenshot_requests array) is used to indicate what ad data you want to use in the screenshots you're requesting. This can be entirely new ad data (i.e. an ad creative that does not yet exist in your Ad Reform account), or it can be the id or lookup_key pointing to an existing ad.
ad.id
The Ad Reform ID for an existing Ad in your account.
ad.lookup_key
A unique ID for an Ad. If an Ad already exists with this key, we'll use that Ad, otherwise we'll create a new one with this value as the lookup_key.
Within a single API request, each ad.lookup_key must be unique across all entries in screenshot_requests. If you need multiple screenshots for the same ad, specify them within the ad object as multiple screenshots in the screenshots array.
ad.name
An optional name for the ad. This is used when creating a new ad — either by providing ad.media alone, or by providing ad.media with a lookup_key that doesn't match any existing ad. When referencing an existing ad by id or lookup_key, this field is ignored and the existing ad's name is preserved.
The ad.name field has a maximum length of 255 characters.
Example payload using ad.lookup_key
Example incorrect payload – duplicate ad.lookup_key across entries (rejected)
ad.media
An object with type and content keys that contains actual Ad creative data.
You can use both ad.media (to send in raw ad data) and ad.lookup_key together in a request, so future requests with the same lookup_key will be associated to the same Ad in Ad Reform
The Media object
To create a new ad, provide ad creative content in the media object (within the ad object):
Supported media types
Here are the supported type values and some related content examples:
The URL for an ad creative, such as an image, video, VAST tag, or HTML5 zip file
The Screenshots array
Within the screenshots array, there will be a JSON object for each screenshot for the associated ad. Each object is composed of site object and a device object.
The Site object
The Site object in the screenshots array must include a url key.
site.url
The website URL.
The Device object
The Device object in the screenshots array must include a name key.
device.name
The device to use when generating the screenshot.
Supported devices
Here's a list of supported device.name values:
desktop
mobile
iphone
tablet
ipad
Apple iPad
Apple iPhone 5
Apple iPhone 6
Apple iPhone 6 Plus
Apple iPhone X
Apple iPhone 14 Pro Max
Google Nexus 10
Google Nexus 5
Google Nexus 6
Google Pixel 4
Samsung Galaxy S10
The Options object
You can use the options object within a screenshot object to specify additional settings.
Specifying which ad frames to use
You can use the options.ad.frames array to specify which frame(s) of the ad to use within a screenshot:
Each object in the frames array should include a marker, which should be a float representing the timestamp (in seconds) where the frame should be captured. The marker value must be between 0 and 30 seconds.
If options.ad.frames is an empty array (i.e. no frames are specified), we will use our default logic for capturing the ad.
Example payload using options.ad.frames
If a request payload includes multiple screenshot objects within a single ad object, and these screenshot objects specify options.ad.frames, we will merge all frame markers into a single, de-duplicated set.
Example payload specifying frames with multiple screenshot objects
In this example:
Since the screenshot objects are within the same ad object, we will merge the frame marker values
We will generate 4 screenshots:
2 on website-one.com at frames 0.0 and 1.0
2 on website-two.com at frames 1.0 and 2.0
Last updated
POST /api/v1/orgs/{organization_slug}/screenshot_requests HTTP/1.1
Host: app.adreform.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 664
{
"campaign": {
"id": "8304d4b0-90e0-4c58-ae3d-38807b23fd9c",
"name": "New Campaign - Via API"
},
"screenshot_requests": [
{
"ad": {
"id": "9d3df05e-7e9d-41c2-80d2-28ccc36960e9",
"lookup_key": "my-internal-key-0001",
"name": "Summer Campaign - 300x250 Banner",
"media": {
"type": "html_tag",
"content": "<img src=\"https://picsum.photos/300/250?image=0\"/>"
}
},
"screenshots": [
{
"site": {
"url": "https://atlutd.com"
},
"device": {
"name": "desktop"
}
}
]
}
],
"subscribers": [
{
"webhook": {
"url": "https://webhook.site/ae28ba3d-7c83-4a52-a0e4-5925f76d3a14"
},
"s3": {
"bucket": "my-bucket",
"region": "us-east-1",
"key_prefix": "ar_"
}
}
],
"instructions": "Please take a screenshot of the ad on the homepage of the site"
}
{
"status": "failure",
"errors": {
"organization": ["Your organization is disabled. Upgrade to keep using the API: https://adreform.com/o/_/billing"]
}
}