SDKs
Three first-party SDKs. They share the same surface — what’s available in one is available in the others.
TypeScript / JavaScript
Works in Node ≥ 20 and modern browsers.
npm install @elido/sdk
# or pnpm / yarn / bunimport { ElidoApi } from "@elido/sdk";
const api = new ElidoApi({
baseUrl: "https://api.elido.app",
token: process.env.ELIDO_TOKEN,
});
const link = await api.links.create({
destination_url: "https://example.com",
workspace_id: 1,
});
const summary = await api.analytics.summary(1, {
from: "2026-04-01",
to: "2026-05-01",
linkId: link.id,
});Python
pip install elidofrom elido import ElidoApi
api = ElidoApi(token=os.environ["ELIDO_TOKEN"])
link = api.links.create(
destination_url="https://example.com",
workspace_id=1,
)
summary = api.analytics.summary(workspace_id=1, link_id=link.id,
date_from="2026-04-01", date_to="2026-05-01")Go
go get github.com/elidoapp/elido-goimport "github.com/elidoapp/elido-go/elido"
client := elido.New(elido.Options{
BaseURL: "https://api.elido.app",
Token: os.Getenv("ELIDO_TOKEN"),
})
link, err := client.Links.Create(ctx, elido.CreateLinkInput{
DestinationURL: "https://example.com",
WorkspaceID: 1,
})Infrastructure-as-Code
Want to declare links in HCL instead of imperative SDK calls? The
Terraform provider — terraform-provider-elido —
wraps the same REST API with a plan / apply lifecycle. Useful when
your short links sit alongside Cloudflare DNS and S3 landers in the
same Terraform module.
Choosing a base URL
| Environment | URL |
|---|---|
| Production | https://api.elido.app |
| Sandbox | https://api.sandbox.elido.app |
| Self-hosted | Whatever your operator gave you |
Analytics queries hit a separate host on the same root:
https://analytics.elido.app. The TypeScript SDK accepts this as
analyticsBaseUrl; the Python and Go SDKs configure it via
AnalyticsURL/analytics_url.
Error handling
Every SDK throws/returns the same shape — see Errors. In
TypeScript the error class is ElidoApiError with status, code,
message, and requestId.