Skip to main content
UMW enforces per-organization rate limits on all API endpoints to ensure platform stability and fair access for every integration. Limits are applied using a sliding one-minute window and are tracked independently per organization — not per API key. Understanding your limit tier, monitoring the rate limit headers on every response, and implementing proper retry logic are essential steps for building a production-grade integration.

Rate Limit Tiers

Your organization’s limit tier is determined at account provisioning. Contact your UMW account manager if you need to discuss an upgrade. The burst limit represents the maximum number of requests that can be sent in any single second before the platform begins returning 429 responses, even if you have remaining quota in the broader one-minute window. Design your client to spread requests evenly rather than issuing them all simultaneously.

Rate Limit Response Headers

The UMW API returns rate limit metadata on every response, including successful ones. Inspect these headers proactively to throttle your client before a 429 occurs.

Sample Response Headers

When your request is rejected:

Handling 429 Responses

When you receive a 429 Too Many Requests response, your client should pause for the number of seconds specified in the Retry-After header before retrying the request. For robustness against transient spikes, implement exponential backoff with jitter — this prevents multiple clients from resuming simultaneously and causing a follow-on burst. The following Python example demonstrates a safe retry pattern:

Best Practices

Following these guidelines will help you stay well within your rate limit allowance and build a more resilient integration.
  • Batch requests where possible. Several UMW endpoints accept arrays of items in a single request. For example, rather than creating ten tracks with ten separate POST /v1/tracks calls, use the bulk track creation endpoint to submit all tracks in one request.
  • Cache GET responses. Catalog metadata, territory lists, and store configurations change infrequently. Cache GET responses locally with a reasonable TTL (e.g., 5–15 minutes) to avoid redundant read requests that consume quota without producing new information.
  • Use webhooks instead of polling. Polling GET /v1/deliveries/{id} or GET /v1/assets/{id} in a tight loop is one of the most common causes of unnecessary rate limit consumption. Subscribe to the corresponding webhook events (delivery.completed, asset.ready, etc.) and let the UMW platform push status updates to your endpoint instead.
  • Monitor RateLimit-Remaining proactively. Instrument your HTTP client to log or alert when RateLimit-Remaining falls below 20% of RateLimit-Limit. Reacting before you hit 0 avoids any disruption to time-sensitive workflows.
  • Serialize non-critical writes. If your workflow involves bulk ingestion (e.g., importing a back-catalog), introduce deliberate delays between requests during off-peak hours rather than saturating your quota all at once.

The UMW sandbox environment operates under relaxed rate limits designed to support rapid development and testing. Requests made to https://sandbox-api.umwrecordingsinc.com do not count toward your production rate limit quota. Always validate retry and backoff logic against the sandbox before deploying to production.