Get board creatives
curl --request GET \
--url https://api.adspo.co/v1/boards/{board_id}/creatives \
--header 'x-api-key: <api-key>'import requests
url = "https://api.adspo.co/v1/boards/{board_id}/creatives"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.adspo.co/v1/boards/{board_id}/creatives', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.adspo.co/v1/boards/{board_id}/creatives",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.adspo.co/v1/boards/{board_id}/creatives"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.adspo.co/v1/boards/{board_id}/creatives")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adspo.co/v1/boards/{board_id}/creatives")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"board_id": "00116792-d6d1-444f-a841-80dd3c105ae7",
"next_cursor": null,
"count": 1,
"creatives": [
{
"creative_id": "f930d886d0fb9e86b9dd6c1200dab7ef",
"brand_id": "857986847394146",
"brand_name": "DRMTLGY",
"format": "IMAGE",
"hd_url": "https://r2.adspo.co/creatives/images/original/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"sd_url": "https://r2.adspo.co/creatives/images/resized/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"is_active": false,
"start_date": "2026-03-16T07:00:00Z",
"end_date": "2026-04-24T07:00:00Z",
"runtime_days": 39,
"ad_count": 10,
"landing_pages": [
"https://www.example.com"
],
"countries": [
"AU",
"GB",
"NZ",
"US"
],
"languages": [
"en"
],
"impression_order": 11,
"variants": [],
"hook": null,
"visual_formats": [
"High Production",
"Demo"
],
"saved_at": "2026-04-01T12:00:00Z"
}
]
}Boards
Get board creatives
Returns the creatives saved to a board, ordered by when they were added (newest first). Each page holds up to 12 creatives.
Cursor-based pagination — pass next_cursor from the previous response as cursor.
Each creative includes a saved_at field indicating when it was added to the board.
GET
/
v1
/
boards
/
{board_id}
/
creatives
Get board creatives
curl --request GET \
--url https://api.adspo.co/v1/boards/{board_id}/creatives \
--header 'x-api-key: <api-key>'import requests
url = "https://api.adspo.co/v1/boards/{board_id}/creatives"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.adspo.co/v1/boards/{board_id}/creatives', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.adspo.co/v1/boards/{board_id}/creatives",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.adspo.co/v1/boards/{board_id}/creatives"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.adspo.co/v1/boards/{board_id}/creatives")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adspo.co/v1/boards/{board_id}/creatives")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"board_id": "00116792-d6d1-444f-a841-80dd3c105ae7",
"next_cursor": null,
"count": 1,
"creatives": [
{
"creative_id": "f930d886d0fb9e86b9dd6c1200dab7ef",
"brand_id": "857986847394146",
"brand_name": "DRMTLGY",
"format": "IMAGE",
"hd_url": "https://r2.adspo.co/creatives/images/original/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"sd_url": "https://r2.adspo.co/creatives/images/resized/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"is_active": false,
"start_date": "2026-03-16T07:00:00Z",
"end_date": "2026-04-24T07:00:00Z",
"runtime_days": 39,
"ad_count": 10,
"landing_pages": [
"https://www.example.com"
],
"countries": [
"AU",
"GB",
"NZ",
"US"
],
"languages": [
"en"
],
"impression_order": 11,
"variants": [],
"hook": null,
"visual_formats": [
"High Production",
"Demo"
],
"saved_at": "2026-04-01T12:00:00Z"
}
]
}Credits: 1 credit per request, which returns one page of up to 12 creatives. Each page you fetch with
cursor is another request.Authorizations
Your Adspo API key.
Path Parameters
The board UUID.
Query Parameters
Pagination cursor from a previous response.
Filter to active (true) or inactive (false) creatives.
Filter by media type.
Available options:
IMAGE, VIDEO Returns an ads array containing all Meta ads running the creative, including details such as title, body_text, link_text, etc.