Aller au contenu

Integrazioni

Gli account collegati in Libreria → Integrazioni (YouTube, Shopify, Instagram, RSS…) alimentano blocchi di pagina che si aggiornano da soli: l'ultimo video, un prodotto, il prossimo evento. Il collegamento di un account si fa nell'applicazione; l'API li legge e posiziona i loro blocchi, su una pagina come in un componente.

Elencare le integrazioni

GET/v1/integrations

Gli account collegati dello spazio di lavoro, dal più recente. status vale active, reconnect_required (autorizzazione da rinnovare nell'applicazione) o error; suspended segnala un account oltre il limite del piano; used dice se un blocco lo mostra. Ambito Lettura.

curl https://api.tinylink.fr/v1/integrations \
  -H "Authorization: Bearer tl_il_tuo_token"

Risposte possibili

{
  "data": [
    {
      "id": "Int_6aac6c7feedf0",
      "platform": "youtube",
      "platform_name": "YouTube",
      "name": "Axton",
      "handle": "@axton_99",
      "profile_url": "https://www.youtube.com/@axton_99",
      "status": "active",
      "suspended": false,
      "used": false,
      "last_synced_at": "2026-10-17T12:10:33+02:00",
      "created_at": "2026-09-18T00:41:03+02:00"
    },
    {
      "id": "Int_6aa862f59643e",
      "platform": "shopify",
      "platform_name": "Shopify",
      "name": "POW'HER",
      "handle": "powher.shop",
      "profile_url": "https://powher.shop",
      "status": "active",
      "suspended": false,
      "used": true,
      "last_synced_at": "2026-10-17T12:10:54+02:00",
      "created_at": "2026-09-14T23:11:17+02:00"
    }
  ]
}

Leggere un'integrazione

GET/v1/integrations/{id}

L'account e le sue sources: per ciascuna, le sue variabili (fields, da citare nei modelli), il modello predefinito e ciò che chiede — none, rank (un rango, da 1 a 5) o required (un elemento preciso). Ambito Lettura.

curl https://api.tinylink.fr/v1/integrations/Int_6aac6c7feedf0 \
  -H "Authorization: Bearer tl_il_tuo_token"

Risposte possibili

{
  "id": "Int_6aac6c7feedf0",
  "platform": "youtube",
  "platform_name": "YouTube",
  "name": "Axton",
  "handle": "@axton_99",
  "profile_url": "https://www.youtube.com/@axton_99",
  "status": "active",
  "suspended": false,
  "used": false,
  "last_synced_at": "2026-10-17T12:10:33+02:00",
  "created_at": "2026-09-18T00:41:03+02:00",
  "sources": [
    {
      "id": "chaine",
      "label": "The channel",
      "element": "none",
      "fields": [
        {
          "name": "name",
          "label": "Name",
          "type": "text"
        },
        {
          "name": "handle",
          "label": "Handle",
          "type": "text"
        },
        {
          "name": "description",
          "label": "Description",
          "type": "text"
        },
        {
          "name": "subscribers",
          "label": "Subscribers",
          "type": "number"
        },
        {
          "name": "videos",
          "label": "Number of videos",
          "type": "number"
        },
        {
          "name": "views",
          "label": "Total views",
          "type": "number"
        },
        {
          "name": "avatar",
          "label": "Profile picture",
          "type": "image"
        },
        {
          "name": "url",
          "label": "Address",
          "type": "url"
        },
        {
          "name": "app_name",
          "label": "Service name",
          "type": "text"
        }
      ],
      "default_template": {
        "title": "{{name}}",
        "description": "{{subscribers}} Subscribers",
        "image": "{{avatar}}"
      }
    },
    {
      "id": "derniere_video",
      "label": "The latest video",
      "element": "rank",
      "fields": [
        {
          "name": "title",
          "label": "Title",
          "type": "text"
        },
        {
          "name": "description",
          "label": "Description",
          "type": "text"
        },
        {
          "name": "date",
          "label": "Publication date",
          "type": "date"
        },
        {
          "name": "channel",
          "label": "Channel name",
          "type": "text"
        },
        {
          "name": "views",
          "label": "Views",
          "type": "number"
        },
        {
          "name": "likes",
          "label": "Likes",
          "type": "number"
        },
        {
          "name": "comments",
          "label": "Comments",
          "type": "number"
        },
        {
          "name": "thumbnail",
          "label": "Thumbnail",
          "type": "image"
        },
        {
          "name": "url",
          "label": "Address",
          "type": "url"
        },
        {
          "name": "app_name",
          "label": "Service name",
          "type": "text"
        }
      ],
      "default_template": {
        "title": "{{title}}",
        "description": "{{channel}}",
        "image": "{{thumbnail}}"
      }
    }
  ]
}

Elencare gli elementi di una fonte

GET/v1/integrations/{id}/elements?source=

Per una fonte con elemento, gli elementi proposti dall'account (prodotti di un negozio, video di un canale…): il loro id è il valore di element. Un elenco vuoto non è un errore: alcuni negozi chiudono il catalogo, e l'indirizzo dell'elemento funziona comunque. Ambito Lettura.

curl "https://api.tinylink.fr/v1/integrations/Int_6aa862f59643e/elements?source=produit" \
  -H "Authorization: Bearer tl_il_tuo_token"

Risposte possibili

{
  "data": [
    {
      "id": "pack-explorher",
      "title": "Pack Explor'HER",
      "detail": "99,50 €",
      "image": "https://cdn.shopify.com/s/files/1/0966/8814/4724/files/Les_indispensables_le_Pack_Explor_HER_POW_HER.png?v=1762246179"
    },
    {
      "id": "pack-routine-skincare",
      "title": "Pack ROUTINE SKINCARE",
      "detail": "86,70 €",
      "image": "https://cdn.shopify.com/s/files/1/0966/8814/4724/files/Pack_Skincare_POWHER_Routine_anti-age_Clean_Exfoli_Lift.png?v=1763384467"
    }
  ]
}

Aggiungere un blocco di integrazione

POST/v1/pages/{id}/links

La rotta che aggiunge un link, con integration_id e source. Il blocco conta tra i link del piano. La risposta dà il contenuto attuale (title, url, image) e, in integration, i modelli. Ambito Scrittura.

  • integration_id: l'account collegato, obbligatorio
  • source: ciò che il blocco mostra (derniere_video, chaine, produit…), vedi sources dell'account
  • element: per una fonte con elemento ("element": "required"), l'identificativo o l'indirizzo dell'elemento; per una fonte per rango ("rank"), da 1 (il più recente, predefinito) a 5
  • title, description: modelli con le variabili della fonte, come {{title}}; in mancanza quelli di default_template. 100 e 200 caratteri al massimo
  • image_template: una variabile immagine della fonte ({{thumbnail}}), o null per nessuna immagine
  • format: LIST, BANNER o SQUARE; size, visible, position come per un link
  • Nessun url: l'indirizzo viene dalla fonte (il video, il prodotto…).
curl -X POST https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/links \
  -H "Authorization: Bearer tl_il_tuo_token" \
  -H "Content-Type: application/json" \
  -d '{
    "integration_id": "Int_6aac6c7feedf0",
    "source": "derniere_video",
    "format": "BANNER"
  }'

