Primi passi con l'API
L'API TinyLink offre ai tuoi strumenti — uno script, Zapier, Make, il tuo sito — gli stessi gesti dell'applicazione: creare una pagina e aggiungervi dei link, accorciare un indirizzo, applicare dei tag, generare un codice QR, leggere le statistiche. È inclusa nei piani Pro e Business.
Procedura
- Apri Libreria, poi la scheda Integrazioni: la scheda API TinyLink è la prima.
- Clicca su Genera un token: si apre un pannello sulla destra. Scegli gli ambiti del token — Lettura, Scrittura (creare, modificare, aggiungere link, generare codici QR) ed Eliminazione — poi conferma. Spunta solo ciò di cui il tuo strumento ha bisogno.
- Il token compare in cima al pannello, nascosto come una password: l'occhio lo mostra, il pulsante accanto lo copia. Resta disponibile in quel punto, potrai riprenderlo più tardi con il pulsante Gestisci della scheda.
- Invialo nell'intestazione di ogni richiesta:
Authorization: Bearer tl_…, all'indirizzohttps://api.tinylink.fr/v1.
Un token per spazio di lavoro
Il token apre solo lo spazio di lavoro in cui è stato generato: i tuoi altri spazi restano fuori portata. Agisce a nome dell'amministratore che lo ha generato, e smette di funzionare se quella persona non è più amministratore dello spazio di lavoro.
Il pannello Gestisci è riservato agli amministratori: solo loro vedono il token e lo modificano. È conservato cifrato presso TinyLink. Gli ambiti si cambiano senza cambiare il token: i tuoi strumenti non devono modificare nulla. Rigenera ne crea uno nuovo e disattiva il vecchio all'istante — da fare se pensi che sia trapelato. Revoca lo elimina. Il pannello indica anche la data dell'ultima chiamata e il numero di chiamate.
Prima chiamata
GET/v1/me
Tutte le risposte sono in JSON. GET /v1/me verifica il token e restituisce lo spazio di lavoro, gli ambiti e i limiti del piano. A partire dal 1° novembre 2026 si aggiunge limits.visits_per_month: le visite del mese (used), la quota del piano (max, null senza quota) e la data di azzeramento (resets_on).
curl https://api.tinylink.fr/v1/me \
-H "Authorization: Bearer tl_il_tuo_token"
const response = await fetch('https://api.tinylink.fr/v1/me', {
headers: { Authorization: 'Bearer tl_il_tuo_token' },
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_il_tuo_token'],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.get(
'https://api.tinylink.fr/v1/me',
headers={'Authorization': 'Bearer tl_il_tuo_token'},
)
data = response.json()
Risposte possibili
{
"environment": {
"id": "Env_60c7cf02dd971TT",
"name": "Mon équipe",
"color": "#1e90ff",
"description": null,
"personal": false,
"blocked": false
},
"token": {
"scopes": [
"read",
"write"
],
"created_at": "2026-10-05T21:56:57+02:00",
"created_by": "Camille Martin",
"last_used_at": "2026-10-05T21:57:19+02:00"
},
"plan": "Pro",
"limits": {
"pages": {
"used": 4,
"max": 10
},
"links": {
"used": 27,
"max": 100
},
"links_per_page": 50,
"socials_per_page": 8,
"requests_per_minute": 120
}
} Token assente dalla richiesta
{
"error": {
"code": "missing_token",
"message": "Send your token in the header: Authorization: Bearer tl_…"
}
} Token sconosciuto o revocato
{
"error": {
"code": "invalid_token",
"message": "This token does not exist or has been revoked."
}
} Il piano del proprietario non include 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."
}
} Il token non ha l'ambito Lettura
{
"error": {
"code": "insufficient_scope",
"message": "This token does not have the \"read\" scope.",
"details": {
"required_scope": "read"
}
}
} Più di 120 richieste nel minuto
{
"error": {
"code": "rate_limited",
"message": "Too many requests: 120 per minute per token."
}
} Senza scrivere codice: l'estensione del browser
Lo stesso token collega l'estensione TinyLink per Chrome: accorcia la pagina che stai leggendo ed elenca i tuoi link brevi dalla barra del browser.
Nel tuo linguaggio
Ogni esempio di questa documentazione esiste in curl, JavaScript, PHP e Python: scegli la scheda, la tua scelta viene ricordata da una pagina all'altra. Nulla impone l'uno o l'altro — l'API è HTTP e JSON, e qualsiasi altro client va bene: Postman, o il modulo HTTP di Zapier e Make. Accorciare un indirizzo, per esempio:
curl -X POST https://api.tinylink.fr/v1/links \
-H "Authorization: Bearer tl_il_tuo_token" \
-H "Content-Type: application/json" \
-d '{"url":"https://exemple.fr/promo","slug":"promo"}'
const response = await fetch('https://api.tinylink.fr/v1/links', {
method: 'POST',
headers: {
Authorization: 'Bearer tl_il_tuo_token',
'Content-Type': 'application/json',
},
body: JSON.stringify({ url: 'https://exemple.fr/promo', slug: 'promo' }),
});
const data = await response.json();
$ch = curl_init('https://api.tinylink.fr/v1/links');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer tl_il_tuo_token', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['url' => 'https://exemple.fr/promo', 'slug' => 'promo']),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
response = requests.post(
'https://api.tinylink.fr/v1/links',
headers={'Authorization': 'Bearer tl_il_tuo_token'},
json={'url': 'https://exemple.fr/promo', 'slug': 'promo'},
)
data = response.json()
Convenzioni
Le stesse regole valgono per tutte le route:
- L'indirizzo di base è
https://api.tinylink.fr/v1.GET /v1, senza token, restituisce il nome dell'API, la sua versione e l'indirizzo di questa documentazione. - Il corpo di una richiesta è un oggetto JSON, inviato con
Content-Type: application/json. GETlegge, con l'ambito Lettura.POSTcrea,PATCHmodifica ePUTapplica un tag, con l'ambito Scrittura.DELETEelimina, con l'ambito Eliminazione.- Una creazione risponde
201con l'oggetto creato, una modifica200con l'oggetto aggiornato, un'eliminazione204senza contenuto. - Gli elenchi di pagine, link brevi ed elementi di un tag sono paginati:
?page=e?per_page=(50 per impostazione predefinita, 100 al massimo). La risposta contiene un oggettopagination:page,per_page,total,total_pages. - Una pagina o un link breve si indica con il suo identificativo o con il suo indirizzo personalizzato (slug). Nei limiti,
nullsignifica illimitato.