Skip to content

Commit 3198134

Browse files
authored
Merge pull request #1005 from IABTechLab/swi-UID2-6642-remove-identity-map-restriction
UID2-6642 Remove Identity Map restrictions and add Rate Limiting section
2 parents 0aac52c + 571bc25 commit 3198134

4 files changed

Lines changed: 40 additions & 11 deletions

File tree

docs/endpoints/post-identity-map-v2.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,20 @@ This documentation is for version 2 of this endpoint, which is not the latest ve
2323
If you're using an earlier version, we recommend that you upgrade as soon as possible, to take advantage of improvements. For migration guidance, see [Migration from v2 Identity Map](post-identity-map.md#migration-from-v2-identity-map). For deprecation information, see [Deprecation Schedule: Endpoint Versions](../ref-info/deprecation-schedule.md#endpoint-versions).
2424
:::
2525

26-
## Batch Size and Request Parallelization Requirements
26+
## Batch Size Requirements
2727

2828
Here's what you need to know:
2929

3030
- The maximum request size is 1MB.
31-
- To map a large number of email addresses, phone numbers, or their respective hashes, send them in *sequential* batches with a maximum batch size of 5,000 items per batch.
32-
- Unless you are using a <Link href="../ref-info/glossary-uid#gl-private-operator">Private Operator</Link>, do not send batches in parallel. In other words, use a single HTTP connection and send batches of hashed or unhashed <Link href="../ref-info/glossary-uid#gl-dii">directly identifying information (DII)</Link> values consecutively, without creating multiple parallel connections.
31+
- To map a large number of email addresses, phone numbers, or their respective hashes, send them in batches with a maximum of 5,000 items per batch.
3332
- Be sure to store mappings of email addresses, phone numbers, or their respective hashes.<br/>Not storing mappings could increase processing time drastically when you have to map millions of email addresses or phone numbers. Recalculating only those mappings that actually need to be updated, however, reduces the total processing time because only about 1/365th of raw UID2s need to be updated daily. See also [Advertiser/Data Provider Integration Overview](../guides/integration-advertiser-dataprovider-overview.md) and [FAQs for Advertisers and Data Providers](../getting-started/gs-faqs.md#faqs-for-advertisers-and-data-providers).
3433

34+
## Rate Limiting
35+
36+
To ensure fair usage and platform stability, the `POST /identity/map` endpoint enforces rate limits to safeguard against bursts of incoming traffic. If you send many requests in quick succession, you might receive `429` error responses.
37+
38+
To handle rate limit errors gracefully, we recommend implementing [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) with random jitter when retrying requests. To maximize throughput within the limit, use the maximum batch size of 5,000 items per request rather than sending many small requests.
39+
3540
## Request Format
3641

3742
`POST '{environment}/v2/identity/map'`
@@ -203,5 +208,6 @@ The following table lists the `status` property values and their HTTP status cod
203208
| `success` | 200 | The request was successful. The response will be encrypted. |
204209
| `client_error` | 400 | The request had missing or invalid parameters.|
205210
| `unauthorized` | 401 | The request did not include a bearer token, included an invalid bearer token, or included a bearer token unauthorized to perform the requested operation. |
211+
| N/A | 429 | Too many requests to this endpoint. Wait and retry using exponential backoff. |
206212

207-
If the `status` value is anything other than `success`, the `message` field provides additional information about the issue.
213+
If the `status` value is anything other than `success`, the `message` field provides additional information about the issue. Note: 429 responses do not include a JSON response body.

docs/endpoints/post-identity-map.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,20 @@ This documentation is for the latest version of this endpoint, version 3.
2323

2424
If needed, documentation is also available for the previous version: see [POST /identity/map (v2)](post-identity-map-v2.md).
2525

26-
## Batch Size and Request Parallelization Requirements
26+
## Batch Size Requirements
2727

2828
Here's what you need to know:
2929

3030
- The maximum request size is 1MB.
31-
- To map a large number of email addresses, phone numbers, or their respective hashes, send them in *sequential* batches with a maximum batch size of 5,000 items per batch.
32-
- Unless you are using a <Link href="../ref-info/glossary-uid#gl-private-operator">Private Operator</Link>, do not send batches in parallel. In other words, use a single HTTP connection and send batches of hashed or unhashed <Link href="../ref-info/glossary-uid#gl-dii">directly identifying information (DII)</Link> values consecutively, without creating multiple parallel connections.
31+
- To map a large number of email addresses, phone numbers, or their respective hashes, send them in batches with a maximum of 5,000 items per batch.
3332
- Be sure to store mappings of email addresses, phone numbers, or their respective hashes.<br/>Not storing mappings could increase processing time drastically when you have to map millions of email addresses or phone numbers. Recalculating only those mappings that actually need to be updated, however, reduces the total processing time because only about 1/365th of UID2s need to be updated daily. See also [Advertiser/Data Provider Integration Overview](../guides/integration-advertiser-dataprovider-overview.md) and [FAQs for Advertisers and Data Providers](../getting-started/gs-faqs.md#faqs-for-advertisers-and-data-providers).
3433

34+
## Rate Limiting
35+
36+
To ensure fair usage and platform stability, the `POST /identity/map` endpoint enforces rate limits to safeguard against bursts of incoming traffic. If you send many requests in quick succession, you might receive `429` error responses.
37+
38+
To handle rate limit errors gracefully, we recommend implementing [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) with random jitter when retrying requests. To maximize throughput within the limit, use the maximum batch size of 5,000 items per request rather than sending many small requests.
39+
3540
## Request Format
3641

3742
`POST '{environment}/v3/identity/map'`
@@ -197,9 +202,14 @@ The following table lists the `status` property values and their HTTP status cod
197202
| `success` | 200 | The request was successful. The response will be encrypted. |
198203
| `client_error` | 400 | The request had missing or invalid parameters. |
199204
| `unauthorized` | 401 | The request did not include a bearer token, included an invalid bearer token, or included a bearer token unauthorized to perform the requested operation. |
205+
| N/A | 429 | Too many requests to this endpoint. Wait and retry using exponential backoff. |
200206

201207
If the `status` value is anything other than `success`, the `message` field provides additional information about the issue.
202208

209+
:::note
210+
429 responses do not include a JSON response body.
211+
:::
212+
203213
## Migration from v2 Identity Map
204214

205215
The following sections provide general information and guidance for migrating to version 3 from earlier versions, including:

docs/getting-started/gs-faqs.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,6 @@ The system should follow the [email normalization rules](gs-normalization-encodi
219219

220220
Yes. Not storing mappings might increase processing time drastically when you have to map millions of email addresses or phone numbers. Recalculating only those mappings that actually need to be updated, however, reduces the total processing time because only about 1/365th of raw UID2s need to be updated daily.
221221

222-
:::important
223-
Unless you are using a <Link href="../ref-info/glossary-uid#gl-private-operator">Private Operator</Link>, you must map email addresses, phone numbers, or hashes consecutively, using a single HTTP connection, with a maximum batch size of 5,000 items per batch. In other words, do your mapping without creating multiple parallel connections.
224-
:::
225-
226222
#### How should I handle user opt-outs?
227223

228224
When a user opts out of UID2-based targeted advertising through the [Transparency and Control Portal](https://www.transparentadvertising.com/), the opt-out signal is sent to DSPs and publishers, who handle opt-outs at bid time. We recommend that advertisers and data providers regularly check whether a user has opted out, via the [POST&nbsp;/identity/map](../endpoints/post-identity-map.md) endpoint.

docs/ref-info/updates-doc.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,23 @@ Use the Tags toolbar to view a subset of documentation updates.
2424

2525
The following documents were released in the first quarter of 2026.
2626

27+
<CustomTagsContainer tags="Endpoints">
28+
29+
### Rate Limiting and Parallel Request Updates for POST /identity/map
30+
31+
April 1, 2026
32+
33+
The [POST&nbsp;/identity/map](../endpoints/post-identity-map.md) endpoint documentation has been updated with the following changes:
34+
35+
- Added a new [Rate Limiting](../endpoints/post-identity-map.md#rate-limiting) section documenting that the endpoint enforces rate limits to safeguard against bursts of incoming traffic.
36+
- Removed the previous recommendation to send batches sequentially over a single HTTP connection.
37+
38+
These changes apply to both [v2](../endpoints/post-identity-map-v2.md) and [v3](../endpoints/post-identity-map.md) endpoints.
39+
40+
<!-- UID2-6642 -->
41+
42+
</CustomTagsContainer>
43+
2744
<CustomTagsContainer tags="Endpoints, SDKs, Opt-Out">
2845

2946
### Removal of optout_check Parameter

0 commit comments

Comments
 (0)