const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thanks.io/api/v2/creatives/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.thanks.io/api/v2/creatives/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thanks.io/api/v2/creatives/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": 501,
"name": "Spring open house",
"mailer_type": "postcard",
"postcard_size": "4x6",
"sub_account_id": null,
"source": "user",
"hidden": false,
"default": true,
"preview_image_url": null,
"thumbnail_url": "https://cdn.thanks.io/creative-thumbnails/501.png",
"share_url": "https://dashboard.thanks.io/creatives/share/6f1c2e9a-8a7d-4b8e-9d37-1c2b3a4d5e6f",
"is_complete": true,
"needs": [],
"image_template": {
"id": 6,
"name": "Spring open house",
"type": "postcard",
"image": "https://s3.amazonaws.com/cdn.thanks.io/user_image_library/1533645532.png",
"is_dynamic": false,
"dynamic_image_url": null,
"canva_id": null,
"default": false,
"created_from_creative_generation_id": null,
"deleted": false
},
"message_template": {
"id": 12,
"name": "Spring open house",
"type": "postcard",
"content": "Hi %FIRST_NAME%, spring is here!",
"handwriting_style_id": 7,
"custom_background_url": null,
"skip_creative_generation": false,
"default": false,
"deleted": false
},
"back_background": null,
"created_at": "2026-09-27T00:00:00.000000Z",
"updated_at": "2026-10-01T00:00:00.000000Z"
}
],
"links": {
"first": "https://api.thanks.io/api/v2/creatives?page=1",
"last": "https://api.thanks.io/api/v2/creatives?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.thanks.io/api/v2/creatives",
"per_page": 24,
"to": 1,
"total": 1
}
}{
"message": "Unauthorized"
}List Creatives
List the creatives in your Creatives library, 24 per page: the default creative of each type first, then most recently updated. A creative pairs an image template with a message template; send one by passing its id as creative_id to any send or estimate endpoint.
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thanks.io/api/v2/creatives/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.thanks.io/api/v2/creatives/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thanks.io/api/v2/creatives/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": 501,
"name": "Spring open house",
"mailer_type": "postcard",
"postcard_size": "4x6",
"sub_account_id": null,
"source": "user",
"hidden": false,
"default": true,
"preview_image_url": null,
"thumbnail_url": "https://cdn.thanks.io/creative-thumbnails/501.png",
"share_url": "https://dashboard.thanks.io/creatives/share/6f1c2e9a-8a7d-4b8e-9d37-1c2b3a4d5e6f",
"is_complete": true,
"needs": [],
"image_template": {
"id": 6,
"name": "Spring open house",
"type": "postcard",
"image": "https://s3.amazonaws.com/cdn.thanks.io/user_image_library/1533645532.png",
"is_dynamic": false,
"dynamic_image_url": null,
"canva_id": null,
"default": false,
"created_from_creative_generation_id": null,
"deleted": false
},
"message_template": {
"id": 12,
"name": "Spring open house",
"type": "postcard",
"content": "Hi %FIRST_NAME%, spring is here!",
"handwriting_style_id": 7,
"custom_background_url": null,
"skip_creative_generation": false,
"default": false,
"deleted": false
},
"back_background": null,
"created_at": "2026-09-27T00:00:00.000000Z",
"updated_at": "2026-10-01T00:00:00.000000Z"
}
],
"links": {
"first": "https://api.thanks.io/api/v2/creatives?page=1",
"last": "https://api.thanks.io/api/v2/creatives?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.thanks.io/api/v2/creatives",
"per_page": 24,
"to": 1,
"total": 1
}
}{
"message": "Unauthorized"
}Authorizations
Bearer token authentication using your thanks.io API key
Query Parameters
Filter results by Sub Account ID.
Only return creatives of this type. postcard is 4x6. Use the type you will send: a 6x9 postcard send takes a postcard6x9 creative.
postcard, postcard6x9, postcard6x11, letter, windowlessletter, notecard, giftcard, magnacard Only return creatives with both sides present (letters need only a message). Only complete creatives can be sent. Pass 1 to turn the filter on.
Only return creatives whose name contains this text.
Include creatives hidden from the library. Pass 1 to turn it on.
Page number.
Was this page helpful?