API guide

The Dev.to API in 2026.One request, and docs that lag behind the code.

To publish on DEV Community from code, send POST https://dev.to/api/articles with the person's API key in an api-key header, the Accept header application/vnd.forem.api-v1+json, and the article in Markdown. It's free, with no app to register and no OAuth: each person generates a key at dev.to/settings/extensions. Tags go as an array of up to 4, even though developers.forem.com still documents a comma-separated string.

Checked October 8, 2026. Breakreach is our product.
# One request. The cover must already be online (no upload with a key),# tags go as an array, and the Accept header asks for API v1curl -X POST https://dev.to/api/articles \  -H "api-key: $DEV_API_KEY" \  -H "Accept: application/vnd.forem.api-v1+json" \  -H "Content-Type: application/json" \  -d '{    "article": {      "title": "How we log every roast of Morning Light with a Raspberry Pi",      "body_markdown": "Eleven minutes from green bean to bag…",      "published": true,      "main_image": "https://cdn.northbeam.coffee/roastery.jpg",      "tags": ["python", "raspberrypi"],      "canonical_url": "https://northbeam.coffee/blog/roast-logger",      "ai_disclosure_level": "some_ai"    }  }'
POST /api/articlesSending
Published · now

northbeamcoffee

Posted on Oct 8

How we log every roast of Morning Light with a Raspberry Pi

#python#raspberrypi

Eleven minutes from green bean to bag, and we used to time them with a phone. Now a Raspberry Pi reads two thermocouples every second and writes the curve to SQLite.

First crack shows up as a dip in the rate of rise. Twenty lines of Python flag it, and that's how we stop Morning Light early enough to keep its honey and orange notes.

00

The Dev.to API at a glanceWhat it takes before the first post.

Price
Free. DEV runs on Forem, which is open source under AGPL-3.0
Auth
A personal API key in an api-key header. No OAuth for other apps, no scopes, no expiry
Getting one
Settings → Extensions → DEV Community API Keys → Generate API Key; up to 10 per account
Version
Send Accept: application/vnd.forem.api-v1+json. Without it, the deprecated V0 API answers
Posting
POST /api/articles with the fields inside an article object; 201 with the id and url
Media
No upload with a key: the cover and inline images must already be at public URLs
Tags
An array of up to 4, letters and digits only. developers.forem.com still says a comma-separated string
Rate limit
1 write a second per key and per IP, reads 30 a minute, about 10 published articles per 30 seconds
AI disclosure
ai_disclosure_level: no_ai, some_ai or fully_autonomous. dev.to/llms.txt asks API clients to send it accurately

Checked on October 8, 2026, from Dev.to's developer documentation and terms.

Our recommendation

To post to Dev.to from your product, use Breakreach's API.We built it, so here's the case.

See the request
  • The article and its X and LinkedIn posts in one request, scheduled for the same morning
  • Dev.to's details handled for you: the v1 Accept header, tags cleaned to its 4 with letters and digits only, the 128-character title, a leading --- that would become front matter
  • Your users connect their DEV account on a hosted page by pasting a key, and views, reactions and comments come back for each article

When to use Dev.to's API directly. Breakreach publishes articles under the person's own account, without organizations, series, edits after publishing or video. For anything else, Dev.to's API is free and takes one request with a key, so call it directly.

How to get access to the Dev.to APIFrom a developer account to your first real post.

  1. 1Generate a keyOn dev.to, open Settings → Extensions. Under DEV Community API Keys, type a description and click Generate API Key. An account can hold up to 10 keys, and revokes each one on the same page.
  2. 2Send it in the api-key headerNot Authorization: Bearer, which is for Forem's delegated access and isn't open to other apps. DEV's OpenAPI says authenticated endpoints have CORS disabled: the key is meant for scripts and servers, not the browser.
  3. 3Ask for version 1Add Accept: application/vnd.forem.api-v1+json. Without it the request falls through to V0, which is deprecated and answers with a Warning: 299 header.
  4. 4Check whose key it isGET /api/users/me returns the account's id, username, name, profile image and followers_count. A wrong or revoked key gets 401 with {"error":"unauthorized"}.

