Ekibinize uyan açıyı seçin
Geliştiriciler için

Kaynağını okuyabileceğiniz kısaltıcı.

Gecikmeyi, hata oranlarını ve MTTR süresini ölçüyorsunuz. Elido, kaynağını okuyabileceğiniz bir kısaltıcıdır - REST + gRPC, dört dilde SDK'lar (TypeScript, Go, Python, Ruby), her yönlendirmede OpenTelemetry span'leri ve SaaS'ın yanlış şekil olduğuna karar verdiğiniz gün için bir Apache 2.0 self-host yolu.

  • REST + gRPC: servis mesh'inizin tercih ettiği yüzeyi seçin
  • Her yönlendirmede, her API çağrısında OpenTelemetry span'leri
  • Altı SDK: TypeScript, Go, Python, Ruby, PHP, .NET
  • Tek komutluk Helm chart'ıyla Apache 2.0 self-host
POST /v1/links
201 Created · 38 ms
Request
curl -X POST https://api.elido.app/v1/links
  -H "Authorization: Bearer $ELIDO_API_KEY"
  -H "Idempotency-Key: ci-2026-05-08-build-4419"
  -d '{
    "destination_url": "https://shop.example.com/launch",
    "slug": "q2-launch",
    "workspace_id": "ws_8f3c"
  }'
Response
{
  "id": "link_01HQ3X...",
  "short_url": "https://b.elido.me/q2-launch",
  "click_tracker": "https://api.elido.app/v1/links/link_01HQ3X/clicks",
  "expires_at": "2026-08-08T00:00:00Z",
  "created_at": "2026-05-08T11:24:01Z"
}
Idempotent · safe to retry Live spec
OpenAPI 3.1
Spesifikasyon formatı
3
Birinci taraf SDK'lar
5 ms
p50 yönlendirme (cache HIT)
Apache 2.0
Self-host lisansı

Gözlemlenebilirlik - eklenti değil, yerleşik

Her yönlendirme bir OpenTelemetry span'i yayar. Her span kolektörünüze iner.

Edge servisi uçtan uca OTel ile enstrümante edilmiştir. OTLP kolektörünüzü yönlendirme katmanına yönlendirin ve tek bir enstrümantasyon satırı yazmadan tam çağlayanı elde edin - cache araması, kural değerlendirmesi, yanıt ve asenkron tıklama olayı yayını.

Trace · 7f3a91 · GET / → 302
5 spans · 5.2 ms wall
edge.redirect
edge service · server
4.8 ms
cache.lookup (L1 → L2)
in-process LRU + hot cache
0.6 ms
rule.evaluate
smart-link first-match
0.3 ms
response.write
302 + click_id header
1.0 ms
click.publish (async)
event stream · fire-and-forget
0.4 ms
Wall time
5.2 ms
Cache
L1 hit
Exporter
OTLP/gRPC

SDK'lar

Aynı kanonik çağrı. Altı dil. Hepsi tek bir spesifikasyondan üretilmiş.

Her SDK aynı OpenAPI 3.1 spesifikasyonundan gönderilir. Sunucuya yeni bir uç nokta mı eklendi? Üreticiyi çalıştırın, SDK'ları gönderin, iş bitti. API'den sapan elle bakımı yapılan bir istemci yok. Idempotency anahtarları, üstel geri çekilmeyle yeniden denemeler ve tipli hata yanıtları altı dilin tamamında tutarlı bir şekilde sunulur.

  • OpenAPI 3.1 tek gerçek kaynağı
    Spesifikasyon kaydedilmiş. SDK'lar her yayında yeniden üretilir.
  • Tipli hata yanıtları
    Hız sınırı, doğrulama, çakışma - hepsi tipli, asla string ile yakalanmaz.
  • Idempotency anahtarları
    Her yazma uç noktasında başlık tabanlı, yeniden denemede tekrar oynatılır.
  • Yerleşik yeniden denemeler
    Dil başına saygı gösterilen Retry-After ile üstel geri çekilme.
