Home / Glossary / SDK (Software Development Kit)
Tech & ITSDK (Software Development Kit)
By Sitraka Forler · Lecturer, Durham Business SchoolUpdated 13 September 2026 About this site
A kit of libraries, tools, documentation and samples for building on one platform.
An SDK wraps a platform in ready-made code for your language, so you call functions instead of doing low-level work. Cloud providers ship SDKs around their application programming interface (API): boto3, the Amazon Web Services SDK for Python, lists your storage buckets with one list_buckets() call. Beginners blur the terms: the API is the interface, a library is code you import, and an SDK is the kit around them.
The intuition
An SDK, or software development kit, is the bundle a company ships to help you build on its platform or service: client libraries for your programming language, documentation, command-line tools, code samples and sometimes test tools such as emulators. Android apps are built with the Android SDK, and Python code talks to Amazon Web Services through boto3, the AWS SDK for Python. The point is to spare you from assembling the plumbing yourself.
Most SDKs for online services wrap that service's API (application programming interface). The API is the contract: which URLs exist, what to send and what comes back. The SDK is code that honours the contract for you. One method call becomes a web request over HTTP (Hypertext Transfer Protocol), and the SDK builds the URL, adds authentication, encodes the data, turns the response into objects, often retries brief network failures and raises a clear exception when something goes wrong.
An SDK is also a dependency, with its own versions and release notes. Pin the version, upgrade deliberately, and expect that a brand-new feature can appear in the raw API before the SDK supports it. Raw HTTP still has its place, for a one-off call or in a language with no official SDK, but for code you will maintain the official SDK is usually the safer choice.
Example
# python3 -m pip install boto3 (boto3 is the Amazon Web Services SDK for Python)
import boto3
# S3 is AWS cloud storage; credentials come from your AWS setup, never from the code
s3 = boto3.client("s3")
for bucket in s3.list_buckets()["Buckets"]:
print(bucket["Name"])Create a Stripe test customer twice: raw HTTP, then the official Python SDK
- Set the scene: you need to create a customer in Stripe's test mode. Keep the test secret key out of your code by storing it in an environment variable: export STRIPE_API_KEY=YOUR_API_KEY, replacing YOUR_API_KEY with the test secret key from your Stripe dashboard (it starts with sk_test_).
- Raw HTTP with curl: curl https://api.stripe.com/v1/customers -u "$STRIPE_API_KEY:" -d email=jane@example.com. The -d flag adds a request body and makes the request a POST; curl sends that body as form data (key=value pairs), not as JSON (JavaScript Object Notation, a plain-text data format), and form data is what Stripe's API expects. The -u flag sends the key as the username with an empty password. With a valid key, Stripe replies with JSON whose "object" is "customer" and whose "id" starts with cus_.
- Raw HTTP in Python (after pip install requests, then import os and requests): r = requests.post("https://api.stripe.com/v1/customers", auth=(os.environ["STRIPE_API_KEY"], ""), data={"email": "jane@example.com"}, timeout=10). Everything else is now your job: check r.status_code, parse r.json(), and decide what to do about a bad key or a timeout. With an invalid key, you get status 401 and an error object, and nothing raises unless you call r.raise_for_status().
- Install the official SDK: pip install stripe.
- Do the same task with the SDK: import os and stripe, set stripe.api_key = os.environ["STRIPE_API_KEY"], then customer = stripe.Customer.create(email="jane@example.com") and print(customer.id). The SDK built the URL, encoded the body, added the key and turned the JSON into an object with ordinary attributes.
- Break it on purpose: set STRIPE_API_KEY to the literal text YOUR_API_KEY and run the script again. The SDK sends the same POST to /v1/customers, receives the same 401, and raises stripe.AuthenticationError, so you handle it with try/except instead of inspecting status codes by hand.
The SDK sends the same HTTP request you could write yourself, but it also handles authentication, parsing and errors, and that saved work is why teams reach for the official SDK.
Common pitfalls
- Hard-coding the API key in the script: quick-start samples often show a key inline for brevity, but a key committed to Git must be treated as leaked and rotated. Read it from an environment variable or a secrets manager instead.
- Installing a look-alike package: anyone can publish to PyPI (the Python Package Index, where pip installs from) or npm (the JavaScript equivalent), and unofficial or typo-squatted packages exist. Install exactly the package named in the provider's own documentation, and check that its source repository belongs to the provider.
- Leaving the version unpinned: a fresh pip install on a server can pull a newer major version than the one on your laptop, and major versions can rename methods or change defaults. Pin the version in requirements.txt and read the changelog before upgrading.
- Copying examples from an old blog post: method names change between major versions, so code that once worked can fail with an AttributeError today. Check examples against the documentation for the version you have installed (pip show stripe prints it).
- Assuming the SDK removes the service's limits: rate limits, permissions and usage costs belong to the service, not the library. The SDK makes a rate-limit error easier to handle, but it does not stop it happening.
Frequently asked questions
What is the difference between an SDK and an API?
An API (application programming interface) is the contract: the operations a service offers and the requests and responses it accepts. An SDK (software development kit) is a bundle of libraries, documentation and tools for a platform or language, and it often wraps an API so you call ordinary functions instead of building web requests yourself.
What does an SDK usually include?
An SDK usually includes client libraries for one or more programming languages, reference documentation, code samples and often command-line tools. Platform SDKs such as the Android SDK also ship build tools, debugging tools and an emulator, so you can test an app without a physical device.
Do I need an SDK to use an API?
No. Any web API can be called with plain HTTP requests, from curl or a library such as Python's requests. An SDK is a convenience layer that handles authentication, request building, response parsing and error handling for you. It pays off most for services you call often or that need complex request signing, such as Amazon Web Services (AWS).
What is an example of an SDK?
Well-known examples are boto3, the Python SDK from Amazon Web Services (AWS), used with services such as Amazon S3 storage; the official stripe library for taking payments; and the Android SDK for building mobile apps. Each is published by the company that runs the platform, which is what makes it an official SDK.