Developer Docs
Build on the Developers Digest platform
One API key, one credit balance. Generate images and voice, count tokens, resolve favicons, query model pricing, and pull the Skill, Agent, and Design libraries - over REST, MCP, or the dd CLI.
Overview
What you can build
The platform exposes three surfaces over the same credit-metered capabilities. Pick whichever fits how you work.
REST API
https://www.developersdigest.tech/api/v1Plain HTTP + JSON. Bearer auth. Every endpoint has a curl example below.
MCP endpoint
https://www.developersdigest.tech/api/mcpStreamable HTTP MCP server. Drop it into any agent that speaks MCP.
dd CLI
dd generate image ...Single-binary CLI for generation, skills, agents, and balance. Download at /dashboard/cli.
Prefer a visual workspace? The same credit-metered capabilities power Chat, Image generation, and Voice generation.
Authentication
API keys & credits
- -Create an API key in the dashboard at /dashboard/keys. Keys are prefixed dd_live_.
- -Send it on every request as an Authorization: Bearer dd_live_... header.
- -A signed-in browser session also authenticates the /api/v1 REST routes; the MCP endpoint requires a real dd_live_ key (there is no session on that transport).
- -Credits are shared with your account. Any spend from the API, MCP, or CLI draws from the same universal balance, and owner accounts are never charged.
- -Metered actions only deduct credits on success. A provider failure returns an error and leaves your balance untouched.
curl https://www.developersdigest.tech/api/v1/me \
-H "Authorization: Bearer dd_live_your_key_here"Create and manage keys at /dashboard/keys. Add credits at /pricing.
REST API
/api/v1 endpoints
All endpoints require a valid key or session and return plain JSON. Metered actions are charged only on success.
/api/v1/images1-6 creditsGenerate an image from a text prompt. Models route through the Vercel AI Gateway; each model carries its own credit cost, resolved server-side.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| prompt | string | yes | Image description, 3 to 2000 characters. |
| size | string | no | One of square, square_hd, portrait, landscape, wide. Defaults to square_hd. |
| model | string | no | Image model id, e.g. xai/grok-imagine-image (default, 1 credit), openai/gpt-image-2 (3), google/gemini-3-pro-image (6). Invalid ids return 400 with the full list. |
| provider | string | no | Optional provider override: "gateway" (default) or "fal" (legacy, only when configured). |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Durable image URL (falls back to the ephemeral provider URL when persistence fails). |
| persisted | boolean | yes | True when the image was saved to your gallery. |
| persistError | string | no | Present when the gallery save failed; the url is then ephemeral. |
| model | string | yes | Model that produced the image. |
| creditsSpent | number | yes | Credits charged (0 for owner accounts). |
| balance | number | yes | Remaining credit balance. |
curl -X POST https://www.developersdigest.tech/api/v1/images \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"prompt":"a hard-edged neutral workflow board","size":"landscape"}'{
"url": "https://blob.../image.png",
"persisted": true,
"model": "xai/grok-imagine-image",
"creditsSpent": 1,
"balance": 999
}- -Rate limited to 10 requests / 5 minutes per account.
- -Credits are deducted only after a successful generation, at the chosen model's rate.
- -Returns 503 not_configured if image generation is not enabled on the server.
/api/v1/voice1 creditSynthesize speech from text via the Vercel AI Gateway.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Text to speak, 3 to 2000 characters. |
| voice | string | no | One of alloy, echo, fable, onyx, nova, shimmer. Defaults to alloy. |
| model | string | no | One of openai/tts-1, openai/tts-1-hd. Defaults to openai/tts-1. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| audioBase64 | string | yes | Base64-encoded MP3 audio (mime audio/mpeg). |
| url | string | null | yes | Durable gallery URL for the clip, or null when persistence failed. |
| persisted | boolean | yes | True when the clip was saved to your gallery. |
| persistError | string | no | Present when the gallery save failed; play back via the audioBase64 data instead. |
| model | string | yes | TTS model used. |
| voice | string | yes | Voice used. |
| creditsSpent | number | yes | Credits charged (0 for owner accounts). |
| balance | number | yes | Remaining credit balance. |
curl -X POST https://www.developersdigest.tech/api/v1/voice \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"text":"Welcome to Developers Digest.","voice":"nova"}'{
"audioBase64": "SUQzBAAAAAA...",
"url": "https://blob.../voice.mp3",
"persisted": true,
"model": "openai/tts-1",
"voice": "nova",
"creditsSpent": 1,
"balance": 999
}- -Rate limited to 10 requests / 5 minutes per account.
- -Audio is returned as base64 JSON (not a raw audio body) so credits and balance travel with it. Wrap it in a data: URL for playback or download.
- -Credits are deducted only after a successful generation.
/api/v1/text1-3 creditsNon-streaming text generation via the Vercel AI Gateway. Built for the dd CLI and scripts that want a single JSON completion back.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| prompt | string | yes | The prompt, 1 to 24,000 characters. |
| model | string | no | Whitelisted chat model id, e.g. anthropic/claude-sonnet-4.6 (2 credits) or openai/gpt-5.6-sol (3). Unknown ids fall back to the default (google/gemini-3.1-flash-lite, 1 credit). |
| system | string | no | Optional system prompt override, up to 8,000 characters. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| text | string | yes | The generated completion. |
| model | string | yes | Model that produced the text. |
| creditsSpent | number | yes | Credits charged (0 for owner accounts). |
| balance | number | yes | Remaining credit balance. |
curl -X POST https://www.developersdigest.tech/api/v1/text \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"prompt":"Summarize the MCP spec in three bullets."}'{
"text": "- MCP is an open protocol...",
"model": "google/gemini-3.1-flash-lite",
"creditsSpent": 1,
"balance": 999
}- -Rate limited to 20 requests / 5 minutes per account.
- -Priced by the chosen model's credit tier; credits are deducted only after a successful generation.
- -Returns 503 not_configured if text generation is not enabled on the server.
/api/v1/video3-18 creditsGenerate a short video from a text prompt (and an optional input image for image-to-video models). Each model carries its own credit cost.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| prompt | string | yes | Video description, 3 to 2000 characters. |
| model | string | no | Video model id, e.g. bytedance/seedance-2.0-fast (default, 8 credits) or klingai/kling-v2.6-i2v (5). Invalid ids return 400 with the full list. |
| imageUrl | string | no | http(s) image URL. Required for image-to-video (i2v) models; used as the first frame by t2v models that support it. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Durable video URL. |
| model | string | yes | Model that produced the video. |
| creditsSpent | number | yes | Credits charged (0 for owner accounts). |
| balance | number | yes | Remaining credit balance. |
curl -X POST https://www.developersdigest.tech/api/v1/video \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"prompt":"a slow pan across a neutral workflow board"}'{
"url": "https://blob.../video.mp4",
"model": "bytedance/seedance-2.0-fast",
"creditsSpent": 8,
"balance": 992
}- -Rate limited to 5 requests / 5 minutes per account.
- -Generation is slow; the route polls the provider and can take up to 3 minutes. Set your client timeout accordingly.
- -Credits are deducted only after a successful generation, at the chosen model's rate.
/api/v1/faviconsFreeResolve a company favicon across public providers (Google s2, DuckDuckGo, /favicon.ico) and report which URLs serve an image.
Query string
| Field | Type | Req | Description |
|---|---|---|---|
| domain | string | no | Explicit domain, e.g. example.com. Validated for shape. |
| q | string | no | Company name to guess a domain from (best-effort, flagged in the response). Provide domain or q. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Resolved domain. |
| guessed | boolean | yes | True when derived from q. |
| sources | array | yes | Each candidate { provider, url, size?, ok } with ok=true when it serves an image. |
| best | string | null | yes | First provider URL that resolved, or null. |
curl "https://www.developersdigest.tech/api/v1/favicons?domain=vercel.com" \
-H "Authorization: Bearer dd_live_your_key_here"{
"domain": "vercel.com",
"guessed": false,
"sources": [
{ "provider": "google", "url": "https://www.google.com/s2/favicons?domain=vercel.com&sz=256", "size": 256, "ok": true }
],
"best": "https://www.google.com/s2/favicons?domain=vercel.com&sz=64"
}- -Rate limited to 30 requests / 5 minutes per account.
- -Only public provider URLs are checked and returned; image bytes are never proxied.
/api/v1/tokens/countFreeCount tokens in a string using OpenAI BPE encodings (o200k_base by default, cl100k_base for GPT-4 / GPT-3.5).
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Text to tokenize (max 2,000,000 characters). |
| model | string | no | Model id to pick the encoding. Defaults to gpt-4o. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| tokens | number | yes | Token count. |
| model | string | yes | Model used to pick the encoding. |
| encoding | string | yes | o200k_base or cl100k_base. |
curl -X POST https://www.developersdigest.tech/api/v1/tokens/count \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"text":"Count these tokens.","model":"gpt-4o"}'{
"tokens": 4,
"model": "gpt-4o",
"encoding": "o200k_base"
}/api/v1/pricingFreeQuery the kept-current AI model pricing and capability dataset. Built for agents that reason about cost and context before dispatching a call.
Query string
| Field | Type | Req | Description |
|---|---|---|---|
| provider | string | no | Filter by provider, e.g. anthropic. |
| family | string | no | Substring match on family, e.g. sonnet. |
| id | string | no | Exact model id, e.g. claude-sonnet-5. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| models | array | yes | Matching ModelPricing entries. |
| updatedAt | string | yes | When the dataset was last updated. |
| count | number | yes | Number of matching models. |
curl "https://www.developersdigest.tech/api/v1/pricing?provider=anthropic&family=sonnet" \
-H "Authorization: Bearer dd_live_your_key_here"{
"models": [ { "id": "claude-sonnet-5", "provider": "anthropic", "family": "sonnet", "...": "..." } ],
"updatedAt": "2026-06-01",
"count": 1
}- -Rate limited to 60 requests / 5 minutes per account. Filters are AND-combined and case-insensitive.
/api/v1/meFreeIdentity and balance for the authenticated caller.
Response
| Field | Type | Req | Description |
|---|---|---|---|
| clerkId | string | yes | The caller's account id. |
| balance | number | yes | Current credit balance. |
| isOwner | boolean | yes | True when the account is never charged. |
| plan | string | yes | Current plan. |
| planRenewsAt | string | null | yes | ISO renewal date, or null. |
curl https://www.developersdigest.tech/api/v1/me \
-H "Authorization: Bearer dd_live_your_key_here"{
"clerkId": "user_xxx",
"balance": 1000,
"isOwner": false,
"plan": "pro",
"planRenewsAt": "2026-08-01T00:00:00.000Z"
}/api/v1/memoryFreeList or search your saved memories (notes and links).
Query string
| Field | Type | Req | Description |
|---|---|---|---|
| q | string | no | Search term. Omit to list all memories, newest first. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| memories | array | yes | Each { id, kind, title, body, url, meta, createdAt }. |
curl "https://www.developersdigest.tech/api/v1/memory?q=mcp" \
-H "Authorization: Bearer dd_live_your_key_here"{
"memories": [
{ "id": "mem_1", "kind": "note", "title": "MCP config", "body": "...", "url": null, "createdAt": "..." }
]
}/api/v1/memoryFreeSave a note or a link to your memory canvas.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| kind | string | no | Either "note" (default) or "link". |
| title | string | no | Optional title. |
| body | string | no | Note text. A note needs a title or body. |
| url | string | no | Required for a link; must be an http(s) URL. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| memory | object | yes | The created memory row. Returned with HTTP 201. |
curl -X POST https://www.developersdigest.tech/api/v1/memory \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"kind":"note","title":"MCP config","body":"basePath is /api"}'{
"memory": { "id": "mem_2", "kind": "note", "title": "MCP config", "body": "basePath is /api" }
}/api/v1/galleryFreeList your dashboard gallery assets, newest first.
Query string
| Field | Type | Req | Description |
|---|---|---|---|
| limit | number | no | Max assets to return. |
| before | string | no | ISO date cursor for pagination. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | Each { id, kind, url, name, prompt, model, contentType, creditsSpent, createdAt }. |
curl "https://www.developersdigest.tech/api/v1/gallery?limit=10" \
-H "Authorization: Bearer dd_live_your_key_here"{
"assets": [
{ "id": "a_1", "kind": "image", "url": "https://.../image.png", "creditsSpent": 5, "createdAt": "..." }
]
}/api/v1/galleryFreePersist a just-generated asset into durable Blob storage. The generating call already charged, so persisting is free.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | Either "image" or "voice". |
| sourceUrl | string | no | For image: a fal.media / fal.run / fal.ai URL or a data:image URL, re-hosted server-side (SSRF-guarded). |
| audioBase64 | string | no | For voice: base64 MP3 bytes. |
| prompt | string | no | Prompt to record for display. |
| model | string | no | Model to record for display. |
| creditsSpent | number | no | Credits the source generation cost, echoed for display. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| asset | object | yes | The stored asset row. Returned with HTTP 201. |
curl -X POST https://www.developersdigest.tech/api/v1/gallery \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"kind":"image","sourceUrl":"https://fal.media/files/example.png","creditsSpent":5}'{
"asset": { "id": "a_2", "kind": "image", "url": "https://blob.../image.png", "creditsSpent": 5 }
}- -Image sourceUrl hosts are whitelisted to Fal (fal.media, *.fal.media, *.fal.run, *.fal.ai) or a data:image URL to prevent SSRF.
- -Returns 503 not_configured when media storage is not enabled.
/api/v1/uploadsFreeUpload a member file (image or audio) into the dashboard gallery.
Multipart form
| Field | Type | Req | Description |
|---|---|---|---|
| file | file | yes | A single image/* or audio/* file. Max 15 MB. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| asset | object | yes | The stored asset row. Returned with HTTP 201. |
curl -X POST https://www.developersdigest.tech/api/v1/uploads \
-H "Authorization: Bearer dd_live_your_key_here" \
-F "file=@./cover.png"{
"asset": { "id": "a_3", "kind": "upload", "url": "https://blob.../cover.png", "creditsSpent": 0 }
}- -Rate limited to 20 uploads / 5 minutes per account.
- -Only image/* and audio/* are accepted; the file field is required.
- -Returns 503 not_configured when media storage is not enabled.
/api/v1/skillsFreeThe lean index of the Skill Library: slug, one-line description, and category for every skill. The entry point for progressive disclosure.
Response
| Field | Type | Req | Description |
|---|---|---|---|
| skills | array | yes | Each { slug, description, category }. |
curl https://www.developersdigest.tech/api/v1/skills{
"skills": [
{ "slug": "clerk-nextjs", "description": "Wire Clerk auth into a Next.js app.", "category": "auth" }
]
}- -Public and unauthenticated: the Skill Library is open content, cacheable for an hour.
- -Scan this cheap list, then GET /api/v1/skills/{slug} for the overview and file manifest.
/api/v1/skills/{slug}FreeA skill's overview manifest: identity plus the file tree (paths and purposes, not contents) and a download link.
Response
| Field | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | Skill slug. |
| name | string | yes | Display name. |
| description | string | yes | One-line description. |
| category | string | yes | Skill category. |
| files | array | yes | Each { path, purpose }. Contents come from the download zip. |
| downloadUrl | string | yes | Absolute URL of the zip download. |
curl https://www.developersdigest.tech/api/v1/skills/clerk-nextjs{
"slug": "clerk-nextjs",
"name": "Clerk + Next.js",
"files": [ { "path": "SKILL.md", "purpose": "The skill overview and file manifest (this document)." } ],
"downloadUrl": "https://www.developersdigest.tech/api/v1/skills/clerk-nextjs/download"
}- -Public and unauthenticated. Unknown slugs return 404 not_found.
- -Download the full tree as a zip from /api/v1/skills/{slug}/download; it unpacks cleanly into .claude/skills/.
/api/v1/agentsFreeThe lean index of the first-party Agent Library: copyable Claude Code subagent definitions.
Response
| Field | Type | Req | Description |
|---|---|---|---|
| agents | array | yes | Each { slug, name, description, model, tools }. |
curl https://www.developersdigest.tech/api/v1/agents{
"agents": [
{ "slug": "code-reviewer", "name": "Code Reviewer", "model": "sonnet", "tools": ["Read", "Grep"] }
]
}- -Public and unauthenticated: serves only the curated library, never member-authored agents.
- -Fetch the full definition (frontmatter + system prompt) from GET /api/v1/agents/{slug}; save it into .claude/agents/.
/api/v1/agents/runMeteredRun one of your managed agents in a sandbox with a single input, buffered to completion. The API sibling of the dashboard run flow.
JSON body
| Field | Type | Req | Description |
|---|---|---|---|
| agent | string | yes | Your agent's project id or slug. |
| input | string | yes | The task to send as the kickoff message. |
Response
| Field | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | Run session id; feed it to GET /api/v1/agents/runs/{id}. |
| status | string | yes | Final run status. |
| output | string | yes | The agent's final output. |
| creditsSpent | number | yes | Credits charged for the sandbox boot (0 when a warm sandbox is reused or for owners). |
| balance | number | yes | Remaining credit balance. |
curl -X POST https://www.developersdigest.tech/api/v1/agents/run \
-H "Authorization: Bearer dd_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"agent":"my-agent","input":"Summarize the latest changelog."}'{
"sessionId": "run_abc123",
"status": "completed",
"output": "Here is the summary...",
"creditsSpent": 2,
"balance": 998
}- -Rate limited to 5 runs / 10 minutes per account.
- -Runs your own managed agents (built in the dashboard), not the public Agent Library. Unknown agents return 404.
- -Sandbox boot plus a buffered run can take minutes; the route caps at 5 minutes. Fetch the event trace afterwards from GET /api/v1/agents/runs/{sessionId}.
MCP Endpoint
Model Context Protocol
The Model Context Protocol endpoint lives at https://www.developersdigest.tech/api/mcp and is served over streamable HTTP via mcp-handler. It exposes the same credit-metered capabilities as the REST API as MCP tools, so agents can call them directly.
A dd_live_ API key is REQUIRED as an Authorization: Bearer header. There is no session on the MCP transport; every tool call resolves its owner from the key.
Generation tools are credit-metered: generate_image is 5 credits, generate_voice is 1 credit, and generate_video is priced per model. Everything else - search, memory, and the Library tools (skills, agents, design systems) - is free.
Beyond the tools below, the server also exposes files (list_folders, list_assets, list_files, get_file), Canvas authoring (create_canvas, create_html_asset, and friends), and slideshow tools (list_slideshows, export_slide_deck_pptx). Connect and list tools to see the full surface.
Endpoint
https://www.developersdigest.tech/api/mcpConfig (mcp.json)
{
"mcpServers": {
"developers-digest": {
"type": "http",
"url": "https://www.developersdigest.tech/api/mcp",
"headers": {
"Authorization": "Bearer dd_live_your_key_here"
}
}
}
}Tools
generate_image5 creditsText-to-image via Fal.ai FLUX schnell. Persists to your Studio gallery and returns a durable Blob URL plus a dashboard link. Charged only on success.
generate_voice1 creditText-to-speech (mp3) via the AI Gateway. Persists to your Studio gallery and returns a durable audio URL. Charged only on success.
generate_videoPer modelText-to-video via the AI Gateway (optional imageUrl for image-to-video models). Persists to your Studio gallery and returns a durable video URL. Charged only on success at the chosen model's rate.
count_tokensFreeCount tokens in a string using OpenAI's o200k_base encoding.
search_contentFreeSearch Developers Digest content (blog, guides, tools, videos, courses).
get_daily_briefFreeReturn the latest Developers Digest Daily Brief.
get_balanceFreeReturn the caller's credit balance and owner status.
save_memoryFreeSave a note or link to your memory canvas.
list_memoriesFreeList your saved memories, newest first.
search_memoriesFreeSearch your saved memories (case-insensitive match over title and body).
list_skillsFreeList the Skill Library: vetted, copyable SKILL.md entries. Returns slug, name, description, category. Filter by category, then call get_skill.
get_skillFreeFetch a complete SKILL.md ready to save into .claude/skills/<slug>/SKILL.md, plus metadata. Use a slug from list_skills.
get_skill_fileFreeFetch the raw contents of one file inside a skill (e.g. reference/roles.md). The on-demand tier of progressive disclosure; discover paths via get_skill first.
list_agentsFreeList the Agent Library: copyable Claude Code subagent definitions. Returns slug, name, description, model, tools.
get_agentFreeFetch a complete subagent definition ready to save into .claude/agents/<filename>, plus a usage snippet. Use a slug from list_agents.
list_design_systemsFreeList the DESIGN.md Library: copyable, machine-readable design contracts. Returns slug, name, description, best-for, and gradient policy.
get_design_mdFreeFetch a complete DESIGN.md contract ready to save into your project root, plus metadata. Use a slug from list_design_systems.
dd CLI
Command line
The dd CLI is a small, zero-dependency command line tool that calls the /api/v1 REST surface with your dd_live_ key, prints result URLs, and links back to the dashboard studio.
It ships as a single compiled binary for macOS, Linux, and Windows; download it from /dashboard/cli. Every command accepts --json for machine-readable output, and the CLI exits non-zero on any error so it composes cleanly in scripts.
Setup
# 1. Download the binary for your platform at https://www.developersdigest.tech/dashboard/cli
chmod +x ~/Downloads/dd && mv ~/Downloads/dd /usr/local/bin/dd
# 2. Authenticate (create a key at https://www.developersdigest.tech/dashboard/keys)
export DD_API_KEY=dd_live_your_key_here
# or persist it: ~/.config/devdigest/config.json -> { "apiKey": "dd_live_..." }
dd --helpgenerate imageGenerate an image from a prompt. Prints URL, model, credits spent, balance, and the dashboard link.
dd generate image "packet streams over a filesystem tree" --size landscape --out hero.png--sizesquare, square_hd, portrait, landscape, wide (default square_hd).--out file.pngDownload the generated image to a local file.
generate voiceSynthesize speech and save the MP3. Prints model, voice, credits spent, balance, and the dashboard link.
dd generate voice "Welcome to Developers Digest." --voice nova --out intro.mp3--voicealloy, echo, fable, onyx, nova, shimmer (default alloy).--modelopenai/tts-1, openai/tts-1-hd (default openai/tts-1).--out file.mp3Output path (default voice-<timestamp>.mp3).
generate textOne-shot text generation (non-streaming). Prints the completion plus model, credits spent, and balance.
dd generate text "Summarize the MCP spec in three bullets."--modelWhitelisted chat model id (default google/gemini-3.1-flash-lite).
skillsProgressive skill disclosure, mirroring the MCP library tools: list the index, get a manifest, pull the zip.
dd skills list
dd skills get clerk-nextjs
dd skills pull clerk-nextjs --out clerk-nextjs.zip--out file.zippull only: where to save the zip (default <slug>.zip). Unzips into .claude/skills/.
agentsThe first-party Agent Library: list copyable Claude Code subagents, or get a full definition.
dd agents list
dd agents get code-reviewer --out code-reviewer.md--out file.mdget only: save the definition as a .md you can drop into .claude/agents/.
agent-runRun one of your managed agents with a single task and print the buffered output. Pipe the task on stdin or pass --input.
dd agent-run my-agent --input "Summarize the latest changelog."--inputThe task to send. Alternatively pipe it: cat task.txt | dd agent-run my-agent.--out file.jsonAlso save the full run result as JSON.
agent-logsStatus and event trace for a run session id returned by agent-run.
dd agent-logs run_abc123 --limit 20--limitOnly show the last N events.
galleryList your recent assets as a table (kind, credits, created at, url).
dd gallery --limit 10--limitHow many recent assets to list.
credits / whoamicredits prints your universal balance and plan; whoami adds your account id and owner flag. Both confirm your key works.
dd credits
dd whoamiErrors & Rate Limits
Status codes & throttling
Every error uses the same shape - { error, message } - with a matching HTTP status, so any client can rely on a single format. Some errors add extra fields.
| Status | Code | Meaning | Extra fields |
|---|---|---|---|
| 400 | bad_request | Validation failed (bad JSON, missing or out-of-range field). | - |
| 401 | unauthorized | Missing or invalid API key or session. | - |
| 402 | insufficient_credits | Not enough credits for this action. Add credits at /pricing. | balance |
| 404 | not_found | No resource for that slug or id (skills, agents, run sessions). | - |
| 429 | rate_limited | Too many requests. Slow down and retry. | retryAfterSeconds + Retry-After header |
| 500 | internal | Unexpected server error. Metered actions do not charge on failure. | - |
| 503 | not_configured | The feature is not enabled on the server (missing provider config). | - |
Error shape
{
"error": "insufficient_credits",
"message": "Not enough credits for this action. Add credits at /pricing.",
"balance": 1
}Rate limits
| Endpoint | Limit |
|---|---|
| POST /api/v1/images | 10 / 5 min |
| POST /api/v1/voice | 10 / 5 min |
| POST /api/v1/text | 20 / 5 min |
| POST /api/v1/video | 5 / 5 min |
| POST /api/v1/agents/run | 5 / 10 min |
| GET /api/v1/favicons | 30 / 5 min |
| GET /api/v1/pricing | 60 / 5 min |
| POST /api/v1/uploads | 20 / 5 min |
| MCP generate_image / generate_voice | 10 / 5 min |
A 429 includes a retryAfterSeconds field and a Retry-After header. Other /api/v1 reads (me, memory, gallery) are not separately throttled.