Altı SDK'nın tümü →
Canonical create - same call, three SDKs
generated from spec
TypeScriptcreate-link.ts
1import { Elido } from
2 "@elido/sdk";
3 
4const elido = new Elido({
5 apiKey: process.env.ELIDO_API_KEY!,
6});
7 
8const link = await elido.links.create({
9 destinationUrl: dest,
10 slug: "q2-launch",
11});
Gocreate-link.go
1import "github.com/elido/sdk-go"
2 
3client := elido.NewClient(
4 elido.WithAPIKey(key),
5)
6 
7link, err := client.Links.Create(ctx,
8 &elido.CreateLinkRequest{
9 DestinationURL: dest,
10 Slug: "q2-launch",
11 })
Pythoncreate_link.py
1from elido import Elido
2 
3elido = Elido(
4 api_key=os.environ["ELIDO_API_KEY"],
5)
6 
7link = elido.links.create(
8 destination_url=dest,
9 slug="q2-launch",
10 idempotency_key=build_id,
11)

gRPC sözleşmesi

Protobuf'ta aynı yüzey - servis mesh'te yerli olanlar için.

api-core servisi, aynı işleyicilerden hem REST hem gRPC sunar. Platformunuz proto'yu yerel olarak konuşuyorsa (Envoy, Istio, Linkerd, Connect-Go), JSON katmanını atlayın. .proto dosyaları yayınlanmıştır; buf veya protoc'un desteklediği herhangi bir dilde istemci üretin.

link_service.proto
buf · v1
1syntax = "proto3";
2 
3package elido.api.v1;
4 
5option go_package = "github.com/elido/proto/api/v1;apiv1";
6 
7service LinkService {
8 rpc Create(CreateLinkRequest) returns (Link);
9 rpc Resolve(ResolveLinkRequest) returns (ResolveLinkResponse);
10 rpc List(ListLinksRequest) returns (ListLinksResponse);
11 rpc Delete(DeleteLinkRequest) returns (google.protobuf.Empty);
12}
13 
14message CreateLinkRequest {
15 string workspace_id = 1;
16 string destination_url = 2;
17 optional string slug = 3;
18 optional google.protobuf.Timestamp expires_at = 4;
19 repeated KeyValue tags = 5;
20}
21 
22message Link {
23 string id = 1;
24 string short_url = 2;
25 string destination_url = 3;
26 google.protobuf.Timestamp created_at = 4;
27}
served from api-core:9090 stable
mTLSservice-mesh native

Authenticate with workload identity via SPIFFE/SPIRE or your mesh's built-in mTLS. API keys still work for non-mesh callers.

Same handlersREST and gRPC

One implementation in api-core. Connect-Go transcoding means the REST surface is generated, not separately maintained.

Streamingserver-side events

ResolveLinkResponse streams click events for hot links - useful for internal dashboards without webhook plumbing.

Kutudan çıkanlar

  • REST + gRPC: servis mesh'inizin tercih ettiği yüzeyi seçin
  • Her yönlendirmede, her API çağrısında OpenTelemetry span'leri
  • Altı SDK: TypeScript, Go, Python, Ruby, PHP, .NET
  • Tek komutluk Helm chart'ıyla Apache 2.0 self-host
  • HMAC-SHA256 imzalı webhook firehose'u
  • Her serviste Prometheus /metrics uç noktası

Elido API'si gerçekte ne sunuyor

Bir OpenAPI spesifikasyonu ve bir Bearer token asgari şart. Aşağıdaki özellikler, üzerine inşa edebileceğiniz bir kısaltıcıyı gece yarısı savaşacağınız bir kısaltıcıdan ayıran şeylerdir.

Öngörülebilir REST
01

44 belgelenmiş uç noktalı OpenAPI 3.1 - belgelenmemiş yüzey yok

Üretimdeki her uç nokta OpenAPI 3.1 spesifikasyonunda tanımlanmıştır. Gizli rota yok, dokümantasyon ekibinin unuttuğu belgelenmemiş parametre yok. Spesifikasyon repoya kaydedilir ve API ile birlikte versiyonlanır; kırıcı değişiklikler SemVer'i izler ve en az 90 günlük bir kullanımdan kaldırma penceresi alır. Spesifikasyon, dokümanlarda Scalar ile etkileşimli olarak render edilir - API anahtarınızı yapıştırın ve tarayıcıdan çıkmadan çağrıları deneyin. Aynı sürümden her yayında otomatik üretilen üç SDK (TypeScript, Python, Go), sunucunun gerçekte kabul ettiğinden asla sapamaz. SDK metotları tipli istek nesneleri kabul eder ve tipli yanıt nesneleri döndürür; hatalar tipli olur, string ile yakalanmaz. Idempotency anahtarları yazma uç noktalarında desteklenir - bir `Idempotency-Key` başlığı geçin ve yeniden denemede yanıt, yinelenen bir oluşturma olmadan tekrar oynatılır.

