واجهة API وSDK

واجهة API وSDK

ادمج Atli في تطبيقك أو موقعك وعلى شاشاتك الخاصة.

Atli eSIM API

v1.0.0

Buy and manage travel eSIMs: browse the catalogue, quote and buy a plan, install and track an eSIM, share one as a gift, and run a group account.

Paths are unversioned and the version of this document is in info.version, as on heyatli.com's published API. A breaking change will arrive under a new base URL rather than by changing what a path here means.

عنوان URL الأساسي
https://api.heyatli.com
ملف OpenAPI
https://api.heyatli.com/openapi.yaml

المسارات الرئيسية

المسارات الرئيسية في APIيُنشأ مستخدم، ويحصل على عرض سعر، ويشتري ويدفع، ويحصل على eSIM، ويثبّتها ويتابع الاستهلاك. فروع اختيارية: حساب حقيقي، وحفظ بطاقة، وبطاقة مجموعة، وإعادة الشحن، والخصومات، والشراء للمشاركة، ثم مشاركة رابط يستلمه شخص آخر.
إنشاء مستخدمPOST /login
الحصول على عرض سعرPOST /plan/quote
الشراء والدفعPOST /plan/purchase
الحصول على eSIMGET /fulfillment/…
التثبيتGET /esims
متابعة الاستهلاكPOST /esims/{id}/sync
حساب حقيقيالبريد الإلكتروني وTelegram وWhatsApp
حفظ بطاقةStripe SetupIntent
بطاقة مجموعةgroup_id
إعادة الشحنtarget_esim_id
الخصوماتالقسائم والأرصدة والإحالة
الشراء للمشاركةis_gift, max_claims
مشاركة الرابطGET /public/gifts/{code}
الاستلامقد يتطلب حسابًا حقيقيًا
المسار الرئيسياختياري

اختر مسارًا على الخريطة لعرض خطواته.

SDK

أنشئ عميلًا جاهزًا للاستخدام بلغتك من ملف OpenAPI الخاص بنا.

docker run --rm -v "$PWD:/out" \
  openapitools/openapi-generator-cli generate \
  -i https://api.heyatli.com/openapi.yaml \
  -g typescript-fetch -o /out/atli-sdk

Authentication

Most routes need a bearer token, issued by signing in through /login, /register or one of the /oauth/* flows, and refreshed at /refresh. Each operation states whether a token is required, read when sent, or ignored. Tokens identify a person, not an application; there is no application API key yet.

Enums

A field with a listed set of values may gain new ones: that ships as a minor version, never a new base URL. Treat a value you do not recognise as one you do not handle yet, not as invalid, and never let it fail parsing.

Errors

Every failed request answers with the same body: a stable code, an English message, a trace_id to quote when reporting a problem, and sometimes params. Branch on code and never on message.

عرض رموز الأخطاء الشائعة
400

الطلب غير صالح

401

تسجيل الدخول مفقود أو منتهي الصلاحية

402

فشلت عملية الدفع

403

لا يُسمح لهذا المستخدم بذلك

404

غير موجود أو لا يخص هذا المستخدم

429

طلبات كثيرة جدًا، فانتظر المدة المحددة في Retry-After

500

حدث خطأ من جانبنا

Rate limits

Sign-in, registration, token refresh, email codes, voucher redemption, quotes, reviews and eSIM sync are throttled per caller. A refused request answers 429 with Retry-After in whole seconds, alongside X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Wait out Retry-After rather than retrying in a loop.

Language and currency

Send X-Locale (or Accept-Language, or ?lang=) to choose the language; the language answered in comes back as Content-Language, falling back to English. Prices follow the signed-in person's currency, or the currency a quote asks for.

Buying a plan

Quote first at /plan/quote, then pass the quote_id to /plan/purchase so the price you showed is the price charged. Send an idempotency_key on every purchase: the same key never buys twice.