API reference

Bring link management into your own workflows. Explore endpoints, review parameters, and use request and response examples to build your integration.

Complete operation reference

The OpenAPI specification includes tags, UTM templates, custom-domain management and provisioning, folder permissions, per-link analytics, and public help in addition to the examples below.

MethodEndpointScope
GET/linkslinks:read
POST/linkslinks:write
GET/links/{id}links:read
PUT/links/{id}links:write
DELETE/links/{id}links:write
GET/pagespages:read
POST/pagespages:write
GET/pages/{id}pages:read
PUT/pages/{id}pages:write
DELETE/pages/{id}pages:write
POST/pages/{id}/linkspages:write
PUT/pages/{id}/links/{linkId}pages:write
DELETE/pages/{id}/links/{linkId}pages:write
POST/pages/{id}/pluginspages:write
PUT/pages/{id}/plugins/{pluginId}pages:write
DELETE/pages/{id}/plugins/{pluginId}pages:write
POST/pages/{id}/reorderpages:write
GET/analyticsanalytics:read
GET/qrcodesqrcodes:read
POST/qrcodesqrcodes:write
GET/qrcodes/{id}qrcodes:read
PUT/qrcodes/{id}qrcodes:write
DELETE/qrcodes/{id}qrcodes:write
GET/foldersfolders:read
POST/foldersfolders:write
GET/tagstags:read
POST/tagstags:write
PUT/tags/{id}tags:write
DELETE/tags/{id}tags:write
GET/utm-templatesutm:read
POST/utm-templatesutm:write
PUT/utm-templates/{id}utm:write
DELETE/utm-templates/{id}utm:write
PUT/folders/{id}folders:write
DELETE/folders/{id}folders:write
GET/folders/{id}/permissionsfolders:read
GET/folders/{id}/permissions/mefolders:read
PUT/folders/{id}/permissions/{userId}folders:write
GET/domainsdomains:read
POST/domainsdomains:write
GET/domains/{id}domains:read
PUT/domains/{id}domains:write
DELETE/domains/{id}domains:write
POST/domains/{id}/verifydomains:write
POST/domains/{id}/retry-ssldomains:write
GET/links/{id}/clickslinks:read
GET/links/{id}/analyticslinks:read
POST/links/fetch-metalinks:write
GET/analytics/optionsanalytics:read
GET/help/searchPublic documentation
GET/help/{slug}Public documentation

Introduction

The Goose.re REST API organizes endpoints by resource, including links, bio pages, QR codes, and folders. Send request bodies as JSON with Content-Type: application/json, and use the JSON responses and HTTP status codes to handle results. Form-encoded bodies are also supported for POST requests; use JSON for PUT requests. Each endpoint below lists its parameters and example data; an asterisk marks a required parameter. Response examples show representative fields; additional fields may be returned. The OpenAPI specification lists further optional fields.

Base URL

https://goose.re/api/v1

Authentication

Team owners and admins can create and manage API keys in Team Settings → API Keys. Copy the full key when it is created; it is shown only once. Keys use the prefix goose_ followed by 48 hexadecimal characters.

Set GOOSE_API_KEY to your full key, then include it in the Authorization header as a bearer token on each request. The key selects its workspace; X-Team-Id does not switch the workspace for an API key. Grant the required read or write scope for each resource. Write scopes do not include read access. Revoked, expired, or IP-restricted keys fail authentication.

Example request

curl https://goose.re/api/v1/links \
  -H "Authorization: Bearer ${GOOSE_API_KEY}"

Responses & errors

Successful responses contain success: true, message, and data. Deletions and reordering return data: null. Link lists use data.links and data.total; QR code lists use data.qrcodes and data.total. Page and folder lists return arrays in data.

Use limit (default 50, maximum 100) and offset (default 0) for link and QR code lists. Page and folder lists are not paginated. Database timestamps generally use YYYY-MM-DD HH:MM:SS, without a timezone offset; do not assume ISO 8601 or a trailing Z.

Errors contain success: false and message, with an optional errors object mapping field names to arrays of messages. HTTP 200 indicates success; 201 indicates creation; 400 indicates invalid input; 401 indicates failed authentication; 403 indicates missing scope or permissions; 404 indicates a missing resource; and 422 indicates validation or business-rule failure.

If a request receives HTTP 429, back off before retrying and honor any retry or rate-limit headers provided. No fixed requests-per-minute quota is specified here.

