ساخت یا ویرایش مخاطب

حرفه‌ایکلید خواندن و نوشتن

در پلن حرفه‌ای و سازمانی در دسترس است (بتا).

POST…/public/contacts/upsert

اگر مخاطبی با همان کلیدهای شناسایی کسب‌وکار (به‌طور پیش‌فرض موبایل و بعد ایمیل) باشد، آن را ویرایش می‌کند؛ وگرنه یکی تازه می‌سازد. پاسخ ۲۰۰ است: contact همان رکورد است و created می‌گوید ساخته شد یا ویرایش.

درخواست
curl https://app.reshta.ir/api/v1/public/contacts/upsert \​  -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}]}'​

سرآیندها

AuthorizationstringالزامیBearer و کلید API کسب‌وکار (rk_live_…).
Idempotency-Keystringالزامیشناسهٔ یکتای همین عملیات، مثلاً یک UUID تازه؛ تکرار با همان کلید چیزی را دوبار انجام نمی‌دهد.
Content-Typeapplication/jsonالزامیبدنه JSON با UTF-8 است.

پارامترهای بدنه

first_namestring | nullاختیارینام.
last_namestring | nullاختیارینام خانوادگی.
company_iduuid | nullاختیاریشرکتی که این رکورد به آن وصل است.
job_titlestring | nullاختیاریسمت.
national_idstring | nullاختیاریکد ملی.
owner_iduuidاختیاریهمکار مسئول.
lifecycle_stagestringاختیاریپیش‌فرض: "lead"مرحلهٔ چرخهٔ عمر مشتری.
birthdaystring | nullاختیاریتاریخ تولد میلادی، YYYY-MM-DD.
unsubscribed_emailbooleanاختیاریپیش‌فرض: falseلغو اشتراک ایمیل‌های تبلیغاتی.
unsubscribed_smsbooleanاختیاریپیش‌فرض: falseلغو اشتراک پیامک‌های تبلیغاتی.
customobjectاختیاریپیش‌فرض: {}فیلدهای سفارشی، با کلید هر فیلد.
emailsobject[]اختیاریپیش‌فرض: []ایمیل‌ها؛ حداکثر ۲۰.
emails[].emailemailالزامینشانی ایمیل.
emails[].labelstring | nullاختیاریبرچسب دلخواه، مثلاً «کار».
emails[].is_primarybooleanاختیاریپیش‌فرض: falseایمیل یا شمارهٔ اصلی.
phonesobject[]اختیاریپیش‌فرض: []شماره‌ها؛ حداکثر ۲۰.
phones[].phonestringالزامیشمارهٔ تلفن یا موبایل.
phones[].labelstring | nullاختیاریبرچسب دلخواه، مثلاً «کار».
phones[].is_primarybooleanاختیاریپیش‌فرض: falseایمیل یا شمارهٔ اصلی.

پاسخ‌ها و خطاها

200—انجام شد؛ بدنه همان رکورد است.
400validation_errorبدنه نادرست است یا Idempotency-Key نیامده؛ details می‌گوید کدام فیلد.
401unauthorizedکلید نیست، نادرست یا باطل است، یا سازنده‌اش دیگر فعال نیست.
403forbiddenکلید دسترسی نوشتن ندارد.
409conflictهمین Idempotency-Key با بدنهٔ دیگری آمده یا هنوز در جریان است.
429rate_limitedبیش از ۱۲۰ درخواست در دقیقه؛ Retry-After می‌گوید چند ثانیه صبر کنید.
پاسخ
{​  "created": false,​  "contact": {​    "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"​  }​}​

کلید API بسازید و اولین درخواست را بفرستید

کلید در اپ رشتا ساخته می‌شود و فقط یک بار نشان داده می‌شود. API و وب‌هوک (بتا) در پلن حرفه‌ای و سازمانی است و کلید را فقط مدیر کسب‌وکار می‌سازد.

  1. ۱ورود به app.reshta.ir
  2. ۲اتصال ← توسعه‌دهنده
  3. ۳ساخت کلید API