Most Claude-integrated applications are one of a few recognisable shapes: a synchronous chat turn (one request, one response, low latency budget, a human waiting), a batch/offline job processing many independent items where per-item latency doesn't matter but throughput and cost do, and an agentic loop (Domain 3 goes deeper on this) where Claude drives multiple tool calls toward a goal with no fixed number of turns. Picking the wrong shape shows up as either a sluggish chat UI built on top of a batch-style flow, or an over-engineered agent loop for what was really a one-shot classification task with no dependency between items.
Where the Batches API fits
For the batch shape specifically, a dedicated batch-processing endpoint exists for exactly this: submit many requests together as a single job, get results back asynchronously once the whole batch completes, at a meaningfully lower cost per request than the same volume sent as individual synchronous calls. It trades latency (results arrive later, not instantly, and a batch can take up to a set processing window rather than seconds) for throughput and price — the right trade for a nightly summarisation job, a large one-time reclassification of historical data, or a periodic content-moderation sweep, and the wrong one for a live user-facing chat where someone is staring at a loading spinner.
The decision isn't just latency
Two more questions cut through most ambiguous cases. First: does any step depend on the output of a previous step? If yes, that's the agentic shape's territory, even if the overall interaction feels quick to a user — a single "look this up and summarise it" request might still be one synchronous call, but "look this up, then decide what to look up next based on what you found" is a loop. Second: are the items genuinely independent of each other? Ten thousand support tickets that don't reference one another are a batch; ten thousand tickets where resolving one changes how you'd triage the next are not.
Common exam distractor
An answer suggesting an agentic loop for a task that's really independent per-item classification (no dependency between items, no multi-step reasoning needed) is over-engineering — a straightforward batch of single calls is the simpler, cheaper, more reliable fit. The exam rewards recognising when the simpler shape is correct, not defaulting to the most sophisticated-sounding one.
Mixed shapes in one product
A single product commonly uses more than one shape for different features: a live chat surface (synchronous) that occasionally hands off a long-running research task to an agentic loop running in the background, while a separate nightly job re-scores every conversation from the day before using the Batches API. Recognising that these are three different problems, each best solved by a different shape, rather than trying to force one architecture to cover all three, is itself the skill being tested — not memorising a single "correct" pattern.
Where the Agent SDK fits versus the raw Messages API
For the agentic shape specifically, you have a further choice: hand-roll the loop directly against the Messages API (as in Lesson 1.5), or build on a higher-level framework like the Claude Agent SDK, which provides the loop, tool-execution wiring, and hook points (Domain 3 covers hooks in depth) as a maintained layer instead of code you own and debug yourself. The raw-API loop gives you full control and is the right choice when your application's needs are simple or highly custom; the Agent SDK trades some of that low-level control for a faster path to a production-grade loop with built-in patterns for the exact failure modes — premature termination, unkeyed tool results, unbounded iteration — this domain covers. The exam expects you to recognise both exist and reason about which fits a described scenario, not to treat one as universally correct.
A worked comparison
Consider three requests to the same team in one week: (1) "users should get an answer to a question about their account within two seconds" — synchronous, low latency budget, single independent turn; (2) "re-tag every support ticket from the last year with an updated category taxonomy" — batch, no per-item latency requirement, items independent of each other; (3) "investigate this production incident by pulling logs, correlating timestamps across three services, and drafting a root-cause summary" — agentic, because the next tool call genuinely depends on what the previous one returned and the number of steps isn't known in advance. Same team, same underlying model, three different architectures, because the shape follows the requirements, not the other way around.
Key concept
When a scenario describes a task, ask two questions before picking an architecture: does a human need this result right now, and does any step depend on what an earlier step returned? Those two answers, not the sophistication of the tooling involved, determine the correct shape.