Bio pages

GET /api/v1/pages

Retrieve bio pages in the authenticated team workspace. Filter by folder and choose a sort order to organize the results.

Required API key scope: pages:read

Parameters

Parameter Location Type Description
folder_id query string (UUID) Filter by folder ID. Pass an empty string to return pages without a folder.
sort_by query string Sort field: `created_at`, `title`, `slug`, or `total_clicks`.
sort_order query string Sort direction: `asc` or `desc`.
POST /api/v1/pages

Create a bio page in your team workspace with a public URL, page title, and optional brand styling.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
slug * body string The unique slug for the public page URL.
title * body string The title displayed at the top of the bio page.
description body string A brief description or subtitle for the bio page.
theme body string Theme ID: default, executive, editorial, onyx, sunset, glassmorphism, terminal, or forest. Unknown values fall back to default.
theme_accent_1 body string (Hex Color) The primary brand color as a hexadecimal string, such as `#ff0055`.
theme_accent_2 body string (Hex Color) The secondary brand or accent color as a hexadecimal string.
domain_id body string (UUID) The ID of the custom domain configuration.
folder_id body string (UUID) The ID of the folder for the bio page.
GET /api/v1/pages/{id}

Retrieve a bio page and its layout, including link buttons and the configuration of its active widgets.

Required API key scope: pages:read

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique ID of the bio page.
PUT /api/v1/pages/{id}

Update the content and appearance of a bio page, including its title, description, theme, images, and custom CSS.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique ID of the bio page to update.
slug body string The new URL slug.
title body string The updated page title.
description body string The subtitle text for the bio page.
profile_image body string (URL) The URL of the profile image.
background_image body string (URL) The URL of the background image.
favicon body string (URL) The URL of the custom favicon.
theme body string The active preset theme.
theme_accent_1 body string (Hex) The primary brand color for the theme.
theme_accent_2 body string (Hex) The secondary brand color for the theme.
custom_css body string Custom CSS overrides added to the bio page template.
folder_id body string (UUID) or null Folder ID, or null to remove the folder.
domain_id body string (UUID) or null Custom domain ID, or null to remove the custom domain.
DELETE /api/v1/pages/{id}

Permanently remove a bio page, including its link buttons and widgets. Its public page will no longer be available.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique ID of the bio page to delete.
POST /api/v1/pages/{id}/links

Add a link button to a bio page with a label and destination URL. Optionally customize its icon, colors, animation, and position.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
label * body string The text displayed on the link button.
url * body string (URL) The destination URL for the link button.
icon body string The Font Awesome icon class.
color body string (Hex) or null Use #RRGGBB, or null/empty string to clear the override. Invalid formats return HTTP 400.
bg_color body string (Hex) or null Use #RRGGBB, or null/empty string to clear the override. Invalid formats return HTTP 400.
animation body string The entrance or loop animation, such as `bounce` or `none`.
sort_order body integer The position of the link in the page layout.
PUT /api/v1/pages/{id}/links/{linkId}

Update an existing bio page link button, including its label, destination, icon, and appearance.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
linkId * path string (Path Parameter) The ID of the link element.
label body string The updated button label.
url body string (URL) The updated destination URL.
icon body string The Font Awesome icon name.
color body string (Hex) or null Use #RRGGBB, or null/empty string to clear the override. Invalid formats return HTTP 400.
bg_color body string (Hex) or null Use #RRGGBB, or null/empty string to clear the override. Invalid formats return HTTP 400.
animation body string The hover or attention animation.
sort_order body integer Position in the page layout.
DELETE /api/v1/pages/{id}/links/{linkId}

Remove a specific link button from a bio page while keeping the rest of the page in place.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
linkId * path string (Path Parameter) The ID of the link to delete.
POST /api/v1/pages/{id}/plugins

Add a content widget to a bio page. Choose a supported widget type and supply its configuration; the widget uses the page theme.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
type * body string One of `spotlight`, `socials`, `text_block`, `youtube`, `gallery`, `countdown`, or `faq`.
config body object Configuration object for the widget type. On update this replaces the previous configuration; omitted configuration is retained. Invalid configurations return HTTP 422.
sort_order body integer The position of the widget in the page layout.
PUT /api/v1/pages/{id}/plugins/{pluginId}

