Skip to main content

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:

CategoryRequest
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