Programatik slug kontrolü
02

CI hatları için deterministik slug'lar, toplu oluşturma ve idempotency

POST /v1/workspaces/{ws}/links bir slug alanı kabul eder - istediğiniz slug'ı alırsınız veya mevcut linkin kimliğiyle birlikte bir çakışma hatası alırsınız, böylece hattınız ne yapacağına karar verebilir. Toplu oluşturma (POST .../links/bulk) çağrı başına 100'e kadar link spesifikasyonu kabul eder; yanıt, girdi satırı başına oluşturulan bir link veya bir hatayla bir sonuç içerir, böylece kısmi başarısızlıklar gizlenmez. Her iki uç nokta da idempotency anahtarlarını kabul eder: aynı isteği aynı anahtarla yeniden gönderin ve aynı yanıtı alırsınız, yinelenen satır olmaz. Bu, deploy'da kısa link basan CI/CD hatları için desendir - deterministik, yeniden denemek için güvenli, ortamlar arasında tutarlı. Slug ad alanı özel alan adı başınadır: aynı slug iki farklı alan adında iki farklı linktir, çakışma değildir.

Webhook'lar ve firehose
03

Otomatik yeniden deneme ve dead-letter kuyruğu ile HMAC imzalı webhook'lar

Her çalışma alanı olayı (link oluşturuldu, link tıklandı, link silindi, denetim girdisi, atfedilen dönüşüm) webhook olarak kullanılabilir. Yükler, döndürülebilir bir gizli anahtar kullanılarak HMAC-SHA256 ile imzalanır; imzalama anahtarı API anahtarınızdan ayrıdır, böylece birini döndürmek diğerini geçersiz kılmaz. Teslimat semantiği: en az bir kez, üstel geri çekilmeyle (1s, 5s, 30s, 5dk, 30dk) ve yapılandırılabilir bir yeniden deneme penceresiyle (varsayılan 24 saat). Yeniden denemeleri tüketen olaylar panelde görünen bir dead-letter kuyruğuna iner; buradan yeniden oynatabilirsiniz. Yüksek hacimli olay hatları için Kafka uyumlu firehose, HTTP teslimatını tamamen atlar - tıklama olaylarını ve denetim günlüklerini akıştan doğrudan tüketin. Firehose bir Business özelliğidir; webhook teslimatı Pro ve üstünde mevcuttur.

MCP protokolü
04

Model Context Protocol sunucusu: herhangi bir MCP istemcisinde Elido araçları

Açık kaynak Elido MCP sunucusu (MIT lisanslı), link, QR ve analitik uç noktalarını tipli MCP araçları olarak sunar. Kurulum 30 saniye sürer: sunucu bloğunu Claude Desktop veya Cursor yapılandırmanıza ekleyin, ELIDO_API_KEY'i ayarlayın, yeniden başlatın. Araç kataloğu sunucudan otomatik olarak keşfedilir - sapan elle yazılmış araç tanımları yoktur. Salt okunur varsayılan kapsamdır; yazma işlemleri çalışma alanı ayarlarında açık izin gerektirir. Her araç çağrısı, çağıran anahtar ve argümanlarla çalışma alanı denetim günlüğünde görünür, böylece ajan güdümlü değişiklikler izlenebilir olur. Sunucu stdio ve SSE konuşur; REST API ile aynı hız sınırlarından ve hata kodlarından geçer, 429 üzerinde Retry-After dahil, böylece ajanınız temiz bir şekilde geri çekilebilir. Kaynak GitHub'da; yaygın fork'lar, Elido'nun upstream'i birleştirmesine gerek kalmadan çalışma alanına özgü araçlar veya metadata zenginleştirme ekler.

Self-host
05

Helm chart'ı (Apache 2.0): yönlendirme katmanını kendi VPC'nizde çalıştırın