Replace the configuration of an existing bio page widget and optionally update its position in the layout.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
pluginId * path string (Path Parameter) The ID of the widget to update.
config body object Configuration object for the widget type. On update this replaces the previous configuration; omitted configuration is retained. Invalid configurations return HTTP 422.
sort_order body integer The position of the widget in the page layout.
DELETE /api/v1/pages/{id}/plugins/{pluginId}

Remove a specific widget from a bio page while keeping its other content in place.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
pluginId * path string (Path Parameter) The ID of the widget to delete.
POST /api/v1/pages/{id}/reorder

Set the display order of link buttons and widgets in one request by supplying their IDs, types, and positions.

Required API key scope: pages:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The ID of the bio page.
items body array of objects The page items to reorder. Each item must include `id` (UUID), `type` (`link` or `plugin`), and `sort_order` (integer).
Default: []

Analytics

GET /api/v1/analytics

Retrieve aggregated click analytics for the authenticated team workspace to review traffic trends and audience breakdowns.

Required API key scope: analytics:read

Parameters

Parameter Location Type Description
period query string 24h, 7d, 30d, 90d, or all. The 24h period groups by hour; other periods group by day.
Default: 30d
link_id query string (UUID) Filter clicks for one short link.
folder_id query string (UUID) Filter by folder.
tag_id query string (UUID) Filter links by tag.
builder query string (JSON array) URL-encoded JSON array of filters with field, operator (is or is_not), and values. Fields: link, page, folder, language, subnet, device, browser, os, tag.

QR codes

GET /api/v1/qrcodes

Retrieve QR codes in the authenticated team workspace. Use search, folder filters, sorting, and pagination to find the codes you need.

Required API key scope: qrcodes:read

Parameters

Parameter Location Type Description
search query string Filter QR codes by name, short code, or destination URL.
folder_id query string (UUID) Filter by folder ID; an empty string applies no folder filter.
sort_by query string Sort field: created_at, name, or total_clicks. The legacy short_url value also sorts by name.
sort_order query string Sort direction: `asc` or `desc`.
limit query integer Number of results to return, from 1 to 100.
Default: 50
offset query integer The number of results to skip before returning this page.
Default: 0
POST /api/v1/qrcodes

Create a QR code. Supply at least one of link_id or url; link_id takes precedence. A URL creates a short link automatically. The folder is inherited from the linked short link when available, or defaults to a QR Codes folder for automatically created links.

Required API key scope: qrcodes:write

Parameters

Parameter Location Type Description
name * body string A descriptive name to identify the QR code in your workspace.
design_config * body object / JSON string QR Code Styling options stored as an object or JSON string, such as dotsOptions and backgroundOptions. Rendering the QR image is handled by the client.
url body string The destination URL. If provided when link_id is empty, a new short link is created automatically.
link_id body string (UUID) The ID of an existing short link to connect to the QR code.
folder_id body string (UUID) The ID of the folder for the QR code.
GET /api/v1/qrcodes/{id}

Retrieve the design settings, connected short link, and folder details of a specific QR code by its ID.

Required API key scope: qrcodes:read

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique identifier of the QR code.
PUT /api/v1/qrcodes/{id}

Update an existing QR code by changing its name, design settings, connected short link, or folder.

Required API key scope: qrcodes:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique identifier of the QR code to update.
name body string The updated name of the QR code.
design_config body object / JSON string QR Code Styling options stored as an object or JSON string, such as dotsOptions and backgroundOptions. Rendering the QR image is handled by the client.
link_id body string (UUID) The ID of the short link to connect to the QR code.
folder_id body string (UUID) The ID of the folder for the QR code.
DELETE /api/v1/qrcodes/{id}

Permanently delete the QR code record. Its associated short link remains available.

Required API key scope: qrcodes:write

Parameters

Parameter Location Type Description
id * path string (Path Parameter) The unique identifier of the QR code to delete.

Folders

GET /api/v1/folders

Retrieve the folders in the authenticated team workspace to look up the groups used to organize campaign content.

Required API key scope: folders:read

This endpoint does not require a request body or query parameters.

POST /api/v1/folders

Create a folder in the authenticated team workspace. The key creator must be a team owner or admin.

Required API key scope: folders:write

Parameters

Parameter Location Type Description
name * body string Folder name, 1–50 characters.
color body string Folder color.
Default: #3B82F6
icon body string Font Awesome icon class.
Default: fa-folder