Platforms

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

Platform
DEV.to
Character limit
100000 (the connected account may have a different limit)
Media
Only the cover image (main_image) is sent. Images attached to the post are not.
settings.__type
devto
Required fields
title
Platform page

Post 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.

TypeMediaNotes
Articlecover image in main_imageThe 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.

FieldTypeRequiredWhat it does
titlestring, at least 2 charactersyesThe article title.
main_imagemedia objectnoThe cover image, from the media library.
tagsarray, each item { value: number, label: string }, at most 4noThe article tags. The default is an empty list.
canonicalstring (URL)noThe URL of the original article, if it first appeared elsewhere.
organizationstring (id)noThe 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.

Is something missing from this page? Email [email protected] or use the form on the Help page.