Yönlendirme katmanı, her yönlendirmenin sıcak yolunda bulunan tek bileşendir. Kendi içinde bütün, tek bir ikili dosyadır - L2 katmanı için bellek içi bir sıcak cache dışında çalışma zamanı bağımlılığı yoktur. Helm chart'ı, Kubernetes yatay pod otomatik ölçeklendirmesi için akıllıca varsayılanlarla gelir; CPU ve istek oranına göre ölçeklenir. Yapılandırma ortam değişkenleridir; chart, akıllıca varsayılanlar ve her değişkenin belgelenmiş bir listesiyle bir values.yaml içerir. Yığının kalanı (API ve panel) Elido tarafından yönetilen SaaS'ta kalabilir - her şeyi self-host etmek zorunda değilsiniz. Yaygın bölünme şudur: yönlendirme katmanı kendi VPC'nizde self-host edilir (kullanıcılarınıza daha düşük gecikme, egress faturası yok), panel ve analitik Elido'nun bulutunda. Güvenlik duruşunuz gerektiriyorsa yerel sıcak cache'in bekleme durumunda şifrelenmesi için kendi KMS'inizi getirin. Bitly (self-host seçeneği yok) ve özel bir kısaltıcı inşa etmeyle karşılaştırıldığında, Helm chart'ı seçeneği sıfırdan başlamadan yönlendirme performansını ve yönetilen API yüzeyini size verir.

Dokunacağınız yığın

  • TypeScript SDK
  • Python SDK
  • Go SDK
  • Webhook firehose'u
  • OpenAPI 3.1 spesifikasyonu
  • Self-host Helm chart'ı

Neyi ölçeceksiniz

p50 yönlendirme gecikmesi
5 ms cache HIT
API çalışma süresi SLA'sı
Business'ta %99,95
Self-host RTO
<1 saat

Bunun üzerine inşa eden mühendislik ekipleri

Adlar şu an için yer tutucudur - vaka çalışmaları yayınlandıkça gerçek müşteri adları buraya gelecek.

Yönlendirme katmanını kendi Kubernetes kümemizde self-host ediyoruz ve gerisi için yönetilen API'yi kullanıyoruz. p50 yönlendirme gecikmesi, edge servisini kullanıcılarımızla aynı bölgeye taşıdıktan sonra 45ms'den 6ms'ye düştü. Helm chart'ı, destek ekibine danışmadan gönderime çıkacak kadar okunabilirdi.

P
Platform mühendisliği ekibi, orta ölçekli SaaS, Vilnius
Kıdemli Mühendis

MCP sunucusu belirleyici faktördü. Ekibimiz gün boyunca Cursor'da çalışıyor; iş akışından çıkmadan IDE içinden yayın notları için etiketli kısa linkler oluşturabilmek, gerçekten kalıcı olan türden bir DX kazancı.

D
DevRel ekibi, geliştirici araçları şirketi, Berlin
Geliştirici İlişkileri Direktörü

Toplu oluşturmadaki idempotency anahtarları, yeniden denemelerin yinelenen kayıtlar oluşturması konusunda paranoyaya kapılmadan CI'da kısa link basmamızı sağlıyor. Tipli Go SDK, hat kodumuzun derlenmesi veya başarısız olması anlamına geliyor - çalışma zamanında sessiz kötü istekler yok.

B
Backend platform ekibi, fintech, Amsterdam
Kıdemli Backend Mühendisi

Elido API vs Bitly API vs kendi kısaltıcınızı inşa etmek

İki harici seçenek ve kendin-inşa-et alternatifi. Bitly'nin API'sinin nerede daha olgun olduğu ve özel bir kısaltıcının kontrolde nerede kazandığı konusunda dürüst.

