Skip to main content
cloro offers two ways to call the API: synchronous requests, where you wait for the result on the same connection, and asynchronous requests, where you submit a task and retrieve the result later.

Synchronous requests

Synchronous endpoints return the full result in the same HTTP response, so the request has to fit inside your client’s timeout. See Synchronous requests for the request and response structure, common parameters, optional response formats, and code examples.

Asynchronous requests

Asynchronous endpoints accept a task, return a taskId immediately, and process the work in the background. You retrieve the result via webhook (recommended) or by polling. See Asynchronous requests for the two-step submit-and-fetch flow, task states, queue limits, and request prioritization.

When to use which

Common questions

Why are my requests slower than expected?

Latency comes from three places:
  • Provider response time (primary factor): the upstream provider’s processing time varies with their load (peak usage times) and geographic region
  • Queue depth (async requests only): set by your plan’s concurrency limit and your current queue size
  • Geographic routing: requests route through region-specific infrastructure, which may differ in latency depending on the country parameter you specify
Upgrading your plan raises concurrency, which drains the async queue faster. To measure latency, see Can I read the request latency from the API response?.

Can I get faster processing for high-volume workloads?

Yes — the larger the plan, the greater the concurrency assigned to it. For async requests, higher concurrency means more tasks processed at once and shorter queue waits. For sync requests, it means you can send more simultaneous requests without hitting limits.

How do I submit many requests in one call?

Use the batch endpoint. It takes up to 500 tasks in a single HTTP request, so you avoid the overhead of 500 round trips, and it validates each task independently — one bad task doesn’t block the rest. You can hold up to 100,000 tasks in the queue at a time, and cloro handles queuing, so you don’t manage concurrency limits yourself. Retrieve results with webhooks or polling. For which pattern to use once you’re submitting at volume — async with webhooks, or sync with concurrent workers — see the concurrency guide, which has code examples for both.