SDKs as a Convenience Layer Over REST
CoreDistinguish SDKs from raw REST and sync/async/streaming transport · Difficulty 1/5
Explanation
The SDK Wraps the REST API
Claude is most commonly consumed through the official Python and TypeScript SDKs. These SDKs are a convenience layer, not a separate API surface -- underneath them are ordinary HTTPS + JSON calls to the same REST API. The SDK handles:
- Authentication (API key management)
- Request/response serialization (turning SDK objects into JSON and back)
- Typed errors (structured exceptions instead of raw HTTP status codes)
- Retries (automatic backoff/retry on transient failures)
- Streaming helpers (consuming a server-sent event stream as an iterator)
You Can Always Drop to Raw REST
Because the SDK is a convenience layer and not a different protocol, a developer can always bypass it and make the equivalent raw HTTPS + JSON request directly -- useful in environments without an official SDK, or when fine-grained control over the request is needed.
Sync vs. Async Clients
Both SDKs typically offer a synchronous client (each call blocks until it completes) and an asynchronous client (calls can be issued concurrently). Use the async client to parallelize independent, I/O-bound calls -- for example, issuing several unrelated model calls concurrently rather than awaiting each one in sequence -- which reduces total wall-clock time without changing token cost.
Common exam traps
- Treating the SDK as a fundamentally different API from REST, rather than a typed convenience wrapper over the same HTTPS + JSON calls.
- Assuming a sync client can't be parallelized at all, or that switching to async changes billing -- async changes concurrency/wall-clock time, not token cost.
Key Takeaways
- The official SDKs (Python, TypeScript) are a convenience layer over the REST API -- handling auth, serialization, typed errors, retries, and streaming
- Raw HTTPS + JSON calls to the same API are always available as a fallback to the SDK
- Async clients parallelize independent, I/O-bound calls; sync clients block per call
- Sync vs. async affects wall-clock time and concurrency, not token cost
Related Concepts