Geçici kullanıcı token’ları (mobil/sunucusuz)
sk_ anahtarınızı istemciye göndermeden mobil uygulamanızın sohbet ve sesli görüşme yapmasını sağlayan kısa ömürlü, kapsamı sınırlı eut_ token’ları.
Güncellendi: 17 Ağustos 2026
Platformu bir mobil uygulamaya veya tam kontrol edemediğiniz herhangi bir istemciye gömüyorsanız sk_ anahtarınızı oraya koymamalısınız — o anahtar hesabınızın tamamına erişir. Doğru desen şu: arka ucunuz her son kullanıcı için kısa ömürlü, kapsamı sınırlı bir token (eut_ önekli) üretir ve istemciye onu verir.
Nasıl çalışır
- 1Arka ucunuz sk_ anahtarıyla POST /v1/end-users/{external_id}/tokens çağırır.
- 2Platform eut_ önekli, imzalı bir JWT döner — durumsuzdur, sizin tarafta saklamanız gerekmez.
- 3Arka ucunuz token’ı mobil istemciye iletir.
- 4İstemci Authorization: Bearer eut_... ile sohbet/ses uçlarını doğrudan çağırır.
- 5Kullanım, token’ı üreten hesabın cüzdanından düşer.
external_id sizin son kullanıcı kimliğinizdir (örnek: user_42). Token’ın içine gömülür ve istemci tarafından değiştirilemez — yani bir kullanıcı başka bir kullanıcının kimliğine bürünemez.
Token üretmek
curl -X POST https://api.call2me.app/v1/end-users/user_42/tokens \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"expires_in": 3600,
"scopes": ["chat", "voice"],
"agent_ids": ["agent_abc"]
}'{
"token": "eut_eyJhbGciOi...",
"expires_in": 3600,
"scopes": ["chat", "voice"],
"external_id": "user_42"
}İstek alanları
| Alan | Tip | Varsayılan | Not |
|---|---|---|---|
| expires_in | int (saniye) | 3600 | [60, 86400] aralığına kırpılır (en fazla 24 saat) |
| scopes | string[] | ["chat","voice","agents:read"] | chat, voice, agents:read. Tanınmayan kapsam → 400 |
| agent_ids | string[] | null | null | Token’ı bu asistanlarla sınırlar. null = tüm asistanlar |
eut_ token neyi çağırabilir
Sabit bir izin listesiyle sınırlıdır. Listede olmayan her şey 403 döner.
| Metot ve yol | Gereken kapsam |
|---|---|
| POST /v1/chats* (oturum aç, mesaj gönder) | chat |
| POST /v1/voice/sessions | voice |
| GET /v1/voice/sessions/{room} | voice |
| POST /v1/audio/tts, POST /v1/audio/stt | chat veya voice |
| GET /v1/agents, GET /v1/agents/{id} (açık kart) | agents:read |
Bir eut_ token yeni token üretemez, cüzdanı okuyamaz, asistan yönetemez ve hiçbir yapılandırma ucuna dokunamaz — hepsi 403 döner.
Oturumları kendi kullanıcılarınıza bağlamak
Sohbet ve ses oturumları isteğe bağlı external_user_id alanı ve serbest biçimli bir metadata nesnesi kabul eder.
curl -X POST https://api.call2me.app/v1/chats \
-H "Authorization: Bearer eut_..." \
-H "Content-Type: application/json" \
-d '{"agent_id": "agent_abc", "metadata": {"kaynak": "mobil"}}'- eut_ token ile external_user_id token’dan otomatik alınır — istemci başka bir kullanıcının kimliğini gönderemez, bu yüzden gövdede göndermenize gerek yok (göndermemelisiniz).
- sk_ anahtarıyla (sunucu tarafında) external_user_id’yi açıkça geçin; sonra GET /v1/chats?external_user_id=user_42 ile geri sorgulayın.
- eut_ token’ın GET /v1/chats çağrısı her zaman kendi external_user_id değeriyle sınırlıdır — bir kullanıcı asla başkasının oturumlarını listeleyemez.
Asistan listesi (açık kartlar)
Uygulamanızda asistan seçici yapacaksanız önce her asistana açık kart bilgisi ekleyin (sk_ anahtarıyla):
curl -X PATCH https://api.call2me.app/v1/agents/agent_abc \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"public_metadata": {"emoji": "☎️", "title": {"tr": "Destek", "en": "Support"}, "order": 1, "visible": true}}'Ardından mobil istemci (eut_ token ve agents:read kapsamıyla) listeyi çeker ve yalnızca kırpılmış açık kartları alır:
[
{ "agent_id": "agent_abc", "name": "Destek Asistanı", "language": "tr-TR",
"voice_id": "v_alice",
"public_metadata": { "emoji": "☎️", "title": {"tr": "Destek"}, "order": 1, "visible": true } }
]Sistem talimatı, bilgi tabanı, webhook ve maliyet/yapılandırma alanları geçici token’a hiçbir zaman dönmez. public_metadata.visible değeri false olan asistanlar listelenmez, sonuçlar public_metadata.order alanına göre sıralanır.
Sesli oturumu geri okumak
Sesli oturum bittikten sonra oda adıyla detayını ve dökümünü çekebilirsiniz.
curl https://api.call2me.app/v1/voice/sessions/agent_x_ab12 \
-H "Authorization: Bearer eut_..."{
"room_name": "agent_x_ab12",
"status": "ended",
"duration_sec": 143.2,
"cost_usd": 0.24,
"transcript": [
{ "role": "user", "text": "Faturamı öğrenmek istiyorum" },
{ "role": "agent", "text": "Hemen bakıyorum, bir saniye." }
],
"external_user_id": "user_42"
}eut_ token ile bu uç yalnızca o son kullanıcıya ait oturumları döner; eşleşmeyen istekler 404 alır. cost_usd alanı, oturumun kullanımı raporlandıktan sonra dolar.
Faturalama kime çıkar
Token’ı üreten hesap öder. eut_ token ile yapılan tüm sohbet, ses ve ses işleme kullanımı, sk_ anahtarının sahibi olan hesabın cüzdanından düşer — siz kendiniz aramış gibi. Son kullanıcınızın platformda bir cüzdanı yoktur.
Güvenlik notları
- Token’lar durumsuz imzalı JWT’dir; sunucu tarafında iptal mekanizması yoktur. expires_in değerini kısa tutun (varsayılan 1 saat) ve gerektiğinde yenisini üretin.
- external_id token’a bağlıdır; istemci başka bir kullanıcı gibi davranamaz.
- Sızan bir eut_ token, süresi dolana kadar yalnızca cüzdanınızdan sohbet/ses harcayabilir — tam hesap erişimine yükselemez.
- Kapsamı daraltın: uygulamanız yalnızca sohbet yapıyorsa voice kapsamını vermeyin.
- agent_ids ile sınırlayın: token yalnızca uygulamanızın kullandığı asistanlara erişsin.
Token üretme ucunu kendi arka ucunuzda kimlik doğrulaması arkasına koyun. Aksi halde herkes sizin adınıza token üretip cüzdanınızı harcayabilir — token’ın kendisi güvenli olsa da üretim kapısı açık kalmış olur.
Sık sorulanlar
sk_ anahtarımı mobil uygulamaya koysam ne olur?
sk_ anahtarı hesabınızın tamamına erişir. Mobil paketten çıkarılırsa saldırgan hesabınızı yönetebilir. Geçici token’lar kısa ömürlüdür, yalnızca sohbet/ses kapsamındadır ve yeni token üretemez — sızması düşük etkili ve kendiliğinden sona eren bir olaydır.
eut_ token ile yapılan kullanımı kim öder?
Token’ı üreten hesap. Tüm sohbet, ses ve ses işleme kullanımı sk_ anahtarının sahibi olan hesabın cüzdanından düşer.
Son kullanıcı asistanın sistem talimatını görebilir mi?
Hayır. eut_ token yalnızca sabit bir izin listesine (sohbet, ses, ses işleme ve salt-okuma açık asistan kartları) erişir. Sistem talimatı, bilgi tabanı, webhook ve maliyet alanları hiçbir zaman dönmez; diğer her uç 403 verir.
Token’ı iptal edebilir miyim?
Doğrudan hayır — token durumsuz imzalı bir JWT olduğu için sunucu tarafında iptal listesi yoktur. Bu nedenle expires_in kısa tutulur (varsayılan 1 saat) ve gerektiğinde yeniden üretilir.
Bir kullanıcı başkasının dökümünü okuyabilir mi?
Hayır. eut_ token ile sohbet ve sesli oturum sorguları token’daki external_user_id ile sınırlıdır; başka bir kullanıcıya ait kayıt istendiğinde 404 döner.