Docs

Ідемпотентність

Останнє оновлення: 2026-10-033 хв читання

Мережа іноді обриває запит, і невідомо, чи дійшов він. Щоб повторити POST і не виконати (та не оплатити) роботу двічі, передайте заголовок Idempotency-Key - унікальне значення на кожну логічну операцію. Добре підходить UUID.

curl -X POST https://developers.grem.capital/api/v1/valuation/express \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f1c8a90-1e2b-4c77-9a10-2b6d0f9e4a11" \
  -d '{"propertyCategory":"apartment","addressText":"Torstraße 12, Berlin","totalArea":64}'

Як це працює

  • Перший запит з ключем виконується звичайно, його успішна відповідь запам'ятовується.
  • Повтор з тим самим ключем повертає збережену відповідь: інструмент не запускається вдруге і не списується вдруге.
  • Поки перший запит ще виконується, другий запит з тим самим ключем отримує 409 з title: idempotency_conflict. Дочекайтеся і повторіть з тим самим ключем.
  • Якщо перший запит завершився помилкою, ключ звільняється - повтор з ним виконається заново. Запит, який не дійшов до сервісу (відмова з'єднання), теж звільняє ключ.
  • Після таймауту (502 provider_error) інструмента, створення об'єкта або створення ліда ключ лишається зайнятим 15 хвилин, щоб повтор не виконав роботу вдруге. Перш ніж повторювати, перевірте результат: для інструментів - GET /works, для створення - GET /objects і GET /leads. Результати покращення фото, сайту й чернетки в GET /works не зберігаються - перевіряйте їх у кабінеті або серед своїх об'єктів. Повтор після 15 хвилин виконає роботу (і спише її) ще раз.
  • Виняток - експрес-оцінка: після таймауту ключ звільняється - повторіть її з тим самим ключем одразу, готова оцінка повернеться безкоштовно: ні оцінка, ні виклик API вдруге не списуються.
  • Ключ пам'ятається 24 години і належить вашому API-ключу та операції - методу і фактичному шляху: однакові значення різних API-ключів, той самий ключ на іншому інструменті, а також POST /objects/property і POST /objects/rental - різні запити.

Тіло повтору не порівнюється з першим запитом. Якщо надіслати інший запит з уже використаним ключем, ви отримаєте відповідь на перший. Новий ключ - на кожну нову операцію.

Де діє

Запит
POST /valuation/express і всі інструменти (POST /valuation/report, POST /content/generate, POST /flyer/create тощо)так
POST /objects/{kind} - створення об'єктатак
POST /leads - створення лідатак
POST /match/leads/{id}/events - подія Swipe Matchтак; ключ має відповідати ^[A-Za-z0-9_.:-]{8,128}$, інакше він ігнорується
POST /uploads, POST /chat/messages, POST /valuation/review/jobs/{id}/confirmні (у чату для цього є clientMessageId)

У SDK ключ передається останнім аргументом методу.

Пов'язані статті

Ця стаття була корисною?