Belgelere geç
API

Hatalar

Tek bir biçim, iki düzey ve her şeyin üzerinde bir istek id'si.

Zarf

type, üzerinde dallanabileceğiniz ve asla büyümeyecek olan donmuş bir kümedir. code ise özeldir ve eklemelidir; tanımadığınız bir kodu kendi type değeri gibi ele alın. requestId başarılar dahil her yanıtta bulunur ve bir bildirimi bir günlük satırına bağlayan şeydir.

422 Unprocessable Entity
{  "error": {    "type": "validation_error",    "code": "invalid_email_address",    "message": "Not a valid email address: ada@",    "param": "to.0",    "docUrl": "https://openemail.uk/docs/api/errors#invalid_email_address",    "requestId": "req_e103790543af4…"  }}

param noktalı ve indeksli yazılır; böylece onu içeren alanı değil tam olarak ilgili öğeyi (to.0, attachments.2.filename) gösterir.

Durum kodları

DurumtypeSık görülen kodlar
400invalid_request_errormalformed_json, invalid_idempotency_key
401authentication_errormissing_api_key, invalid_api_key, revoked_api_key, invalid_credential_type
403permission_errorinsufficient_scope, from_address_forbidden
404not_found_errorresource_not_found
409conflict_erroremail_not_cancellable, translation_not_configured
422validation_errorinvalid_email_address, reserved_header, too_many_recipients, unknown_parameter, idempotency_key_reuse, label_not_directly_settable, unknown_language, translation_too_long
429rate_limit_errorsend_quota_exceeded, too_many_inboxes
500api_errorinternal_error
503api_errortranslation_failed

Bir 404, "yok" ile "başka bir çalışma alanına ait" arasında asla ayrım yapmaz. Bu bilinçlidir: farkın kendisi bir bilgidir.

Bir 429 asla Retry-After taşımaz; bu yüzden bekleme süresini kendiniz seçin. send_quota_exceeded aylık gönderim hakkınızdır ve ayın birinde sıfırlanır; bu yüzden geri çekilmek yerine onu bir insana gösterin. too_many_inboxes ise tek kullanımlık gelen kutusu oluşturma tavanıdır ve zaten elinizde olan bir gelen kutusunun süresini uzatmak bu tavana hiçbir şey yazmaz.

500 ile 503 aynı type değerini paylaşır ama bir çağıran için farklı şeyler ifade eder. 503, yanıt vermeyen bir bağımlılıktır (bugün bu, çevirmendir) ve isteği olduğu gibi yeniden denemeye değer; 500 ise bize aittir ve requestId ile bildirmeye değer.

Bunları ele alma

Davranış için type üzerinden dallanın, bir insana göstereceğiniz mesaj için code değerini okuyun. Tanınmayan bir code, istemcinizdeki bir hata değildir. Bir başarısızlığı eskisinden daha kesin adlandırdığımız anlamına gelir.

TypeScript
const res = await fetch(`${BASE}/emails`, { method: 'POST', headers, body }); if (!res.ok) {  const { error } = await res.json();   switch (error.type) {    case 'rate_limit_error':      throw new RateLimited(error.code);    case 'validation_error':      // error.param points at the offending field      throw new BadRequest(`${error.param}: ${error.message}`);    case 'authentication_error':      // revoked_api_key and expired_api_key are worth telling an operator apart      throw new AuthFailed(error.code);    default:      // quote requestId when you report it      throw new Unexpected(error.message, error.requestId);  }}