Skip to main content
An element is one row on a link page. Most are links, but headers and contact rows are elements too.

Element types

TypeWhat it is
linkA titled link to a URL
headerA section heading, with no destination
socialmediaA social platform icon link
telephoneA phone number
emailAn email address
contactcardA downloadable contact card

List a profile’s elements

curl https://snapto.link/api/v1/profiles/PROFILE_UUID/elements \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Requires elements:read. Returns elements in display order.

Create an element

curl -X POST https://snapto.link/api/v1/elements \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "PROFILE_UUID",
    "type": "link",
    "name": "My new video",
    "content": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "enabled_for_display": true,
    "enabled_for_download": false
  }'
Requires elements:write.
FieldRequiredNotes
profile_idYesThe profile the element belongs to.
typeYesOne of the types above.
enabled_for_displayYesWhether the element shows on the public page.
enabled_for_downloadYesWhether the element is included in the contact card download.
nameNoThe label. Max 255.
contentNoThe destination. Max 255.
descriptionNoOptional description.
orderNoPosition within its type. Omit it and the element is appended to the end.
Creating a link counts against your plan’s link limit.

Update an element

curl -X PUT https://snapto.link/api/v1/elements/ELEMENT_UUID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "link",
    "name": "My new video (updated)",
    "content": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "enabled_for_display": true,
    "enabled_for_download": false
  }'
Requires elements:write.
PUT is a full representation, not a patch. type, enabled_for_display, and enabled_for_download are required on every update. If you omit them, the request fails validation. Fetch the element first and resend its current values for anything you are not changing.

Reorder elements

curl -X POST https://snapto.link/api/v1/elements/reorder \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "PROFILE_UUID",
    "elements": [
      { "id": "ELEMENT_UUID_1" },
      { "id": "ELEMENT_UUID_2" },
      { "id": "ELEMENT_UUID_3" }
    ]
  }'
Requires elements:write. The array order becomes the display order. Every id must belong to the given profile.

Delete an element

curl -X DELETE https://snapto.link/api/v1/elements/ELEMENT_UUID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Requires elements:write. This is irreversible.
Last modified on July 9, 2026