Hızlı başlangıç
API anahtarından ilk okumaya ve ilk yazmaya beş dakikada — curl, SDK ya da komut satırıyla.
Era'daki her modül — satış, mağaza, randevular, finans, gelen kutusu ve diğerleri — tek bir API'dir. Uygulamada gördüğün her kayıt okuyabileceğin bir kaynak, her düğme de çağırabileceğin bir işlemdir. Bu sayfa seni sıfırdan çalışan bir isteğe götürür.
API anahtarı oluştur
Era'da Ayarlar → Gelişmiş → API anahtarları (/settings/api-keys) sayfasını aç ve Yeni anahtar'a tıkla. Anahtara onu kullanacak şeyin adını ver ("Muhasebe eşitlemesi"), hangi modüllere ulaşacağını seç ve anahtarı kopyala — era_ ile başlar ve yalnız bir kez gösterilir.
Anahtar senin adına çalışır: o işletmede senin yapabildiğinden fazlasını asla yapamaz; rolün daralırsa anahtar da daralır. Anahtarı sunucuda tut; tarayıcıya ya da Git deposuna koyma.
export ERA_API_KEY="era_…"Kim olduğuna bak
curl https://app.getera.io/api/v1/me \
-H "Authorization: Bearer $ERA_API_KEY"{
"user": { "id": "…", "name": "Ada Lovelace" },
"workspace": { "id": "…", "organization_id": "…" },
"credential": { "kind": "key", "id": "…", "client_id": null, "scopes": ["*"] },
"modules": { "crm": ["read", "write"], "retail": ["read", "write", "manage"] }
}modules, bu anahtarın şu an tam olarak neler yapabildiğini gösterir: her modül ve orada sahip olduğu yetenekler.
Bir şey oku
Her kaynak aynı biçimde listelenir. Süzgeçler düz sorgu parametreleridir:
curl "https://app.getera.io/api/v1/orders?status=unfulfilled&limit=20" \
-H "Authorization: Bearer $ERA_API_KEY"{ "data": [ { "id": "…", "number": 1042, "status": "unfulfilled", "total_amount": 125000, "…": "…" } ], "next_cursor": "…" }Sonraki sayfa için next_cursor değerini ?cursor= olarak geri gönder. GET /api/v1, anahtarının okuyabildiği tüm kaynakları listeler.
Bir şey yap
Yazma işlemleri birer işlemdir (action). Uygulamadaki düğmeyle aynı denetimlerden geçer — izin, girdi doğrulama, ön koşullar — ve etkinlik akışında aynı izi bırakır.
curl -X POST https://app.getera.io/api/v1/customers \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name": "Ada Lovelace", "email": "[email protected]"}'import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const customer = await era.customers.create({ name: "Ada Lovelace", email: "[email protected]" })
const { id } = customer.result as { id: string }
await era.leads.captureLead({ customerId: id, message: "Yıllık planla ilgileniyor" })era customers create --name "Ada Lovelace" --email [email protected]
era crm capture_lead --customer-id CUSTOMER_ID --message "Yıllık planla ilgileniyor"{ "ok": true, "result": { "id": "…" }, "events": ["customers.created"] }events, işlemin yayımladığı olaylardır — iş akışlarının ve webhook'ların tepki verdiği şeyler.
Bir istek reddedilirse
Hatalar her zaman aynı biçimdedir:
{ "error": { "code": "customer_not_found", "message": "Kişi zaten müşteri olarak kayıtlı olmalı.", "status": 409, "request_id": "req_…" } }| Durum | Anlamı |
|---|---|
401 | Kimlik bilgisi yok; ya da yanlış, süresi dolmuş veya iptal edilmiş. |
403 | Kimlik bilgisinde işlemin istediği yetenek yok (ör. retail:manage). |
404 | Böyle bir kayıt yok — ya da kayıt veya modülün tamamı bu kimlik bilgisinin erişimi dışında. Era hangisi olduğunu söylemez. |
409 | Bir ön koşul tutmadı; code o koşulun kodudur (her işlemin sayfası bunları listeler). Ayrıca idempotency_in_progress. |
422 | Geçersiz girdi; problems her alanı ve sorununu listeler. |
429 | Çok sık istek; Retry-After kadar bekle. |
Tekrar deneyebileceğin her yazma isteğine bir Idempotency-Key ekle: aynı anahtar 24 saat boyunca işi ikinci kez yapmak yerine ilk yanıtı döndürür (Idempotency-Replayed: true).