Deduplication of requests
Description
Repeat requests are API requests that contain the same headers and the same data as the original request. A repeated request can be sent if the connection failed at the moment of receiving the data.
The platform will not accept a repeated request if it changes the data in order to avoid duplicate events. This scheme works by default and does not require additional configuration. By default, the platform deduplicates within 1 day from the first request.
How do you know if the request was taken as a duplicate one?
The response to the repeated request will be the same as the response to the original one. However, the repeated request will contain additional headers:
X-Duplicate-Key: NeOScRqBgsqj67CR5dYcqvcmPZA=
X-Duplicate-Request: true
The X-Duplicate-Key header holds the hashed request data.
How to send a request so that it is not taken as a duplicate one?
It is recommended to mark each request with a unique identifier. In this way when you change the identifier, you will be able to execute requests, even if they contain the same data.
There are 2 ways to do it:
Change the data in the request body or URL, for example, &request_id=12345
Add the header that contains the request identifier in any form, for example X-Request-ID: a0fe37f2-b4e0-4e28-a328-4ec7461604fc
API requests that have deduplication
All requests that modify data or activation / launch of entities are checked for repetitions:
Category | Request |
---|---|
Profiles | /v1.0/lists/:list_id/lead/unconfirm /v1.0/lists/:list_id/lead/unsubscribe /v1.0/lists/:list_id/lead/tags_add /v1.0/lists/:list_id/lead/tags_remove /v1.0/lists/:list_id/lead/subscribe /v1.0/lists/:list_id/lead/complain /v1.0/lists/:list_id/suspend_all /v1.0/lists/:list_id/unsuspend_all /v1.0/lists/:list_id/import |
Integrations | /integrations/lpgenerator/profile_import /integrations/tilda/profile_import /integrations/any/profile_import |
Suppression lists | /v1.1/suppresses/add /v1.1/suppresses/update /v1.1/suppresses/domain_add /v1.1/suppresses/domains_add /v1.1/suppresses/domain_remove /v1.1/suppresses/domains_remove /v1.1/suppresses/email_add /v1.1/suppresses/emails_add /v1.1/suppresses/email_remove /v1.1/suppresses/emails_remove /v1.1/suppresses/phone_add /v1.1/suppresses/phones_add /v1.1/suppresses/phone_remove /v1.1/suppresses/phones_remove |
Subscriptions | /v1.1/subscriptions/set /v1.1/subscriptions/suspend_all /v1.1/subscriptions/unsuspend_all /v1.1/subscribers/import /v1.1/subscribers/update |
Segments | /v1.1/segments/add /v1.1/segments/update /v1.1/segments/refresh_counters |
Campaigns | /v1.1/campaigns/deactivate /v1.1/campaigns/activate /v1.1/campaigns/clone |
Trigger campaigns | /v1.1/campaigns/triggers/add /v1.1/campaigns/triggers/update /v1.1/campaigns/triggers/start /v1.1/campaigns/triggers/import_and_start /v1.1/campaigns/triggers/clone |
Broadcasts | /v1.1/campaigns/broadcasts/add /v1.1/campaigns/broadcasts/update /v1.1/campaigns/broadcasts/start |
Regular campaigns | /v1.1/campaigns/regulars/add /v1.1/campaigns/regulars/update /v1.1/campaigns/regulars/start |
Senders | /v1.1/admin-guide/senders/queue/hold /v1.1/admin-guide/senders/queue/unhold /v1.1/admin-guide/senders/queue/purge /v1.1/admin-guide/senders/update /v1.1/admin-guide/senders/add_to_account /v1.1/admin-guide/senders/add /v1.1/admin-guide/vsenders/add /v1.1/admin-guide/vsenders/update /v1.1/admin-guide/vsenders/clone |
Nodes | /v1.1/admin-guide/nodes/mta/start /v1.1/admin-guide/nodes/mta/stop |
Static segments | /v1.1/profiles/segstatic/add /v1.1/profiles/segstatic/remove |
Profiles | /v1.1/profiles/add /v1.1/profiles/update /v1.1/profiles/import /v1.1/profiles/add_batch /v1.1/profiles/update_batch /v1.1/profiles/import_batch |
Promocodes | /v1.1/promocodes/attach /v1.1/promocodes/activate /v1.1/promocodes/import /v1.1/promocodes/detach /v1.1/promocodes/update |
Relations | /v1.1/relations/attach /v1.1/relations/detach /v1.1/relations/edit /v1.1/relations/strengthen |
Profiles databases | /v1.1/databases/wipe /v1.1/databases/refresh_counters |
Virtual senders | /v1.1/vsenders/add /v1.1/vsenders/update /v1.1/vsenders/clone |
Scenarios | /v1.1/workflows/start /v1.1/workflows/import_and_start |
Push event registration | /v1.1/pushes/post_events /v1.1/pushes/crypto_post_events |
Message templates | /v1.1/templates/add /v1.1/templates/update /v1.1/templates/delete |
Resources | /v1.1/resources/push_subscribe /v1.1/resources/refresh_counters |
Data tables | /v1.1/datatables/query_templates/update /v1.1/datatables/query_templates/delete /v1.1/datatables/query_templates/add /v1.1/datatables/query_segments/update /v1.1/datatables/query_segments/delete /v1.1/datatables/query_segments/add |