Documentation Index
Fetch the complete documentation index at: https://docs.linkutm.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The metadata API fetches a target URL server-side and extracts its Open Graph and standard meta tags - title, description, image, favicon, and site name. It is useful for building link previews when a user pastes a destination URL. Endpoints live under/api/v1/metadata. There are two: an authenticated endpoint and a public one. Both return the same response shape and run the same extraction logic. Neither uses the x-workspace-id header.
Authenticated endpoint
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes |
Query parameters
The URL to fetch metadata from. Must be a valid absolute URL (parseable by the standard
URL constructor).Example request
Public endpoint
Query parameters
The URL to fetch metadata from. Must be a valid absolute URL.
Example request
Response
Both endpoints return the same object.| Field | Type | Notes |
|---|---|---|
url | string | The URL that was requested, echoed back. |
title | string | null | Page title, from the <title> tag, falling back to og:title then twitter:title. |
ogTitle | string | null | Open Graph title, from og:title falling back to twitter:title. |
description | string | null | From og:description, falling back to twitter:description then the standard description meta tag. |
image | string | null | Preview image, from og:image or a twitter:image tag. Relative URLs are resolved to absolute. |
favicon | string | null | Favicon URL, resolved to absolute. Defaults to <origin>/favicon.ico when no icon link is found. |
siteName | string | null | From og:site_name, falling back to the hostname with a leading www. stripped. |
Example response
Behavior notes
- Results are cached server-side for 5 minutes per URL. Repeated requests for the same URL within that window return the cached metadata.
- The fetch uses a 10 second timeout and follows redirects.
- If the target URL cannot be reached, returns a non-OK status, or the fetch errors, the endpoint still responds
200with an empty-metadata object: every field isnullexcepturl(echoed) andsiteName(derived from the hostname when possible). The endpoint does not surface upstream failures as errors. - A malformed
urlquery value is rejected up front with400.
Errors
| Code | When |
|---|---|
400 | The url query parameter is missing or is not a valid URL |
401 | Missing or invalid JWT (authenticated endpoint only) |
429 | Rate limit exceeded (100 requests/minute per IP) |