SDK
Also known as: Software Development Kit, Client library
Quick definition
An SDK (Software Development Kit) is a packaged collection of code, tools, and documentation that lets developers integrate with an API in a specific programming language without writing low-level HTTP requests directly. Most modern APIs ship official SDKs in popular languages (TypeScript, Python, Go) for faster integration.
What is an SDK?
An SDK (Software Development Kit) is a packaged client library that wraps an HTTP API in a specific programming language, exposing API operations as native functions or method calls. Instead of constructing HTTP requests, parsing responses, and handling auth headers manually, you import the SDK, instantiate a client with your API key, and call methods like `client.posts.create({ ... })`. The SDK handles the underlying HTTP transport, JSON serialization, error handling, retry logic, and (often) type safety.
Most serious APIs ship official SDKs in popular languages — TypeScript / JavaScript (npm), Python (PyPI), Go, Ruby, Java, .NET. CodivUpload publishes both TypeScript and Python SDKs, both auto-generated from the OpenAPI specification. Stripe famously maintains hand-written SDKs in 7+ languages (a higher quality bar but more maintenance burden). Most modern APIs choose auto-generation for speed and consistency.
SDK vs raw HTTP
SDKs are not strictly necessary — every API can be called via raw HTTP (curl, fetch, requests). But SDKs offer four practical advantages. (1) Type safety — TypeScript SDKs catch wrong field names at compile time; raw HTTP would error at runtime. (2) Auto-completion — IDEs surface available methods and parameters. (3) Ergonomic auth — SDKs handle Bearer tokens, header construction, and signature schemes automatically. (4) Built-in retries — production-grade SDKs implement exponential backoff for 429 and 5xx responses. The tradeoff: another dependency in your project, plus the SDK's own bugs to potentially work around.
The right call: use the SDK when one exists in your language and is well-maintained; drop to raw HTTP when no SDK is available, when you need a feature the SDK doesn't expose, or when SDK overhead is a real performance concern.
Auto-generated vs hand-written SDKs
Two production approaches. (1) Auto-generated — the SDK is generated from the API's OpenAPI spec via tools like openapi-generator, swagger-codegen, or Stainless. New API features automatically appear in the SDK on the next release. Trade-off: less ergonomic interfaces, larger generated code. (2) Hand-written — engineers maintain the SDK manually, optimizing for ergonomics and idioms native to each language. Trade-off: higher quality interfaces, but slower to update when the API changes.
Most modern startups (CodivUpload, Postiz, Resend) use auto-generation for breadth and speed. Mature companies (Stripe, GitHub) use hand-written for the developer-experience polish.
Use the CodivUpload TypeScript SDK
typescript
// npm install codivupload
import { Codivupload } from 'codivupload';
const client = new Codivupload({
apiKey: process.env.CODIVUPLOAD_API_KEY!, // never hardcode
});
// Type-safe call — TypeScript catches wrong field names at compile time
const post = await client.posts.create({
profile_name: 'main',
platforms: ['tiktok', 'instagram', 'youtube'],
post_type: 'reel',
media_urls: ['https://cdn.example.com/launch.mp4'],
description: 'Behind the scenes of build week.',
scheduled_date: '2026-05-08T14:00:00Z',
tiktok_privacy_level: 0,
instagram_media_type: 'REELS',
});
console.log(post.id, post.scheduled_for);
// Auto-generated from OpenAPI — every API parameter is exposed.
// Same SDK in Python (codivupload on PyPI) with identical method names.Frequently asked questions
Should I use the SDK or call the API directly?+
Use the SDK if one exists in your language. SDKs handle auth, retries, and type safety in a way raw HTTP doesn't. Drop to raw HTTP when no SDK exists or when you need features the SDK doesn't expose.
Are auto-generated SDKs as good as hand-written ones?+
Different tradeoffs. Auto-generated SDKs are broader (every API endpoint covered), faster to update, but less ergonomic. Hand-written SDKs are more polished but slower to evolve. Most users don't notice the difference for typical use cases.
How do I pin SDK versions?+
Use semantic versioning in your package.json or requirements.txt — pin to a specific version (1.2.3) or a minor-version range (^1.2.0). Avoid pinning to 'latest' in production; SDK breaking changes can ship unexpectedly.
Do SDKs work with MCP and AI Skills?+
SDKs are for direct programmatic integration. MCP and Skills are for AI-agent-driven integration. They serve different audiences but call the same underlying API. CodivUpload publishes all three: TypeScript + Python SDKs, MCP server, AI Skills npm package.
TypeScript + Python SDKs auto-generated from OpenAPI
npm install codivupload (TypeScript) or pip install codivupload (Python). Auto-regenerated on every API release. Type-safe, retry-aware, idiomatic.
See SDK docsRead next
Related glossary terms