Risposte possibili

{
  "id": "L6ad34a155e711",
  "title": "TurboBringue 2026 (22:22, Axton, Roi Rufus, One-T)",
  "description": "Axton",
  "url": "https://www.youtube.com/watch?v=_t55GnPn3bo",
  "type": "integration",
  "format": "BANNER",
  "size": "FULL",
  "visible": true,
  "archived": false,
  "position": 1,
  "status": "active",
  "image": "https://content.tinylink.fr/page-image/integ_Int_6aac6c7feedf0_derniere_video_thumbnail.webp",
  "created_at": "2026-10-17T12:12:37+02:00",
  "integration": {
    "id": "Int_6aac6c7feedf0",
    "platform": "youtube",
    "source": "derniere_video",
    "element": null,
    "title_template": "{{title}}",
    "description_template": "{{channel}}",
    "image_template": "{{thumbnail}}",
    "image_source": "platform"
  }
}

Blocco di un elemento preciso

POST/v1/pages/{id}/links

Una fonte con elemento chiede element: viene letto subito sulla piattaforma, e rifiutato se introvabile. Qui un prodotto Shopify, con un titolo composto. Ambito Scrittura.

curl -X POST https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/links \
  -H "Authorization: Bearer tl_il_tuo_token" \
  -H "Content-Type: application/json" \
  -d '{
    "integration_id": "Int_6aa862f59643e",
    "source": "produit",
    "element": "pack-explorher",
    "title": "{{title}} — {{price}}",
    "description": ""
  }'

Risposte possibili

{
  "id": "L6ad34a1de7ebe",
  "title": "Pack Explor'HER — 99,50 €",
  "description": "",
  "url": "https://powher.shop/products/pack-explorher",
  "type": "integration",
  "format": "LIST",
  "size": "FULL",
  "visible": true,
  "archived": false,
  "position": 2,
  "status": "active",
  "image": "https://content.tinylink.fr/page-image/integ_Int_6aa862f59643e_produit-pack-explorher_thumbnail.webp",
  "created_at": "2026-10-17T12:12:45+02:00",
  "integration": {
    "id": "Int_6aa862f59643e",
    "platform": "shopify",
    "source": "produit",
    "element": "pack-explorher",
    "title_template": "{{title}} — {{price}}",
    "description_template": "",
    "image_template": "{{thumbnail}}",
    "image_source": "platform"
  }
}

Modificare un blocco di integrazione

PATCH/v1/pages/{id}/links/{link}

title, description, image_template, element, più i campi di qualsiasi link (format, size, visible, archived, position, image). L'account e la fonte non cambiano: per mostrare altro, aggiungi un blocco. Un'image inviata sostituisce quella della piattaforma; toglierla toglie anche il modello d'immagine. Ambito Scrittura.

curl -X PATCH https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/links/L6ad34a1de7ebe \
  -H "Authorization: Bearer tl_il_tuo_token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "{{title}}",
    "description": "{{price}}",
    "format": "SQUARE"
  }'

Risposte possibili

{
  "id": "L6ad34a1de7ebe",
  "title": "Pack Explor'HER",
  "description": "99,50 €",
  "url": "https://powher.shop/products/pack-explorher",
  "type": "integration",
  "format": "SQUARE",
  "size": "FULL",
  "visible": true,
  "archived": false,
  "position": 2,
  "status": "active",
  "image": "https://content.tinylink.fr/page-image/integ_Int_6aa862f59643e_produit-pack-explorher_thumbnail.webp",
  "created_at": "2026-10-17T12:12:45+02:00",
  "integration": {
    "id": "Int_6aa862f59643e",
    "platform": "shopify",
    "source": "produit",
    "element": "pack-explorher",
    "title_template": "{{title}}",
    "description_template": "{{price}}",
    "image_template": "{{thumbnail}}",
    "image_source": "platform"
  }
}

Non trovi la tua risposta?

Scrivici dalla scheda Supporto del tuo spazio, rispondiamo entro 24 ore lavorative.

Contatta il supporto