مستندات API رشتا
سایت اختصاصی، ERP یا نرمافزار حسابداریتان را به رشتا وصل کنید: مخاطب و معامله بسازید، سفارش ثبت کنید و با وبهوک از هر تغییر باخبر شوید. REST و JSON، با یک کلید.
- ۱ساخت کلید API در رشتااتصال ← توسعهدهنده
- ۲اولین درخواستسامانهٔ شما به رشتا
curl -H "Authorization: Bearer …" …/contacts - ۳دریافت وبهوکرشتا به سامانهٔ شماPOST deal.won
با API رشتا چه میسازید؟
آدرس پایه
همهٔ درخواستها با HTTPS به این آدرس میروند. بدنهها JSON با UTF-8 است، زمانها ISO 8601 به وقت UTC و مبلغها عدد صحیح به ریال.
https://app.reshta.ir/api/v1/publicاحراز هویت با کلید API
هر درخواست باید سرآیند Authorization را با کلید API کسبوکار داشته باشد. کلید را مدیر کسبوکار در اپ رشتا میسازد:
- ۱با حساب مدیر وارد app.reshta.ir شوید؛ ایمیل حساب باید تأییدشده باشد.
- ۲از منوی کناری «اتصال» و بعد «توسعهدهنده» را باز کنید.
- ۳«ساخت کلید API»: یک نام بدهید و دسترسی را انتخاب کنید: «خواندن» یا «خواندن و نوشتن».
- ۴کلید را همان لحظه کپی کنید و در جای امن (متغیر محیطی سرور) نگه دارید.
Authorization: Bearer rk_live_…- کلید به نام همکاری که آن را ساخته کار میکند؛ اگر کلید باطل شود یا حساب سازنده غیرفعال شود، پاسخ 401 است.
- کلید «خواندن» روی درخواست نوشتنی پاسخ 403 میگیرد.
- کلید را هرگز در کد مرورگر یا اپ موبایل نگذارید؛ فقط از سرور خودتان درخواست بفرستید.
محدودیت نرخ
یکتایی درخواست (Idempotency)
هر درخواست نوشتنی (POST و PATCH) باید سرآیند Idempotency-Key داشته باشد: یک شناسهٔ تازه برای هر عملیات، مثلاً UUID، تا ۲۵۵ نویسه. اگر همان درخواست دوباره برسد، مثلاً بعد از قطع شبکه، رشتا همان پاسخ اول را برمیگرداند و چیزی دوبار ساخته نمیشود.
POST /ordersAuthorization: Bearer rk_live_…Idempotency-Key: 7f3c2b1e-4a5d-4c6f-9e1a-2b3c4d5e6f70Content-Type: application/jsonخطاها
همهٔ خطاها یک شکل دارند: یک code ثابت که برنامهٔ شما میتواند رویش تصمیم بگیرد، یک message برای انسان و details؛ در خطای اعتبارسنجی، details نام فیلد را دارد.
{ "error": { "code": "validation_error", "message": "Invalid request", "details": [ { "field": "emails.0.email", "message": "Invalid email address" } ] }}صفحهبندی
فهرستها با cursor صفحهبندی میشوند، نه با شمارهٔ صفحه. هر پاسخ data و next_cursor دارد؛ next_cursor را در درخواست بعدی بفرستید. وقتی next_cursor برابر null است، به آخر رسیدهاید. اندازهٔ پیشفرض صفحه ۵۰ و بیشینه ۱۰۰ است.
GET /contacts?limit=50&cursor=eyJpZCI6IjAxOTJjNGU4In0{ "data": [ … ], "next_cursor": "eyJpZCI6IjAxOTJjNGY5In0"}نسخهبندی
شروع سریع
- ۱کلید «خواندن و نوشتن» بسازید
- ۲آن را در RESHTA_API_KEY بگذارید
- ۳اولین مخاطب را بسازید
curl https://app.reshta.ir/api/v1/public/contacts \ -X POST \ -H "Authorization: Bearer $RESHTA_API_KEY" \ -H "Idempotency-Key: 7f3c2b1e-4a5d-4c6f-9e1a-2b3c4d5e6f70" \ -H "Content-Type: application/json" \ -d '{"first_name":"سارا","last_name":"رضایی","phones":[{"phone":"09121234567","is_primary":true}]}'{ "id": "0192c4e8-7b1a-7c3e-9f20-5d6a1b2c3d4e", "first_name": "سارا", "last_name": "رضایی", "company_id": null, "company_name": null, "job_title": null, "national_id": null, "owner_id": "0192a7f0-3b4c-7d5e-8f60-718293a4b5c6", "lifecycle_stage": "lead", "birthday": null, "unsubscribed_email": false, "unsubscribed_sms": false, "is_sample": false, "source": null, "marketing_block_reason": null, "address": null, "custom": {}, "emails": [], "phones": [ { "id": "0192c4e8-7b1b-7a10-8c21-3d4e5f607182", "phone": "09121234567", "label": null, "is_primary": true } ], "created_at": "2026-10-26T14:05:12.000Z", "updated_at": "2026-10-26T14:05:12.000Z"}