DEV.to: posting rules and settings
What a DEV.to channel accepts in Posty: media, limits, required fields, and the fields of the settings object for the API.
Basics
devtoPost types
The same channel accepts more than one kind of post, and each kind has different requirements. The table shows what you need for each.
| Type | Media | Notes |
|---|---|---|
| Article | cover image in main_image | The title is required. Images attached to the post are not sent. |
Rules
- You connect with a DEV API key. You create it in your DEV settings.
- The article is published at the scheduled time, in Markdown.
- The tags and the organization expect values from DEV. You fetch the lists with the channel's tool calls.
Settings fields
These fields go into the post's settings object, alongside the __type field. In the UI, you fill in the same ones in the channel's settings section.
| Field | Type | Required | What it does |
|---|---|---|---|
| title | string, at least 2 characters | yes | The article title. |
| main_image | media object | no | The cover image, from the media library. |
| tags | array, each item { value: number, label: string }, at most 4 | no | The article tags. The default is an empty list. |
| canonical | string (URL) | no | The URL of the original article, if it first appeared elsewhere. |
| organization | string (id) | no | The ID of the organization to publish under. |
Examples
Each example is one item in the POST /public/v1/posts request's posts array. The envelope around it is always this:
{
"type": "schedule",
"date": "2026-09-15T09:00:00.000Z",
"shortLink": false,
"posts": [ /* the item below */ ]
}Article with tags and a cover
The tag values come from the tags tool call of the channel. Posty sends the label.
{
"integration": { "id": "<devto-channel>" },
"value": [{ "content": "<p>How we cut our build time in half.</p>", "image": [] }],
"settings": {
"__type": "devto",
"title": "How we cut our build time in half",
"main_image": { "id": "<media>", "path": "https://uploads.posty.hu/cover.png" },
"tags": [
{ "value": 1, "label": "javascript" },
{ "value": 2, "label": "webdev" }
],
"canonical": "https://example.com/blog/build-time"
}
}The channel ID comes from the channel list, and the path values for images and videos from media upload. The exact schema for the connected account comes from the settings schema endpoint. From the command line, the same thing is the --settings flag. See the CLI examples.