No app review and no OAuth for third parties: every app asks the person for a key, and the key acts as the whole account. Send a User-Agent too: on October 8, 2026, a request without one got a 403 from DEV's CDN.

How to post with the Dev.to APIThe requests in the demo above, one by one.

  1. 1Put the images onlineThere's no upload for API keys: POST /image_uploads needs a signed-in browser session. Host the cover and inline images at public URLs. DEV serves the cover through its own image CDN and suggests 1000 × 420 for it.
  2. 2Create the articlePOST /api/articles with title (required), body_markdown, published, main_image, canonical_url, tags, series, organization_id and ai_disclosure_level, all inside an article object. It answers 201 with the article's id and url.
  3. 3Send tags as an array["python", "raspberrypi"]. A comma-separated string is dropped without an error and the article goes out with no tags: Forem's code only accepts an array, and so does the live openapi.json.

published defaults to false, which saves a draft in the author's Dashboard; a draft's URL changes when it's published, so keep the one the publishing call returns. Front matter at the top of body_markdown overrides the JSON fields, so a body that starts with a --- line is read as front matter.

Common Dev.to API errorsWhat they mean and how to fix them.

ErrorWhat it meansFix
401 unauthorizedThe key is wrong or revoked, or the account is suspended.Generate a new key in Settings → Extensions.
422 Tag "node.js" contains non-alphanumeric or prohibited unicode charactersA tag with a dot, a space, a hyphen or a symbol.Keep letters and digits: nodejs.
422 Tag list exceed the maximum of 4 tagsMore than 4 tags.Send 4 at most.
422 Title has already been used in the last five minutesThe same title twice within 5 minutes, often a retry after a timeout.Check /api/articles/me before retrying.
422 Canonical url has already been takenAnother published article on DEV uses that address, often an earlier cross-post or an RSS import.Unpublish the other copy, or leave canonical_url out.
429 Rate limit reached, try again in 30 secondsToo many articles in 30 seconds. The 1-a-second write limit answers a plain-text Retry later instead.Wait for the Retry-After header.

Dev.to API limitsRate limits, text and media.

  • Title and bodyTitles up to 128 characters, and the same title can't be used twice within 5 minutes. The body is Markdown up to 800 KB, with at most 7 @mentions.
  • TagsUp to 4 per article, letters and digits only, 30 characters each, stored lowercase. c++, node.js or #discuss are refused with a 422.
  • Rate limitsWrites: 1 request a second per key and per IP. Reads: 3 a second and 30 a minute. Articles: about 10 published per 30 seconds, or 2 per 5 minutes for accounts under 3 days old. Those are Forem's defaults; DEV's live values aren't published.
  • Schedulingpublished true with a published_at in the future schedules the article on DEV. A published_at more than 15 minutes in the past is refused.

Is the Dev.to API free?

Yes. DEV doesn't charge for its API and has no developer program: any account can generate a key and publish. The same API runs on every community built with Forem.

What it asks for is honesty about AI. dev.to/llms.txt tells API clients to send ai_disclosure_level accurately and never to leave AI-assisted articles undisclosed, and DEV's guidelines for AI-assisted articles rule out ones that promote a business, a program or a course.

Through Breakreach, a Dev.to account counts like any other connected account: $5 a month each up to 20, $3 up to 100, then $2.

Ways to post to Dev.to from code

What you set upPricePosts to Dev.to
BreakreachAn API key. Accounts connect with a DEV API key pasted once, or your users connect theirs on a hosted page$5 a month per account, less from 21Yes, Articles with a cover, tags and the AI label
Dev.to's own APIA personal API key per account, sent in an api-key headerFreeYes
Upload-PostAn API keyFree for 2 profiles and 10 uploads a month; Basic $24 a month for 5 profilesYes, On paid plans, text only
ZernioAn API keyFirst 2 accounts free, then $6 per account up to 10, $3 up to 100, $1 afterNo
AyrshareAn API keyFrom $149 a month for 1 profile, no free planNo
OutstandAn API key$19 a month for 3,000 posts, then per postNo
Checked on October 8, 2026, from Dev.to's developer documentation and each company's pricing page. Breakreach is our product.

