API · v1

EdTecInfo API

Shorten URLs programmatically from your own app, script, or backend service. Free, 60 requests per hour per key.

Getting a key

API access is currently by request. Email [email protected] with a short description of what you're building. We'll reply within two business days with your key.

Keys look like eai_live_ followed by 40 mixed-case characters. Treat them like passwords — anyone with the key can make requests on your behalf. We only store a hash server-side, so if you lose your key, we'll issue a new one.

Authentication

Every request must include your key in the X-API-Key request header. No other auth is required.

curl
curl -X POST https://api.edtecinfo.com/api/v1/shorten \
  -H "X-API-Key: eai_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/very/long/path"}'

Missing, malformed, or revoked keys return 401.

POST/api/v1/shorten

Create a short URL. Returns the new short code and the full shortened URL.

Request body

Send as application/json.

FieldTypeRequiredNotes
urlstringyesThe destination URL. Must include the scheme (https://).
aliasstringnoCustom short code, e.g. my-link. 3–32 chars, letters/numbers/dash/underscore. If omitted, a 7-character code is generated.
labelstringnoInternal note for your own reference. Not shown publicly.

Example request

bash
curl -X POST https://api.edtecinfo.com/api/v1/shorten \
  -H "X-API-Key: eai_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/very/long/path"}'

Success response — 201

json
{
  "code": "GK7TeT2",
  "short_url": "https://sikai.io/GK7TeT2",
  "destination_url": "https://example.com/very/long/path",
  "created_at": "2026-10-05T15:03:27+05:45"
}

destination_url echoes the URL you sent. The actual redirect is served by the short_url.

Error responses

401Missing, invalid, or revoked API key
json
{
  "error": "Invalid or revoked API key."
}
422Validation failed

Returned when url or alias fails validation. Possible messages:

  • URL is required.
  • URL is too long. — over 2000 characters
  • Please enter a valid URL (including https://).
  • Only http and https URLs are allowed.
  • URL is missing a host.
  • URL host looks invalid.
  • Alias must be 3–32 characters: letters, numbers, dash, underscore.
  • That alias is reserved. — reserved words like api, admin, login
json
{
  "error": "URL is required."
}
409Alias already taken

The custom alias you requested is already in use. Choose a different one, or omit alias to let the server generate a unique code.

json
{
  "error": "Alias already taken."
}
429Rate limit exceeded

You've exceeded the per-key hourly quota. Back off and retry after the hour resets.

json
{
  "error": "Rate limit exceeded. Try again later."
}
500Server error

Something went wrong on our side. Retry with exponential backoff; if it persists, email [email protected].

json
{
  "error": "Unexpected server error."
}

Rate limits

Each key is limited to 60 requests per hour by default. The limit is per key, not per IP. If you need more, email us and we'll raise it.

Exceeding the limit returns 429. Build in exponential backoff on your side rather than retrying immediately.

Versioning

The current version is v1. If we need to ship a breaking change, it goes out under /api/v2/ and/api/v1/ stays live for at least six months after the announcement. Non-breaking additions (new optional fields, new endpoints) can ship on v1 without notice.

Contact

Key requests, rate-limit increases, bug reports, and everything else: [email protected].