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.


northbeamcoffee
Posted on Oct 8
How we log every roast of Morning Light with a Raspberry Pi
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.
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.
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.
- 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.
- 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.
- 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. - 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.
- 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.
- 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.
- 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.
| Error | What it means | Fix |
|---|---|---|
401 unauthorized | The 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 characters | A tag with a dot, a space, a hyphen or a symbol. | Keep letters and digits: nodejs. |
422 Tag list exceed the maximum of 4 tags | More than 4 tags. | Send 4 at most. |
422 Title has already been used in the last five minutes | The same title twice within 5 minutes, often a retry after a timeout. | Check /api/articles/me before retrying. |
422 Canonical url has already been taken | Another 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 seconds | Too 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 up | Price | Posts to Dev.to | |
|---|---|---|---|
| Breakreach | An 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 21 | Yes, Articles with a cover, tags and the AI label |
| Dev.to's own API | A personal API key per account, sent in an api-key header | Free | Yes |
| Upload-Post | An API key | Free for 2 profiles and 10 uploads a month; Basic $24 a month for 5 profiles | Yes, On paid plans, text only |
| Zernio | An API key | First 2 accounts free, then $6 per account up to 10, $3 up to 100, $1 after | No |
| Ayrshare | An API key | From $149 a month for 1 profile, no free plan | No |
| Outstand | An API key | $19 a month for 3,000 posts, then per post | No |
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.
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.
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.
Keep reading
Put your socials on autopilot.Live in two minutes.
Plans from $29 a month. Cancel anytime.