Create consent banner from a template
Create a banner preconfigured for a jurisdiction — the consent mode, targeting and copy that regulation requires. As with every banner this API creates, it starts disabled.
jurisdiction_id comes from GET /banner-templates.
curl --request POST \
--url https://cookiechimp.com/api/v1/consent-banners/from-template \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jurisdiction_id": "gdpr"
}
'import requests
url = "https://cookiechimp.com/api/v1/consent-banners/from-template"
payload = { "jurisdiction_id": "gdpr" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jurisdiction_id: 'gdpr'})
};
fetch('https://cookiechimp.com/api/v1/consent-banners/from-template', 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://cookiechimp.com/api/v1/consent-banners/from-template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jurisdiction_id' => 'gdpr'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cookiechimp.com/api/v1/consent-banners/from-template"
payload := strings.NewReader("{\n \"jurisdiction_id\": \"gdpr\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cookiechimp.com/api/v1/consent-banners/from-template")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jurisdiction_id\": \"gdpr\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cookiechimp.com/api/v1/consent-banners/from-template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jurisdiction_id\": \"gdpr\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "ban1",
"name": "EU banner",
"enabled": true,
"enable_tcf": false,
"force_consent": false,
"consent_mode": "opt_in",
"consent_duration_days": 180,
"consent_layout": "box",
"consent_position": "bottom_center",
"consent_title": "We use cookies",
"consent_description": "We use cookies to improve your experience.",
"privacy_policy_url": "https://example.com/privacy",
"preferences_control_level": "category_and_services",
"dark_mode": "light",
"language_autodetect": "document",
"revision": 2,
"target_type": "selected_countries",
"target_countries": [
"DE",
"FR"
],
"target_us_states": [],
"target_canadian_regions": [],
"translations": [
{
"id": "trn1",
"language_code": "de"
},
{
"id": "trn2",
"language_code": "fr"
}
],
"created_at": "2023-01-05T10:15:30Z",
"updated_at": "2023-02-01T08:00:00Z"
}
}{
"errors": [
{
"code": 400,
"message": "Specify account_id when the API key can access more than one account"
}
]
}{
"errors": [
{
"code": 401,
"message": "API key must belong to an account"
}
]
}{
"errors": [
{
"code": 403,
"message": "User must be an admin of this account"
}
]
}{
"errors": [
{
"code": 401,
"message": "Invalid API Key"
}
]
}{
"errors": [
{
"error": "Name can't be blank"
}
]
}{
"errors": [
{
"code": 429,
"message": "Too many requests. Please retry later."
}
]
}Authorizations
API token obtained from the login endpoint or the dashboard
Query Parameters
Which account to act on, as the account's API id. Only meaningful for a user API key, which may reach several accounts — an account key already identifies exactly one and ignores this.
Accepted by the endpoints that declare it; others act on the account the key resolves to on its own.
Optional for reads, where it narrows the request to that account.
Required for writes that declare it when the key can reach more than one
account: without it the request would act on an account it picked rather
than one you named, so it is refused with a 400.
Body
The jurisdiction to build the banner for
A template id from GET /banner-templates
Response
The created consent banner
Every setting the update endpoint accepts, plus the read-only fields below — the response is derived from the same list the API permits, so a banner can be read, edited and sent back unchanged.
Show child attributes
Show child attributes
{
"id": "ban1",
"name": "EU banner",
"enabled": true,
"enable_tcf": false,
"force_consent": false,
"consent_mode": "opt_in",
"consent_duration_days": 180,
"consent_layout": "box",
"consent_position": "bottom_center",
"consent_title": "We use cookies",
"consent_description": "We use cookies to improve your experience.",
"privacy_policy_url": "https://example.com/privacy",
"preferences_control_level": "category_and_services",
"dark_mode": "light",
"language_autodetect": "document",
"revision": 2,
"target_type": "selected_countries",
"target_countries": ["DE", "FR"],
"target_us_states": [],
"target_canadian_regions": [],
"translations": [
{ "id": "trn1", "language_code": "de" },
{ "id": "trn2", "language_code": "fr" }
],
"created_at": "2023-01-05T10:15:30Z",
"updated_at": "2023-02-01T08:00:00Z"
}
Was this page helpful?
curl --request POST \
--url https://cookiechimp.com/api/v1/consent-banners/from-template \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jurisdiction_id": "gdpr"
}
'import requests
url = "https://cookiechimp.com/api/v1/consent-banners/from-template"
payload = { "jurisdiction_id": "gdpr" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jurisdiction_id: 'gdpr'})
};
fetch('https://cookiechimp.com/api/v1/consent-banners/from-template', 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://cookiechimp.com/api/v1/consent-banners/from-template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jurisdiction_id' => 'gdpr'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cookiechimp.com/api/v1/consent-banners/from-template"
payload := strings.NewReader("{\n \"jurisdiction_id\": \"gdpr\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cookiechimp.com/api/v1/consent-banners/from-template")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jurisdiction_id\": \"gdpr\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cookiechimp.com/api/v1/consent-banners/from-template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jurisdiction_id\": \"gdpr\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "ban1",
"name": "EU banner",
"enabled": true,
"enable_tcf": false,
"force_consent": false,
"consent_mode": "opt_in",
"consent_duration_days": 180,
"consent_layout": "box",
"consent_position": "bottom_center",
"consent_title": "We use cookies",
"consent_description": "We use cookies to improve your experience.",
"privacy_policy_url": "https://example.com/privacy",
"preferences_control_level": "category_and_services",
"dark_mode": "light",
"language_autodetect": "document",
"revision": 2,
"target_type": "selected_countries",
"target_countries": [
"DE",
"FR"
],
"target_us_states": [],
"target_canadian_regions": [],
"translations": [
{
"id": "trn1",
"language_code": "de"
},
{
"id": "trn2",
"language_code": "fr"
}
],
"created_at": "2023-01-05T10:15:30Z",
"updated_at": "2023-02-01T08:00:00Z"
}
}{
"errors": [
{
"code": 400,
"message": "Specify account_id when the API key can access more than one account"
}
]
}{
"errors": [
{
"code": 401,
"message": "API key must belong to an account"
}
]
}{
"errors": [
{
"code": 403,
"message": "User must be an admin of this account"
}
]
}{
"errors": [
{
"code": 401,
"message": "Invalid API Key"
}
]
}{
"errors": [
{
"error": "Name can't be blank"
}
]
}{
"errors": [
{
"code": 429,
"message": "Too many requests. Please retry later."
}
]
}