shortio

Short.io API for link shortening. Use when user mentions "Short.io", "link shortener", "short URL", or URL management.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "shortio" with this command: npx skills add vm0-ai/vm0-skills/vm0-ai-vm0-skills-shortio

Short.io

Use Short.io via direct curl calls to create and manage short links on your branded domain.

Official docs: https://developers.short.io/docs


When to Use

Use this skill when you need to:

  • Create short links from long URLs
  • Customize link slugs (paths) for branded URLs
  • Track link clicks and analytics
  • Manage multiple links (list, update, delete)
  • Set link expiration using TTL (time-to-live)

Prerequisites

  1. Sign up at Short.io
  2. Add and configure your custom domain (or use the default short.io domain)
  3. Go to Integrations & API and create a Secret API Key
  4. Get your domain ID from Domain Settings (visible in browser URL bar)
export SHORTIO_TOKEN="your-secret-api-key"
export SHORTIO_DOMAIN="your-domain.com"
export SHORTIO_DOMAIN_ID="123456" # Optional, needed for list/stats operations

Pricing

  • Free tier: 1,000 links, 50,000 tracked clicks/month
  • API key is passed in the Authorization header

How to Use

All examples below assume you have SHORTIO_TOKEN and SHORTIO_DOMAIN set.

Base URL: https://api.short.io


1. Create a Short Link

Create a new short link with auto-generated slug:

Write to /tmp/shortio_request.json:

{
  "domain": "<your-domain-name>",
  "originalURL": "https://example.com/very/long/url/here"
}

Then run:

curl -s -X POST "https://api.short.io/links" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Content-Type: application/json" --header "Accept: application/json" -d @/tmp/shortio_request.json | jq '{shortURL, originalURL, path, idString}'

2. Create with Custom Slug

Create a short link with a custom path/slug:

Write to /tmp/shortio_request.json:

{
  "domain": "<your-domain-name>",
  "originalURL": "https://example.com/product/12345",
  "path": "my-custom-slug"
}

Then run:

curl -s -X POST "https://api.short.io/links" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Content-Type: application/json" --header "Accept: application/json" -d @/tmp/shortio_request.json | jq '{shortURL, originalURL, path, idString}'

3. Create with TTL (Expiration)

Create a link that expires after a specified time (in ISO 8601 format):

Write to /tmp/shortio_request.json:

{
  "domain": "<your-domain-name>",
  "originalURL": "https://example.com/temporary-offer",
  "ttl": "2026-12-31T23:59:59Z"
}

Then run:

curl -s -X POST "https://api.short.io/links" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Content-Type: application/json" --header "Accept: application/json" -d @/tmp/shortio_request.json | jq '{shortURL, originalURL, ttl}'

4. Get Link Info by Path

Get details of a short link using domain and path:

curl -s -X GET "https://api.short.io/links/expand?domain=$(printenv SHORTIO_DOMAIN)&path=my-custom-slug" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '{originalURL, shortURL, path, idString, createdAt, cloaking}'

5. Get Link Info by ID

Get details of a short link using its ID:

LINK_ID="lnk_abc123xyz"

curl -s -X GET "https://api.short.io/links/${LINK_ID}" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '{originalURL, shortURL, path, idString, createdAt}'

6. List All Links

Get a list of links for a domain (max 150 per request):

curl -s -X GET "https://api.short.io/api/links?domain_id=$(printenv SHORTIO_DOMAIN_ID)&limit=20" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '{count, links: [.links[] | {shortURL, originalURL, path, idString}]}'

7. Update a Link

Update an existing link's path, original URL, or other properties:

LINK_ID="lnk_abc123xyz"

Write to /tmp/shortio_request.json:

{
  "path": "new-custom-slug",
  "originalURL": "https://example.com/new-destination"
}

Then run:

curl -s -X POST "https://api.short.io/links/${LINK_ID}" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Content-Type: application/json" --header "Accept: application/json" -d @/tmp/shortio_request.json | jq '{shortURL, originalURL, path, idString}'

8. Delete a Link

Delete a short link by ID:

LINK_ID="lnk_abc123xyz"

curl -s -X DELETE "https://api.short.io/links/${LINK_ID}" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '{success, idString}'

9. List Domains

Get all domains associated with your account:

curl -s -X GET "https://api.short.io/api/domains" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '.[] | {id, hostname, state, linkType}'

10. Get Link Click Statistics

Get click counts for specific links:

curl -s -X GET "https://api.short.io/domains/$(printenv SHORTIO_DOMAIN_ID)/link_clicks?link_ids=${LINK_ID}" --header "Authorization: $(printenv SHORTIO_TOKEN)" --header "Accept: application/json" | jq '{linkId: .linkId, clicks}'

Create Link Parameters

ParameterTypeRequiredDescription
domainstringYesYour branded domain
originalURLstringYesThe destination URL
pathstringNoCustom slug (auto-generated if not provided)
titlestringNoLink title for organization
ttlstringNoExpiration date (ISO 8601 format)
allowDuplicatesbooleanNoAllow creating duplicate links (default: false)
cloakingbooleanNoEnable URL cloaking
passwordstringNoPassword protect the link
expiresAtstringNoRedirect URL when link expires
tagsarrayNoTags for categorization

Response Fields

FieldDescription
shortURLThe generated short URL
secureShortURLHTTPS version of short URL
originalURLThe destination URL
pathThe slug/path of the short link
idStringUnique link ID (use for updates/deletes)
DomainIdDomain ID
createdAtCreation timestamp
cloakingWhether cloaking is enabled
hasPasswordWhether link is password protected

Guidelines

  1. Save the idString: Always store the idString from the response - you'll need it to update or delete links
  2. Use TTL for temporary links: Set expiration for promotional or time-sensitive links
  3. Limit parameter: When listing links, max limit is 150 per request; use pagination for more
  4. Custom domains: Configure DNS properly before using custom domains
  5. Avoid duplicates: Set allowDuplicates: false to prevent creating multiple short links for the same URL
  6. Check rate limits: API has rate limiting; implement retries with backoff for high-volume usage

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

google-sheets

No summary provided by upstream source.

Repository SourceNeeds Review
246-vm0-ai
General

apify

No summary provided by upstream source.

Repository SourceNeeds Review
214-vm0-ai
General

hackernews

No summary provided by upstream source.

Repository SourceNeeds Review
169-vm0-ai
General

serpapi

No summary provided by upstream source.

Repository SourceNeeds Review
164-vm0-ai