---
title: "Resolve Share Link"
method: POST
path: "/share_links/resolve"
tags: ["share-links"]
---

# Resolve Share Link

`POST /share_links/resolve`

Resolve a share URL to its canvas_id and share metadata.

Distinguishes ``share_link_revoked`` (the share row exists but is
disabled) from ``share_link_not_found`` (no live row — includes
never-existed, soft-deleted, and deleted-canvas cases; we don't
leak which). Share tokens are shareable by design — surfacing
revocation state for active rows is intentional.

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Request body

- ResolveShareLinkRequest
  - `url` string, required — Share URL or bare share token (e.g. ``https://moda.app/s/<token>`` or ``<token>``).

## Response `200`

Successful Response

- ResolveShareLinkResponse
  - `canvas_id` string, required — Prefixed canvas ID the share link points to.
  - `canvas_name` string, required — Display name of the shared canvas.
  - `permission` 'view' | 'view_remix', required — Permission level granted by the share link.
  - `share_token` string, required — The share token extracted from the URL (opaque; treat as the identifier).

## Other responses

- `401` — Authentication required.
- `403` — Permission denied for this scope.
- `404` — Resource not found.
- `409` — Conflict (idempotency / resource state).
- `422` — Request validation failed.
- `429` — Rate limit exceeded.
- `500` — Internal error.

---

[API](https://skmtc.dev/moda/apis/moda-public-api.md) · [All operations](https://skmtc.dev/moda/apis/moda-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/moda/moda-public-api/revisions/b34cb4cca59e/schema)
