DarhimLabs API
Idempotent message sending
Bezpieczne retry wysylki wiadomosci z Idempotency-Key.
Idempotent message sending
Bezpieczne retry wysylki wiadomosci z Idempotency-Key.
Kiedy tego uzyc
Uzyj tego przepisu, gdy chcesz: Ponawiac request po timeout bez podwojnej wiadomosci u klienta.
Endpoint referencyjny: POST /inbox/conversations/{id}/messages.
Implementacja
Node.js
import { DarhimLabs } from "@darhimlabs/node";
const client = new DarhimLabs(process.env.DARHIMLABS_API_KEY!);
await client.inbox.conversations.sendMessage(id, body, { idempotencyKey: `msg_${externalId}` });
Python
import os
from darhimlabs import DarhimLabs
client = DarhimLabs(api_key=os.environ["DARHIMLABS_API_KEY"])
client.inbox.conversations.send_message(id, content=body['content'], idempotency_key=f'msg_{external_id}')
PHP
<?php
$client = new DarhimLabs\Client(["api_key" => $_ENV["DARHIMLABS_API_KEY"]]);
$client->inbox->conversations->sendMessage($id, $body, ['idempotency_key' => 'msg_' . $externalId]);
Ruby
client = DarhimLabs::Client.new(api_key: ENV["DARHIMLABS_API_KEY"])
client.inbox.conversations.send_message(id, body, idempotency_key: "msg_#{external_id}")
Test it
- Wykonaj request w sandboxie z kluczem
dl_test_.... - Sprawdz
X-Request-IDw odpowiedzi. - Dla webhookow uzyj Webhook Playground, zeby zobaczyc payload live.
Common pitfalls
- Ten sam idempotency key musi miec ten sam payload. Inaczej dostaniesz konflikt.
- Loguj
request_idievent_id, zeby support mogl odtworzyc problem. - Dla mutacji dodawaj
Idempotency-Key, szczegolnie jesli request moze byc retryowany.
Production checklist
- Dodaj retry z exponential backoff i jitterem.
- Ogranicz scopes API key do minimalnego zestawu.
- Monitoruj rate limit headers i latency P95.
- Przetestuj bledy
401,409,422i429.