Aller au contenu

Page appearance

The colours, fonts, layout, logo and banner of a page: the settings of its Appearance tab. A page has its own settings, or follows a page style: it then takes the style's appearance, banner included. Its own settings are not lost: once detached from the style, the page gets them back.

Read the appearance

GET/v1/pages/{id}/style

The settings applied to the page (the style's when it follows one), the style it follows (null otherwise), the banner in its two formats — classic (1,200 × 630) and wide (1,200 × 400) — and the logo. Read scope.

curl https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/style \
  -H "Authorization: Bearer tl_your_token"

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": null,
  "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,
  "logo": null
}

Change the appearance

PATCH/v1/pages/{id}/style

In settings, send only the settings to change; the others keep their value. A refused value is reported, never silently replaced. Refused when the page follows a style: detach it first. Write scope.

  • header_layout — classic (coloured header) or banner (banner on top); logo_size — small, medium or large
  • header_text_size, button_text_size, section_text_size — small, medium or large
  • header_color, header_title_color, header_description_color, header_icon_color — header colours
  • button_color, button_title_color, button_description_color — link colours; button_radius — circular, rounded or square
  • background_color — page background; section_title_color, section_description_color — section titles
  • header_title_font, header_description_font, button_title_font, button_description_font, section_title_font, section_description_font — ids from GET /v1/fonts
  • Colours in hexadecimal: #1E90FF or #19F.
curl -X PATCH https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/style \
  -H "Authorization: Bearer tl_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "background_color": "#F3EADF",
      "button_color": "#1E90FF",
      "button_title_color": "#FFFFFF",
      "button_radius": "circular",
      "header_title_font": "poppinsblack"
    }
  }'

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": null,
  "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": "poppinsblack",
    "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": "#F3EADF",
    "section_text_size": "medium",
    "section_title_color": "#212121",
    "section_title_font": "robotobold",
    "section_description_color": "#888888",
    "section_description_font": "robotoreg"
  },
  "banner": null,
  "logo": null
}

Apply or remove a style

PATCH/v1/pages/{id}/style

style_id links the page to a style of the environment or to a provided style (default, light, dark…, see GET /v1/page-styles). "style_id": null detaches it: it gets its own settings back; add "keep_appearance": true to keep the style's appearance instead, copied into its settings. Write scope.

curl -X PATCH https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/style \
  -H "Authorization: Bearer tl_your_token" \
  -H "Content-Type: application/json" \
  -d '{"style_id":"PST6ad34a11d00877"}'

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": {
    "id": "PST6ad34a11d00877",
    "name": "Charte 2026",
    "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,
  "logo": "https://content.tinylink.fr/page-logo/logo_6ad34a0fd937d.webp"
}

Change the logo

PUT/v1/pages/{id}/logo

POST/v1/pages/{id}/logo

image: the public address of an image, or a base64 data URI (data:image/png;base64,…). To upload a file, use POST as multipart/form-data with an image field. JPEG, PNG or WebP, 5 MB and 6,000 px per side at most. The logo is cropped to a 350 px square; crop.square ({"x", "y", "w", "h"}, in pixels of the original image) picks the area, otherwise it is centred. The response is the page appearance. Write scope.

curl -X PUT https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/logo \
  -H "Authorization: Bearer tl_your_token" \
  -H "Content-Type: application/json" \
  -d '{"image":"https://exemple.fr/logo.png"}'

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": null,
  "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": "poppinsblack",
    "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": "#F3EADF",
    "section_text_size": "medium",
    "section_title_color": "#212121",
    "section_title_font": "robotobold",
    "section_description_color": "#888888",
    "section_description_font": "robotoreg"
  },
  "banner": null,
  "logo": "https://content.tinylink.fr/page-logo/logo_6ad34a0fd937d.webp"
}

Change the banner

PUT/v1/pages/{id}/banner

POST/v1/pages/{id}/banner

image: the public address of an image, or a base64 data URI (data:image/png;base64,…). To upload a file, use POST as multipart/form-data with an image field. JPEG, PNG or WebP, 5 MB and 6,000 px per side at most. Two formats are produced, each with its own crop: crop.classic (1,200 × 630) and crop.wide (1,200 × 400, banner layout). Refused when the page follows a style: the banner is then the style's. Depending on the plan. Write scope.

curl -X PUT https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/banner \
  -H "Authorization: Bearer tl_your_token" \
  -H "Content-Type: application/json" \
  -d '{"image":"https://example.com/banner.jpg"}'

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": null,
  "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": "poppinsblack",
    "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": "#F3EADF",
    "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_6ad34a102be89.webp",
    "wide": "https://content.tinylink.fr/page-banner/wide_banner_6ad34a102be89.webp"
  },
  "logo": "https://content.tinylink.fr/page-logo/logo_6ad34a0fd937d.webp"
}

Remove the logo or the banner

DELETE/v1/pages/{id}/logo

DELETE/v1/pages/{id}/banner

Deletes the image; the response is the page appearance. Nothing else is deleted: the Write scope is enough.

curl -X DELETE https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/logo \
  -H "Authorization: Bearer tl_your_token"

Possible responses

{
  "page_id": "P6ad34a0e4fef09",
  "style": null,
  "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,
  "logo": null
}

List the fonts

GET/v1/fonts

The fonts on offer, in alphabetical order: their id is the value of the …_font settings. Read scope.

curl https://api.tinylink.fr/v1/fonts \
  -H "Authorization: Bearer tl_your_token"

Possible responses

{
  "data": [
    {
      "id": "abrilfat",
      "name": "Abril Fatface"
    },
    {
      "id": "bebasneue",
      "name": "Bebas Neue"
    },
    {
      "id": "bungee",
      "name": "Bungee"
    },
    {
      "id": "caveatreg",
      "name": "Caveat Regular"
    }
  ]
}

Still stuck?

Write to us from the Support tab of your workspace, we answer within one business day.

Contact support