YetenekElidoBitly APIÖzel kısaltıcı
API spesifikasyon formatıOpenAPI 3.1, repoya kaydedilmişÖzel v4 dokümanları (OpenAPI değil)Ne yazarsanız o
Birinci taraf SDK'larTypeScript, Python, Go - spesifikasyondan üretilmişJavaScript, Python, Ruby, JavaKendiniz inşa edersiniz
Yazmalarda idempotency anahtarlarıEvet - başlık tabanlı, tüm yazma uç noktalarıBelgelenmemişKendiniz uygularsınız
Toplu oluşturmaÇağrı başına 100, satır başına kısmi başarısızlıkBelgelenmiş yerel toplu uç nokta yokKendi şemanız, kendi kurallarınız
Webhook teslimatıEn az bir kez, HMAC-SHA256, DLQEnterprise'da mevcutKendiniz inşa edersiniz
MCP sunucusuMIT açık kaynak, 30 saniyelik kurulumMevcut değilKendiniz inşa edersiniz
Self-host yönlendirme katmanıApache 2.0 Helm chart'ıMevcut değilTam kontrol, tam maliyet
p50 yönlendirme gecikmesi5 ms cache HITKarşılaştırılabilir (edge'den sunulur)Altyapınıza bağlı

Geliştirici soruları

OpenAPI spesifikasyonu nerede?

/docs/api-reference adresinde - Scalar onu etkileşimli olarak render eder. Ham YAML /openapi.yaml adresindedir. SDK'ların üretildiği aynı spesifikasyondur, ayrı bakımı yapılan bir dokümantasyon değildir.

CI'da deterministik bir slug nasıl alırım?

İstek gövdesinde `slug` geçin. Slug zaten farklı bir link tarafından alınmışsa, API çakışan linkin kimliğiyle 409 döndürür. Aynı hedef URL tarafından alınmışsa (idempotent yeniden oluşturma), mevcut linki döndürür. Yeniden denemeleri güvenli hale getirmek için Idempotency-Key başlığını kullanın.

Self-host Helm chart'ı ne içerir?

Yönlendirme katmanı ikili dosyası, sıcak cache yapılandırması, HPA ayarları ve tüm yapılandırma değişkenlerinin belgelendiği bir values.yaml. API veya paneli içermez - bunlar Elido'nun SaaS'ında kalabilir. Apache 2.0 lisansı; fork'lar için CLA gerekmez.

Anket yapmadan tıklama olaylarını nasıl tüketirim?

İki seçenek: webhook'lar (HTTPS, HMAC imzalı, en az bir kez) veya Kafka uyumlu firehose (doğrudan tüketici, Business katmanı). Webhook'lar denetim ve uyarı için uygundur; olay başına HTTP teslimat maliyetinin önemli olduğu yüksek hacimli olay hatları için doğru yol firehose'dur.

Hız sınırı nedir?

API anahtarı başına sürekli 100 istek/saniye, 200 patlama, 429 ve Retry-After başlığıyla. Yazma uç noktaları okumalardan ayrı sayılır. MCP sunucusu 429'u bir araç hatası olarak geçirir; SDK'lar Retry-After değerini hız-sınırı hatasında tipli bir alan olarak sunar.

MCP sunucusunu sadece etkileşimli olarak değil, üretim otomasyonunda kullanabilir miyim?

Evet - MCP sunucusu standart bir stdio veya SSE sürecidir. Onu bir betikten, bir CI adımından veya bir ajan hattından çağırabilirsiniz. Varsayılan olarak salt okunur; yazma kapsamı açık çalışma alanı ayarı gerektirir. Her çağrı denetlenir.

Hangi kırıcı değişiklik politikasını kullanıyorsunuz?

API sürüm önekinde SemVer (/v1/, /v2/). Kırıcı değişiklikler, her iki sürüm de aynı anda canlı olacak şekilde 90 günlük bir kullanımdan kaldırma penceresi alır. Kırıcı olmayan eklemeler (yeni alanlar, yeni uç noktalar) sürüm artışı olmadan gerçekleşir. /changelog adresindeki değişiklik günlüğü, etkilenen uç noktayla her değişikliği belgeler.

Gerçek API'ye dokunmadan yerel bir geliştirme modu var mı?

TypeScript ve Python SDK'ları, kendi örneğinize işaret eden bir baseUrl geçersiz kılmasını kabul eder - self-host kullananlar için kullanışlıdır. Henüz resmi bir mock sunucu yok; yerel test için desen, mock değil, ayrı bir API anahtarına sahip bir test çalışma alanıdır. Yol haritasında.

Hangi açının uyduğundan emin değil misiniz?

Çoğu ekip birinden başlar ve dördüne birden büyür. Satış ekibimiz, kendi yığınınızı 20 dakikada sizinle birlikte gözden geçirebilir.