Skip to main content
Solved

Enrich 500k to 1 million + profiles via API (Rate limit help)

  • June 4, 2025
  • 7 replies
  • 116 views

jimk
Active Contributor II
Forum|alt.badge.img+5
  • Active Contributor II

Hi everyone,

We’ve built an integration with Klaviyo that enriches profiles and want to batch enrich between 500,000 to over 1 million profiles. We’re aware of Klaviyo’s API rate limits and want to ensure we follow best practices to avoid throttling or request failures. A few questions:

  1. What’s the most scalable and compliant way to enrich a high volume of profiles via the API?

  2. Are there preferred patterns (e.g., batching, queuing, or time-based spacing) that Klaviyo recommends?

  3. Do larger partners ever get rate limit adjustments for bulk data use cases like this?

Any guidance, references, or tips from others who’ve done large-scale enrichment would be much appreciated.

Thanks in advance!

Best answer by ross_hopkins

Hi ​@jimk 

Thanks for asking the community!

Have you read through the documentation here?: https://developers.klaviyo.com/en/docs/rate_limits_and_error_handling

The endpoint you would use is documented here: https://developers.klaviyo.com/en/reference/bulk_import_profiles (where the endpoint is 

https://a.klaviyo.com/api/profile-bulk-import-jobs).

In summary, that endpoint allows you to make 10,000 requests an hour. The response received will include headers that will inform you how close you are to hitting the rate limit, meaning whatever process you develop could pause depending on what is returned - 

  • RateLimit–Limit: The number of requests allowed per time period
  • RateLimit-Remaining: The approximate number of requests remaining within a window
  • RateLimit-Reset: Number of seconds remaining before current window resets

Does that help you get started with planning out the enrichment?

Thanks,

Ross

7 replies

ross_hopkins
Expert Problem Solver II
Forum|alt.badge.img+14
  • 2025 Champion
  • Answer
  • June 5, 2025

Hi ​@jimk 

Thanks for asking the community!

Have you read through the documentation here?: https://developers.klaviyo.com/en/docs/rate_limits_and_error_handling

The endpoint you would use is documented here: https://developers.klaviyo.com/en/reference/bulk_import_profiles (where the endpoint is 

https://a.klaviyo.com/api/profile-bulk-import-jobs).

In summary, that endpoint allows you to make 10,000 requests an hour. The response received will include headers that will inform you how close you are to hitting the rate limit, meaning whatever process you develop could pause depending on what is returned - 

  • RateLimit–Limit: The number of requests allowed per time period
  • RateLimit-Remaining: The approximate number of requests remaining within a window
  • RateLimit-Reset: Number of seconds remaining before current window resets

Does that help you get started with planning out the enrichment?

Thanks,

Ross


Forum|alt.badge.img+3
  • Contributor IV
  • June 5, 2025

Does this https://a.klaviyo.com/api/profile-bulk-import-jobs allow us to update the custom properties of already existing profiles in bulk too?   

 


jimk
Active Contributor II
Forum|alt.badge.img+5
  • Author
  • Active Contributor II
  • June 5, 2025

Thanks ​@ross_hopkins.  I should have let ​@kenw232 ask the question originally.  He’s our lead engineer and knows more about our current and future use-cases and needs.  I’ll butt out now.  Thanks guys. 

Cheers…...Jim


anthony_laneve
Klaviyo Employee

Hi ​@jimk and ​@kenw232

Great questions! Have you looked into importing the data via SFTP? It’s not an API, but you should be able to upload files programmatically and it should easily handle the number of profile updates you’re talking about. 

Klaviyo can process up to 6 million profile updates per hour without list subscriptions or up to 1 million per hour with list subscriptions. 

https://developers.klaviyo.com/en/docs/sftp_import_tool

 

Thanks, and have a great rest of your day

Anthony 

 


jimk
Active Contributor II
Forum|alt.badge.img+5
  • Author
  • Active Contributor II
  • June 5, 2025

Thank you ​@anthony_laneve.  Super helpful.  Real-time and automoted is ideal and preferred, but this might be an option.  ​@kenw232 will this work and with custom properties?  We’d have to aggregate all data into a CSV from our preprossessing routines.  Let’s discuss offline.   Thanks again Anthony! 


ross_hopkins
Expert Problem Solver II
Forum|alt.badge.img+14
  • 2025 Champion
  • June 6, 2025

Hi ​@jimk ​@kenw232 

Confirming that you can set custom properties via that API endpoint (https://developers.klaviyo.com/en/reference/bulk_import_profiles).

Expand the Attributes object and scroll down to Properties. That’s where you can test out how custom profile properties are to be added to the payload.

Thanks,

Ross


jimk
Active Contributor II
Forum|alt.badge.img+5
  • Author
  • Active Contributor II
  • June 6, 2025

Terrific.  Thanks for verifying ​@ross_hopkins.  Very helpful

Best….Jim