What the Dev.to API can't do

  • Upload images or video with an API key
  • Let another app sign in with OAuth: every app asks for the person's key
  • Scope a key: it acts as the whole account
  • Delete an article: only update it, or unpublish it with published false
  • Post or answer comments: they're read-only in the API
  • List the organizations a user belongs to

Post to Dev.to with Breakreach's APIOne request, scheduled, with retries.

POST /v1/posts
curl https://api.breakreach.com/v1/posts \  -H "Authorization: Bearer $BREAKREACH_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "content": "How we log every roast of Morning Light with a Raspberry Pi\nEleven minutes from green bean to bag, and we used to time them with a phone. Now a Raspberry Pi reads two thermocouples every second and writes the curve to SQLite.\n\nFirst crack shows up as a dip in the rate of rise. Twenty lines of Python flag it, and that's how we stop Morning Light early enough to keep its honey and orange notes.",    "accountIds": ["6701a2f4c9e84b0012a3b4d5"],    "media": ["https://cdn.northbeam.coffee/roastery.jpg"],    "articleSettings": {"tags": ["python", "raspberrypi"], "canonicalUrl": "https://northbeam.coffee/blog/roast-logger", "aiDisclosure": "some_ai"},    "scheduledAt": "2026-10-07T09:00:00"  }'

What it posts on Dev.to

  • ArticlesThe first line is the title, cut to 128 characters, and the rest is the Markdown body as you wrote it, code blocks included. A leading --- is changed so Dev.to doesn't read it as front matter.
  • Cover and photosThe first photo is the cover; up to 9 more follow the text as Markdown images. Breakreach hosts them, since Dev.to has no upload.
  • Dev.to's own optionsarticleSettings takes tags (cleaned to Dev.to's 4, letters and digits), canonicalUrl, aiDisclosure, and asDraft to leave an unpublished draft on DEV.
  • Scheduling and statsscheduledAt in your workspace's timezone or the next free slot, published from Breakreach's servers. Then views, reactions and comments per article, and the account's followers.

Not yet

  • Videos: Dev.to has no upload for API keys
  • Organizations and series
  • Editing or deleting after publishing
  • Reading or answering comments

The full reference, webhooks and the price per connected account are on the developers page, and the OpenAPI spec is at api.breakreach.com/v1/openapi.json.

FAQ

Questions, answered.

Short answers about the Dev.to API.

Yes. Any DEV account can generate an API key in Settings, Extensions and publish with it. There's no paid tier and no app review.

Yes. DEV Community runs Forem, the open-source software, so dev.to/api is the Forem API. Other Forem communities serve the same API at their own address, with keys from their own settings.

POST https://dev.to/api/articles with your key in the api-key header, Accept: application/vnd.forem.api-v1+json, and a body like {"article": {"title": "…", "body_markdown": "…", "published": true}}. Without published true, the article is saved as a draft.

The API takes tags as an array, like ["python", "webdev"]. A comma-separated string, which developers.forem.com still documents, is dropped without an error. Tags must also be letters and digits only, 4 at most.

Yes: send published true with a published_at in the future, and DEV publishes it then. Without published_at, it goes out at once.

In Forem's code: 1 write a second per API key and per IP, 30 reads a minute, and about 10 published articles per 30 seconds, or 2 per 5 minutes for accounts under 3 days old. DEV can change these and doesn't publish its live values.

DEV asks for it. Its llms.txt tells API clients to send ai_disclosure_level accurately: no_ai, some_ai or fully_autonomous. Left out, the article shows Not Disclosed, and readers can choose to minimize AI-assisted articles in their feed.

$5 a month per connected account up to 20, $3 up to 100, then $2. Each Dev.to account is one account. You pay per connected account, never per post or per request.

Instagram
TikTok
LinkedIn
YouTube
X
Facebook
Threads

Put your socials on autopilot.Live in two minutes.

Plans from $29 a month. Cancel anytime.