Developer platform
One universal API for the Developers Digest tools: text, image, voice, and video generation, your asset gallery, identity, and the public skill library. Authenticate every request with a dd_live_ key and every metered call spends the same universal credit balance.
Prefer a terminal? The dd CLI wraps these endpoints, and the MCP platform exposes the same capabilities to agents.
Getting started
Authorization: Bearer dd_live_....{ error, message } shape; see Errors and rate limits.curl -X POST https://www.developersdigest.tech/api/v1/images \
-H "Authorization: Bearer dd_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "a minimal editorial illustration of an api"}'/api/v1/text1-3 creditsNon-streaming text generation across the frontier chat models. The message is priced by the chosen model's credit tier; an unknown or absent model falls back to the default. Credits are deducted only after a successful generation.
Rate limit: 20 requests per 5 minutes
| prompt | string | The prompt, 1 to 24000 characters. |
| model | string (optional) | Gateway model id, e.g. anthropic/claude-sonnet-5. Unknown or absent falls back to the default. Priced by the model's tier: 1 (economy), 2 (standard), or 3 (premium). |
| system | string (optional) | System instruction, up to 8000 characters. Defaults to the Developers Digest assistant prompt. |
{
"text": "...",
"model": "moonshotai/kimi-k2.5",
"creditsSpent": 1,
"balance": 99
}text is the completion, model is the resolved model id, and balance is your remaining credits. Per-model credit tiers are listed on /pricing.
curl -X POST https://www.developersdigest.tech/api/v1/text \
-H "Authorization: Bearer dd_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Explain MCP in two sentences.", "model": "anthropic/claude-sonnet-5"}'/api/v1/images5 creditsGenerate an image from a text prompt. Credits are deducted only after a successful generation, so a provider failure never charges you.
Rate limit: 10 requests per 5 minutes
| prompt | string | Text prompt, 3 to 2000 characters. |
| size | string (optional) | One of: square, square_hd, portrait, landscape, wide. Defaults to square_hd. |
{
"url": "https://fal.media/files/.../image.png",
"model": "fal-ai/...",
"creditsSpent": 5,
"balance": 95
}url is the generated image, model is the provider model used, and balance is your remaining credit balance after the charge.
curl -X POST https://www.developersdigest.tech/api/v1/images \
-H "Authorization: Bearer dd_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "isometric server room, editorial illustration", "size": "landscape"}'/api/v1/voice1 creditSynthesize speech from text. The response is JSON (not a raw audio body) so credits and balance ride along with the audio; audioBase64 is a base64-encoded MP3 (audio/mpeg). You are only charged on success.
Rate limit: 10 requests per 5 minutes
| text | string | Text to speak, 3 to 2000 characters. |
| voice | string (optional) | Voice name. Invalid values return a 400 listing the supported voices. |
| model | string (optional) | TTS model. Invalid values return a 400 listing the supported models. |
{
"audioBase64": "SUQzBAAAAAAA...",
"model": "...",
"voice": "...",
"creditsSpent": 2,
"balance": 93
}Decode audioBase64 to get the MP3 bytes, or wrap it in a data:audio/mpeg;base64, URL for direct playback.
curl -X POST https://www.developersdigest.tech/api/v1/voice \
-H "Authorization: Bearer dd_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Welcome to Developers Digest."}'/api/v1/video15 creditsGenerate a short video from a text prompt. Mirrors the images endpoint: credits are deducted only after a successful generation.
Rate limit: 5 requests per 5 minutes
| prompt | string | Text prompt, 3 to 2000 characters. |
{
"url": "https://.../video.mp4",
"model": "fal-ai/...",
"creditsSpent": 15,
"balance": 78
}url is a durable link to the generated video; balance is your remaining credits after the charge.
curl -X POST https://www.developersdigest.tech/api/v1/video \
-H "Authorization: Bearer dd_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "slow pan across a workbench of developer tools"}'/api/v1/meFreeIdentity and credit balance for the authenticated caller. Useful for a CLI or agent to confirm the key works and show the remaining balance before spending.
{
"clerkId": "user_...",
"balance": 95,
"isOwner": false,
"plan": "plan-developer",
"planRenewsAt": "2026-08-01T00:00:00.000Z"
}plan is the active membership product id (or null on no plan) and planRenewsAt is an ISO timestamp, or null when nothing is renewing. isOwner accounts are never charged.
curl https://www.developersdigest.tech/api/v1/me \
-H "Authorization: Bearer dd_live_YOUR_KEY"/api/v1/galleryFreeList your saved assets, newest first, with your folder list. Reading the gallery never spends credits. POST to the same path persists a just-generated asset (image via a provider sourceUrl, or voice via audioBase64) into durable storage; persisting is also free because the generating call already charged. PATCH moves an asset into a folder.
| limit | number (optional) | Query param. Max number of assets to return. |
| before | ISO date (optional) | Query param. Return assets created before this timestamp (cursor pagination). |
| folder | string (optional) | Query param. Filter to a single folder. |
GET parameters are query string params, not a JSON body.
{
"folders": ["Uncategorized", "Heroes"],
"assets": [
{
"id": "…",
"kind": "image",
"url": "https://…",
"name": null,
"folder": null,
"prompt": "…",
"model": "…",
"contentType": "image/png",
"creditsSpent": 5,
"createdAt": "2026-07-01T00:00:00.000Z"
}
]
}kind is "image" or "voice". POST returns 201 with { asset } for the newly persisted item.
curl "https://www.developersdigest.tech/api/v1/gallery?limit=20" \
-H "Authorization: Bearer dd_live_YOUR_KEY"/api/v1/skillsFreeThe lean index of the Developers Digest Skill Library: slug, one-line description, and category for every skill. The entry point for progressive disclosure - scan this cheap list, then fetch a single skill's manifest.
Public content - no API key required.
{
"skills": [
{ "slug": "mcp-server-authoring", "description": "...", "category": "..." }
]
}Unauthenticated and cacheable. Mirrors the MCP list_skills tool.
curl https://www.developersdigest.tech/api/v1/skills/api/v1/skills/{slug}FreeA single skill's overview manifest: identity plus the file tree (paths and a one-line purpose, not contents) and a download link. The middle tier of progressive disclosure.
Public content - no API key required.
{
"slug": "mcp-server-authoring",
"name": "...",
"description": "...",
"category": "...",
"files": [ { "path": "SKILL.md", "purpose": "..." } ],
"downloadUrl": "https://www.developersdigest.tech/api/v1/skills/mcp-server-authoring/download"
}files lists paths and purposes only, never contents. An unknown slug returns 404 { error: "not_found", message }.
curl https://www.developersdigest.tech/api/v1/skills/mcp-server-authoring/api/v1/skills/{slug}/downloadFreeDownload a skill as a .zip. The archive holds the full multi-file tree under a single top-level folder named after the slug, so it unpacks cleanly into a .claude/skills/ directory.
Public content - no API key required.
HTTP/1.1 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="mcp-server-authoring.zip"
<zip bytes>The body is the zip, not JSON: {slug}/SKILL.md plus reference/ and scripts/ files. An unknown slug returns 404 { error: "Skill not found" }.
curl -L https://www.developersdigest.tech/api/v1/skills/mcp-server-authoring/download -o skill.zipShared semantics
Every endpoint uses the same error envelope: a machine-readable error code plus a human message, with the matching HTTP status. Gating runs in order: auth (401), then rate limit (429), then validation (400), then credit balance (402).
| Status | error | When | Extra fields |
|---|---|---|---|
| 401 | unauthorized | Missing or invalid API key (and no signed-in session). | - |
| 402 | insufficient_credits | Your balance is below the endpoint's credit cost. Add credits at /pricing. | balance |
| 429 | rate_limited | Too many requests in the window. Back off and retry. | retryAfterSeconds (+ Retry-After header) |
| 400 | bad_request | Validation failed; the message explains which field is wrong. | - |
| 500 | internal | Unexpected server error. Metered endpoints never charge on failure. | - |
Generation endpoints also return 503 not_configured when a provider is not set up for the deployment. The public skill endpoints are unauthenticated and return a plain 404 for an unknown slug rather than the auth or credit envelope.
{
"error": "insufficient_credits",
"message": "Not enough credits for this action. Add credits at /pricing.",
"balance": 1
}Agents
The platform also ships as a Vercel-hosted Model Context Protocol server at https://www.developersdigest.tech/api/mcp (streamable HTTP). It exposes the same credit-metered capabilities as the REST API as MCP tools so agents can call them directly. A dd_live_ key is required via Authorization: Bearer on the transport; there is no session on MCP. See the MCP platform overview for the connect walkthrough.
| Tool | Cost | What it does |
|---|---|---|
| generate_image | 5 credits | Text-to-image; persists to your Studio gallery and returns a durable URL plus dashboard link. |
| generate_voice | 1 credit | Text-to-speech; persists to your Studio gallery and returns a durable URL plus dashboard link. |
| count_tokens | Free | Token count for a string. |
| search_content | Free | Search the Developers Digest site index. |
| get_daily_brief | Free | Latest Daily Brief text. |
| get_balance | Free | Your current credit balance. |
| save_memory / list_memories / search_memories | Free | Per-caller durable notes and links that survive across sessions and machines. |
| list_skills / get_skill | Free | Copyable SKILL.md registry (skills as a service). |
| list_agents / get_agent | Free | Copyable subagent definitions. |
| list_design_systems / get_design_md | Free | Copyable DESIGN.md contracts. |
{
"mcpServers": {
"developers-digest": {
"type": "http",
"url": "https://www.developersdigest.tech/api/mcp",
"headers": {
"Authorization": "Bearer dd_live_YOUR_KEY"
}
}
}
}Works with any MCP client that supports streamable HTTP, for example Claude Code: claude mcp add developers-digest https://www.developersdigest.tech/api/mcp -t http -H "Authorization: Bearer dd_live_YOUR_KEY"