---
title: 'API a MCP server pro vývojáře · skrat.im'
description: 'REST API zkracovače skrat.im s OpenAPI popisem, textový endpoint pro curl, MCP server pro AI agenty a bookmarklet. Bez klíče s limitem, s klíčem naplno.'
url: https://skrat.im/cs/vyvojari/
lang: cs
---

# API a MCP server

Všechno, co umí formulář, umí i API. Bez klíče s limitem na IP adresu, s klíčem z účtu naplno a odkazy se ukládají do účtu.

## Rychlý start

Jeden POST s JSON tělem. Odpověď je objekt odkazu; u anonymního odkazu obsahuje i edit_token, který si ulož, pokud chceš odkaz později upravit nebo smazat.

```sh
curl -X POST https://skrat.im/api/v1/links \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer skrat_…" \
  -d '{"url": "https://example.com/dlha/adresa", "alias": "moja-akcia", "domain": "krat.im"}'
```

```json
{
  "id": "5d1c…",
  "domain": "krat.im",
  "slug": "moja-akcia",
  "short_url": "https://krat.im/moja-akcia",
  "url": "https://example.com/dlha/adresa",
  "status": "active",
  "clicks": 0,
  "preview_url": "https://krat.im/moja-akcia+",
  "qr_png_url": "https://krat.im/moja-akcia.png",
  "stats_url": "https://skrat.im/api/v1/links/5d1c…/stats"
}
```

```sh
curl -X PATCH https://skrat.im/api/v1/links/5d1c… \
  -H "Content-Type: application/json" -H "X-Edit-Token: …" \
  -d '{"url": "https://example.com/nova/adresa"}'
```

## Autentizace a limity

Bez klíče: 60 odkazů za hodinu a 300 za den na IP adresu. S API klíčem (hlavička Authorization: Bearer skrat_…): 1000 za hodinu, odkazy patří účtu. Klíč vytvoříš v nastavení účtu. Při překročení limitu přijde 429 s hlavičkou Retry-After.

## Endpointy

| Metoda | Cesta | Popis |
|---|---|---|
| `POST` | `/api/v1/links` | Vytvoří odkaz. Tělo: url, alias?, domain?, title?, expires_in_days?, expires_at?, max_clicks?, password?, public_stats?, utm_* |
| `GET` | `/api/v1/links` | Odkazy účtu (vyžaduje klíč). |
| `GET` | `/api/v1/links/{id}` | Detail odkazu (klíč vlastníka nebo X-Edit-Token). |
| `PATCH` | `/api/v1/links/{id}` | Úprava: url, title, expires_at \| expires_in_days, max_clicks, password ("" zruší), public_stats. |
| `DELETE` | `/api/v1/links/{id}` | Smazání odkazu. |
| `GET` | `/api/v1/links/{id}/stats` | Statistiky (veřejné, dokud je vlastník neskryje). |
| `GET` | `/api/v1/check?slug=&domain=` | Dostupnost aliasu, včetně druhé domény. |
| `POST` | `/api/v1/bulk` | Hromadně: urls (pole nebo text po řádcích), max. 20 bez klíče, 200 s klíčem. |
| `GET` | `/api/shorten?url=` | Textový endpoint: vrátí jen krátký odkaz. |
| `GET` | `/{alias}+` | Náhled odkazu (HTML). |
| `GET` | `/{alias}.json` | Veřejné info o odkazu (JSON). |
| `GET` | `/{alias}.png | .svg` | QR kód (size, fg, bg, margin). |

## Chyby

Chyba má vždy tvar { "error": { "code", "message" } }. Zpráva je v jazyce podle ?lang= nebo Accept-Language. Kódy: invalid_url, unsupported_scheme, private_host, self_reference, unsafe_url, slug_invalid, slug_reserved, slug_taken, domain_invalid, rate_limited, not_found, unauthorized, forbidden, too_many.

## MCP server pro AI agenty

Endpoint /mcp mluví Model Context Protocol přes Streamable HTTP (JSON-RPC 2.0, bezstavově). Nástroje: shorten_url, check_alias, get_link_info, qr_code. Bez klíče platí limit na IP; s klíčem v hlavičce Authorization se odkazy ukládají do účtu.

Claude Code:

```sh
claude mcp add --transport http skrat https://skrat.im/mcp
```

Konfigurace (Claude Desktop, Cursor a podobné):

```json
{
  "mcpServers": {
    "skrat": {
      "type": "http",
      "url": "https://skrat.im/mcp",
      "headers": { "Authorization": "Bearer skrat_…" }
    }
  }
}
```

## Další zdroje

- OpenAPI 3.1 popis (openapi.json): https://skrat.im/openapi.json
- llms.txt pro AI klienty: https://skrat.im/llms.txt
- MCP: https://skrat.im/mcp

Podmínky používání API jsou stejné jako pro web.
