---
title: "Resolve a link by slug"
method: GET
path: "/links/resolve/{slug}"
tags: ["Links"]
---

# Resolve a link by slug

`GET /links/resolve/{slug}`

## Request

- Base URL: `https://api.warplink.app/v1`
- URL: `https://api.warplink.app/v1/links/resolve/{slug}`
- Auth: HTTP bearer

Looks up a link by its slug and optional domain. Returns the link's deep link configuration for SDK use. A resolve that returns link data to the WarpLink SDK on a device records one click with the source `app_open`, so an in-app open appears in analytics and counts toward your plan's click allowance. Nothing else records a click: not a refusal, not a known bot, and not a server script or CI job calling this endpoint with a standard API key, which still receives the link data. `destination_url` and the platform URLs are normalized exactly the way the redirect path normalizes them, so a bare origin comes back with its trailing slash, and `custom_params` includes the query parameters already on the stored destination. A resolve that carries the same `X-WarpLink-Tap-Id` as an earlier one records one click, not two, so a client may safely retry a request whose response it never received. A slug that is the old address of a moved link resolves to the moved link: the response carries the link's current domain and slug, and the old address keeps working for as long as the link exists.

## Path parameters

- `slug` string, required

## Query parameters

- `domain` string
- `params` string

## Headers

- `X-WarpLink-Tap-Id` string, uuid

## Response `200`

Resolved link

- object
  - `id` string, uuid
  - `slug` string
  - `domain` string
  - `destination_url` string, uri
  - `ios_url` string, uri, nullable
  - `ios_fallback_url` string, uri, nullable
  - `android_url` string, uri, nullable
  - `android_fallback_url` string, uri, nullable
  - `custom_params` object
  - `created_at` string, date-time

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: The link is password protected (`PASSWORD_REQUIRED`). No destination or platform URLs are returned. Open the short URL in a browser to enter the password.
- `404`: Not found. A link on a suspended custom domain also returns this, so that a suspended domain cannot be told apart from a missing link.
- `410`: Link has expired

---

[API](https://skmtc.dev/warplink/apis/warplink-api.md) · [All operations](https://skmtc.dev/warplink/apis/warplink-api/llms.txt) · [OpenAPI document](https://skmtc.dev/warplink/apis/warplink-api/revisions/2a90ae8c44e8?raw)
