API reference

SDKs

1 min read

The API is plain HTTP, so any language with a JSON client can talk to it. We maintain official SDKs for TypeScript and Python that wrap auth + retries + typed responses.

TypeScript / JavaScript

npm install @designdrop/sdk
import { Designdrop } from '@designdrop/sdk';
 
const dd = new Designdrop({ token: process.env.DESIGNDROP_TOKEN });
 
// Submit + poll a generation job
const { jobId } = await dd.jobs.create({
  type: 'extract_design_system',
  input: { url: 'https://stripe.com' },
});
const result = await dd.jobs.waitFor(jobId);
console.log(result.designSystem);

waitFor polls every 400ms, respects rate-limit headers, and returns the terminal state (succeeded or failed). Use dd.jobs.get(jobId) if you want to drive your own polling.

The SDK ships full TypeScript types — every endpoint's request and response is checked at compile time.

Python

pip install designdrop
from designdrop import Designdrop
 
dd = Designdrop(token="...")
job_id = dd.jobs.create(type="extract_design_system", input={"url": "https://stripe.com"})
result = dd.jobs.wait_for(job_id)
print(result.design_system)

Same surface as the TypeScript SDK, snake_cased per Python convention.

Community SDKs

The wire format is documented enough that community ports work. Known maintained ports:

These aren't first-party but tend to track our official SDKs closely.

Rolling your own

If you'd rather call the API directly, every endpoint is documented in Endpoints with request + response shapes. The wire protocol is stable; we'll deprecate fields with at least a 6-month sunset.