snipvio.

API reference

Create and list short links programmatically with a Snipvio API key. Premium feature.

3 min read

The Snipvio API lets you create links from your own scripts, tools, and automations.

Authentication

Generate a key at Dashboard → API Keys. The full key is shown once at creation and never again, because only a hash of it is stored. Copy it somewhere safe immediately.

Send it as a bearer token:

Authorization: Bearer snip_your_key_here

Revoke a key at any time from the same page. Revocation takes effect instantly.

Create a link

POST /api/v1/links
Content-Type: application/json
Authorization: Bearer snip_your_key_here

{ "url": "https://example.com/a/very/long/link" }

Response:

{
  "code": "x7Kp2Qa",
  "shortUrl": "https://snipvio.com/x7Kp2Qa",
  "destination": "https://example.com/a/very/long/link"
}

List your links

GET /api/v1/links
Authorization: Bearer snip_your_key_here

Returns your 100 most recent links, newest first. There is no pagination, so links beyond the most recent 100 are not reachable through the API:

{
  "links": [
    {
      "code": "x7Kp2Qa",
      "destination": "https://example.com/page",
      "shortUrl": "https://snipvio.com/x7Kp2Qa",
      "createdAt": "2026-08-07T12:59:13.000Z"
    }
  ]
}

Example: curl

curl -X POST https://snipvio.com/api/v1/links \
  -H "Authorization: Bearer snip_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/page"}'

Example: JavaScript

const res = await fetch("https://snipvio.com/api/v1/links", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SNIPVIO_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://example.com/page" }),
});
const { shortUrl } = await res.json();

Example: Python

import os, requests

r = requests.post(
    "https://snipvio.com/api/v1/links",
    headers={"Authorization": f"Bearer {os.environ['SNIPVIO_KEY']}"},
    json={"url": "https://example.com/page"},
)
print(r.json()["shortUrl"])

Status codes

Code Meaning
200 Success
400 The URL is missing or not a valid http/https address
401 The API key is missing, malformed, or revoked
403 Monthly link limit reached. Only possible on the free plan, so you will see this if a paid plan has lapsed
429 Too many requests. See rate limits below

Error responses

Errors return JSON with a single error field. A 401 returns an empty body.

// 400
{ "error": "Only http and https URLs can be shortened." }
// 403
{ "error": "Monthly link limit reached." }
// 429
{ "error": "Too many requests. Please wait a moment and try again." }

A 401 has no body. Check the status code rather than parsing it.

Rate limits

Creating links is limited to 120 requests per minute per account. Going over returns 429 with a Retry-After header giving the seconds to wait.

What the API does not do

These two endpoints are the whole API. There is no update or delete endpoint, and listing does not paginate. To change a destination or remove a link, use the dashboard.

Notes

  • Links created through the API appear in your dashboard like any other and count toward your monthly allowance.
  • Keep keys server-side. A key in browser JavaScript can be read and used by anyone.
  • API access requires a Premium plan or higher.

Frequently asked questions

Which plans include API access?

API access is a Premium feature and is available on Premium and above.

What are the API rate limits?

Creating links is limited to 120 requests per minute per account. Exceeding it returns a 429 response with a Retry-After header giving the number of seconds to wait.

I lost my API key, can I see it again?

No. Only a hash of the key is stored, so the full value is shown once at creation and never again. Generate a new key and revoke the old one, which takes effect instantly.

Can I update or delete links through the API?

Not currently. The API creates and lists links; changing a destination or removing a link is done from the dashboard.

Try it yourself

Free plan, no credit card required.

Create a free account