shor10shor10API v1Get a key
QUICK START

One POST makes a link.

Send a URL, optionally a name and a timer, and get a shortcode back with its departure time. Everything else in the API is reading or ending what you made.

POST/v1/links
REQUESTshell · copy
curl -X POST https://shor10.co/api/links \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"originalUrl":"https://example.com/very/long/path","alias":"spring-sale","ttl":"7d"}'
BODY
urlrequiredAny absolute http(s) URL.
aliasoptionala–z, 0–9 and dashes, up to 12. Random if omitted.
ttloptional1h · 24h · 7d · 30d · null for never.
201 CREATED
{
  "shortcode": "spring-sale",
  "url": "https://shor10.co/spring-sale",
  "expiresAt": "2026-08-03T09:00:00Z",
  "state": "live"
}

Deleting a link

Same as the dashboard delete: the shortcode stops resolving immediately. History is archived; only the owning account (session or Bearer key) can delete.

DELETE/api/links/:id→ 204, empty body
curl -X DELETE https://shor10.co/api/links/<id> \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxx"

Status codes

201CreatedThe link exists and is live.
302FoundWhat a visitor gets on shor10.co/<code>.
409ConflictThat alias is taken. Body suggests a free one.
404Not foundNo link with that shortcode, ever.
410GoneIt existed and its time is up. Response carries expiredAt.
429Too many requestsOver your daily calls. Retry-After in seconds.

Mint a key in Settings

Create a key under Settings → API keys, then send Authorization: Bearer sk_live_… on GET/POST /api/links and DELETE /api/links/:id.

Open API keys