Styles de page
Un style de page réunit couleurs, polices, disposition et bannière, partagés par toutes les pages qui le suivent : le modifier change ces pages aussitôt. Les réglages sont ceux de l'apparence d'une page ; on rattache une page à un style avec PATCH /v1/pages/{id}/style. Créer, modifier ou dupliquer un style dépend de l'offre, comme les composants.
- GET
/v1/page-stylesLister les styles - POST
/v1/page-stylesCréer un style - GET
/v1/page-styles/{id}Lire un style - PATCH
/v1/page-styles/{id}Modifier un style - PUT
/v1/page-styles/{id}/bannerChanger la bannière d'un style - POST
/v1/page-styles/{id}/bannerChanger la bannière d'un style - DELETE
/v1/page-styles/{id}/bannerChanger la bannière d'un style - POST
/v1/page-styles/{id}/duplicateDupliquer un style - DELETE
/v1/page-styles/{id}Supprimer un style
Lister les styles
GET/v1/page-styles
Les sept styles fournis par TinyLink d'abord (builtin: true : default, light, dark, blue, cream, forest, plum), utilisables par toutes les pages mais pas modifiables, puis ceux de l'environnement, par ordre alphabétique. pages_count compte les pages qui suivent le style. Portée Lecture.
curl https://api.tinylink.fr/v1/page-styles \
-H "Authorization: Bearer tl_votre_jeton"
const response = await fetch('https://api.tinylink.fr/v1/page-styles', {
headers: { Authorization: 'Bearer tl_votre_jeton' },
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton'],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.get(
'https://api.tinylink.fr/v1/page-styles',
headers={'Authorization': 'Bearer tl_votre_jeton'},
)
data = response.json()
Réponses possibles
{
"data": [
{
"id": "default",
"name": "Default",
"description": null,
"builtin": true,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#FFFFFF",
"button_title_color": "#212121",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "rounded",
"background_color": "#F0F0F0",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": null,
"pages_count": 0,
"created_at": null
},
{
"id": "light",
"name": "Light",
"description": null,
"builtin": true,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#FFFFFF",
"header_title_color": "#212121",
"header_description_color": "#646464",
"header_icon_color": "#212121",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#FFFFFF",
"button_title_color": "#212121",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "rounded",
"background_color": "#F0F0F0",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": null,
"pages_count": 0,
"created_at": null
}
]
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Lecture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"read\" scope.",
"details": {
"required_scope": "read"
}
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Créer un style
POST/v1/page-styles
name est obligatoire (100 caractères au plus). Les réglages partent des valeurs d'une page neuve ; settings en change certains. Avec from_page (identifiant ou slug d'une page), le style reprend l'apparence de cette page, bannière comprise — la page n'y est pas rattachée pour autant. Portée Écriture.
name— le nom du styledescription— 1 000 caractères au plussettings— réglages d'apparence, voir Apparence d'une pagefrom_page— page dont l'apparence est reprise
curl -X POST https://api.tinylink.fr/v1/page-styles \
-H "Authorization: Bearer tl_votre_jeton" \
-H "Content-Type: application/json" \
-d '{
"name": "Charte 2026",
"description": "Couleurs de la marque",
"settings": {
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_radius": "circular"
}
}'
const response = await fetch('https://api.tinylink.fr/v1/page-styles', {
method: 'POST',
headers: {
Authorization: 'Bearer tl_votre_jeton',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Charte 2026',
description: 'Couleurs de la marque',
settings: {
button_color: '#1E90FF',
button_title_color: '#FFFFFF',
button_radius: 'circular',
},
}),
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Charte 2026',
'description' => 'Couleurs de la marque',
'settings' => [
'button_color' => '#1E90FF',
'button_title_color' => '#FFFFFF',
'button_radius' => 'circular',
],
]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.post(
'https://api.tinylink.fr/v1/page-styles',
headers={'Authorization': 'Bearer tl_votre_jeton'},
json={
'name': 'Charte 2026',
'description': 'Couleurs de la marque',
'settings': {
'button_color': '#1E90FF',
'button_title_color': '#FFFFFF',
'button_radius': 'circular',
},
},
)
data = response.json()
Réponses possibles
{
"id": "PST6ad34a11d00877",
"name": "Charte 2026",
"description": "Couleurs de la marque",
"builtin": false,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "circular",
"background_color": "#F0F0F0",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": null,
"pages_count": 0,
"created_at": "2026-10-17T12:12:33+02:00",
"pages": []
} Le corps n'est pas un objet JSON
{
"error": {
"code": "invalid_json",
"message": "The request body must be a JSON object."
}
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} L'offre du propriétaire n'inclut pas les styles de page
{
"error": {
"code": "plan_feature_unavailable",
"message": "Page styles are not included in the plan of this environment's owner."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Écriture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"write\" scope.",
"details": {
"required_scope": "write"
}
}
} Champ obligatoire absent ou vide
{
"error": {
"code": "validation_failed",
"message": "The \"name\" field is required.",
"details": {
"field": "name"
}
}
} Réglage d'apparence inconnu
{
"error": {
"code": "validation_failed",
"message": "Unknown setting \"shadow\". Accepted: header_layout, logo_size, header_text_size, header_color, header_title_color, header_description_color, header_icon_color, header_title_font, header_description_font, button_text_size, button_color, button_title_color, button_description_color, button_title_font, button_description_font, button_radius, background_color, section_text_size, section_title_color, section_title_font, section_description_color, section_description_font.",
"details": {
"field": "settings.shadow"
}
}
} Valeur refusée pour un réglage (couleur, police, liste)
{
"error": {
"code": "validation_failed",
"message": "The \"button_color\" setting must be a hexadecimal colour such as #1E90FF.",
"details": {
"field": "settings.button_color"
}
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Lire un style
GET/v1/page-styles/{id}
Le style et les pages qui le suivent. Un style fourni se lit aussi (/page-styles/dark). Portée Lecture.
curl https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877 \
-H "Authorization: Bearer tl_votre_jeton"
const response = await fetch('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877', {
headers: { Authorization: 'Bearer tl_votre_jeton' },
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton'],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.get(
'https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877',
headers={'Authorization': 'Bearer tl_votre_jeton'},
)
data = response.json()
Réponses possibles
{
"id": "PST6ad34a11d00877",
"name": "Charte 2026",
"description": "Couleurs de la marque",
"builtin": false,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "circular",
"background_color": "#F0F0F0",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": null,
"pages_count": 1,
"created_at": "2026-10-17T12:12:33+02:00",
"pages": [
{
"id": "P6ad34a0e4fef09",
"name": "Ma page",
"url": "https://tnylnk.fr/ma-page"
}
]
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Lecture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"read\" scope.",
"details": {
"required_scope": "read"
}
}
} Aucun style de page avec cet identifiant dans l'environnement
{
"error": {
"code": "not_found",
"message": "Page style not found in this environment."
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Modifier un style
PATCH/v1/page-styles/{id}
name, description et, dans settings, les seuls réglages à changer. Toutes les pages qui suivent le style changent avec lui. Portée Écriture.
curl -X PATCH https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877 \
-H "Authorization: Bearer tl_votre_jeton" \
-H "Content-Type: application/json" \
-d '{"settings":{"background_color":"#181818"}}'
const response = await fetch('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877', {
method: 'PATCH',
headers: {
Authorization: 'Bearer tl_votre_jeton',
'Content-Type': 'application/json',
},
body: JSON.stringify({ settings: { background_color: '#181818' } }),
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['settings' => ['background_color' => '#181818']]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.patch(
'https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877',
headers={'Authorization': 'Bearer tl_votre_jeton'},
json={'settings': {'background_color': '#181818'}},
)
data = response.json()
Réponses possibles
{
"id": "PST6ad34a11d00877",
"name": "Charte 2026",
"description": "Couleurs de la marque",
"builtin": false,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "circular",
"background_color": "#181818",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": null,
"pages_count": 1,
"created_at": "2026-10-17T12:12:33+02:00",
"pages": [
{
"id": "P6ad34a0e4fef09",
"name": "Ma page",
"url": "https://tnylnk.fr/ma-page"
}
]
} Le corps n'est pas un objet JSON
{
"error": {
"code": "invalid_json",
"message": "The request body must be a JSON object."
}
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} Style fourni par TinyLink, en lecture seule
{
"error": {
"code": "builtin_style",
"message": "Styles provided by TinyLink cannot be modified or deleted. Duplicate one to make it yours."
}
} L'offre du propriétaire n'inclut pas les styles de page
{
"error": {
"code": "plan_feature_unavailable",
"message": "Page styles are not included in the plan of this environment's owner."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Écriture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"write\" scope.",
"details": {
"required_scope": "write"
}
}
} Aucun style de page avec cet identifiant dans l'environnement
{
"error": {
"code": "not_found",
"message": "Page style not found in this environment."
}
} Aucun champ modifiable dans le corps
{
"error": {
"code": "validation_failed",
"message": "Nothing to update. Accepted fields: name, description, settings."
}
} Réglage d'apparence inconnu
{
"error": {
"code": "validation_failed",
"message": "Unknown setting \"shadow\". Accepted: header_layout, logo_size, header_text_size, header_color, header_title_color, header_description_color, header_icon_color, header_title_font, header_description_font, button_text_size, button_color, button_title_color, button_description_color, button_title_font, button_description_font, button_radius, background_color, section_text_size, section_title_color, section_title_font, section_description_color, section_description_font.",
"details": {
"field": "settings.shadow"
}
}
} Valeur refusée pour un réglage (couleur, police, liste)
{
"error": {
"code": "validation_failed",
"message": "The \"button_color\" setting must be a hexadecimal colour such as #1E90FF.",
"details": {
"field": "settings.button_color"
}
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Changer la bannière d'un style
PUT/v1/page-styles/{id}/banner
POST/v1/page-styles/{id}/banner
DELETE/v1/page-styles/{id}/banner
Même envoi que la bannière d'une page (image, crop.classic, crop.wide) ; DELETE la retire. Les pages qui suivent le style l'affichent aussitôt. Portée Écriture.
curl -X PUT https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/banner \
-H "Authorization: Bearer tl_votre_jeton" \
-H "Content-Type: application/json" \
-d '{"image":"https://exemple.fr/banniere.jpg"}'
const response = await fetch('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/banner', {
method: 'PUT',
headers: {
Authorization: 'Bearer tl_votre_jeton',
'Content-Type': 'application/json',
},
body: JSON.stringify({ image: 'https://exemple.fr/banniere.jpg' }),
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/banner');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['image' => 'https://exemple.fr/banniere.jpg']),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.put(
'https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/banner',
headers={'Authorization': 'Bearer tl_votre_jeton'},
json={'image': 'https://exemple.fr/banniere.jpg'},
)
data = response.json()
Réponses possibles
{
"id": "PST6ad34a11d00877",
"name": "Charte 2026",
"description": "Couleurs de la marque",
"builtin": false,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "circular",
"background_color": "#181818",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": {
"classic": "https://content.tinylink.fr/page-banner/banner_6ad34a1230b69.webp",
"wide": "https://content.tinylink.fr/page-banner/wide_banner_6ad34a1230b69.webp"
},
"pages_count": 1,
"created_at": "2026-10-17T12:12:33+02:00",
"pages": [
{
"id": "P6ad34a0e4fef09",
"name": "Ma page",
"url": "https://tnylnk.fr/ma-page"
}
]
} Le corps n'est pas un objet JSON
{
"error": {
"code": "invalid_json",
"message": "The request body must be a JSON object."
}
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} Style fourni par TinyLink, en lecture seule
{
"error": {
"code": "builtin_style",
"message": "Styles provided by TinyLink cannot be modified or deleted. Duplicate one to make it yours."
}
} L'offre du propriétaire n'inclut pas les bannières
{
"error": {
"code": "plan_feature_unavailable",
"message": "Banners are not included in the plan of this environment's owner."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Écriture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"write\" scope.",
"details": {
"required_scope": "write"
}
}
} Aucun style de page avec cet identifiant dans l'environnement
{
"error": {
"code": "not_found",
"message": "Page style not found in this environment."
}
} Image illisible, trop lourde ou d'un format refusé
{
"error": {
"code": "invalid_image",
"message": "The image could not be used: send a JPEG, PNG or WebP image (5 MB and 6000 px per side at most) as a public address, a base64 data URI, or a file sent with POST as multipart/form-data.",
"details": {
"field": "image"
}
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Dupliquer un style
POST/v1/page-styles/{id}/duplicate
Copie le style, bannière comprise, sous le nom name (à défaut : le nom suivi de « (copy) »). Un style fourni se duplique aussi : la copie appartient à l'environnement et se modifie. Portée Écriture.
curl -X POST https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/duplicate \
-H "Authorization: Bearer tl_votre_jeton" \
-H "Content-Type: application/json" \
-d '{"name":"Charte 2026 (soldes)"}'
const response = await fetch('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/duplicate', {
method: 'POST',
headers: {
Authorization: 'Bearer tl_votre_jeton',
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'Charte 2026 (soldes)' }),
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/duplicate');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['name' => 'Charte 2026 (soldes)']),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.post(
'https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877/duplicate',
headers={'Authorization': 'Bearer tl_votre_jeton'},
json={'name': 'Charte 2026 (soldes)'},
)
data = response.json()
Réponses possibles
{
"id": "PST6ad34a13c32e24",
"name": "Charte 2026 (soldes)",
"description": "Couleurs de la marque",
"builtin": false,
"settings": {
"header_layout": "classic",
"logo_size": "medium",
"header_text_size": "medium",
"header_color": "#212121",
"header_title_color": "#FFFFFF",
"header_description_color": "#D8D8D8",
"header_icon_color": "#FFFFFF",
"header_title_font": "metroblack",
"header_description_font": "robotoreg",
"button_text_size": "medium",
"button_color": "#1E90FF",
"button_title_color": "#FFFFFF",
"button_description_color": "#888888",
"button_title_font": "robotoreg",
"button_description_font": "robotoreg",
"button_radius": "circular",
"background_color": "#181818",
"section_text_size": "medium",
"section_title_color": "#212121",
"section_title_font": "robotobold",
"section_description_color": "#888888",
"section_description_font": "robotoreg"
},
"banner": {
"classic": "https://content.tinylink.fr/page-banner/banner_6ad34a13c31b2.webp",
"wide": "https://content.tinylink.fr/page-banner/wide_banner_6ad34a13c31b2.webp"
},
"pages_count": 0,
"created_at": "2026-10-17T12:12:35+02:00",
"pages": []
} Le corps n'est pas un objet JSON
{
"error": {
"code": "invalid_json",
"message": "The request body must be a JSON object."
}
} Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} L'offre du propriétaire n'inclut pas les styles de page
{
"error": {
"code": "plan_feature_unavailable",
"message": "Page styles are not included in the plan of this environment's owner."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Écriture
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"write\" scope.",
"details": {
"required_scope": "write"
}
}
} Aucun style de page avec cet identifiant dans l'environnement
{
"error": {
"code": "not_found",
"message": "Page style not found in this environment."
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Supprimer un style
DELETE/v1/page-styles/{id}
Supprime le style et sa bannière ; les pages qui le suivaient retrouvent leurs propres réglages. Portée Suppression.
curl -X DELETE https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877 \
-H "Authorization: Bearer tl_votre_jeton"
const response = await fetch('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877', {
method: 'DELETE',
headers: { Authorization: 'Bearer tl_votre_jeton' },
});
console.log(response.status); // 204
$ch = curl_init('https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_votre_jeton'],
]);
curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // 204
curl_close($ch);
import requests
response = requests.delete(
'https://api.tinylink.fr/v1/page-styles/PST6ad34a11d00877',
headers={'Authorization': 'Bearer tl_votre_jeton'},
)
print(response.status_code) # 204
Réponses possibles
Sans contenu
Jeton absent de la requête
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Jeton inconnu ou révoqué
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} Style fourni par TinyLink, en lecture seule
{
"error": {
"code": "builtin_style",
"message": "Styles provided by TinyLink cannot be modified or deleted. Duplicate one to make it yours."
}
} L'offre du propriétaire n'inclut pas l'API
{
"error": {
"code": "plan_required",
"message": "The TinyLink API is included in the Pro and Business plans. Upgrade the plan of this environment's owner to use it."
}
} Le jeton ne porte pas la portée Suppression
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"delete\" scope.",
"details": {
"required_scope": "delete"
}
}
} Aucun style de page avec cet identifiant dans l'environnement
{
"error": {
"code": "not_found",
"message": "Page style not found in this environment."
}
} Plus de 120 requêtes dans la minute
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
}