> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ocoya.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DEV.to

> Publish long-form Markdown articles to your DEV.to account from Ocoya.

DEV.to is the one blogging platform Ocoya connects to. A DEV.to post isn't a social caption — it's a **Markdown article with a title**, so it behaves differently from every other channel.

## Before you start

You need a DEV.to account and an API key from it. DEV.to has no sign-in flow for apps, so Ocoya connects with a key you generate yourself rather than by sending you to DEV.to to approve access.

## Connect DEV.to

<Steps>
  <Step title="Generate an API key on DEV.to">
    In DEV.to, go to **Settings → Extensions** and generate an API key. That's at [dev.to/settings/extensions](https://dev.to/settings/extensions).
  </Step>

  <Step title="Open Channels in Ocoya">
    Select **Channels**, then **Connect channel**, and choose **DEV.to** — it's listed under **Blogging**.
  </Step>

  <Step title="Paste the key">
    Put it in the **DEV.to API key** field and confirm. Ocoya reads your DEV.to profile to name the connection.
  </Step>
</Steps>

Because the connection is a key rather than an approval, revoking it is done on DEV.to: delete the key in Settings → Extensions and Ocoya can no longer reach the account.

## What you can post

An article, written in **Markdown**:

* **A title** — required, and the thing to get right
* **A body** in Markdown, with the formatting DEV.to supports
* **Images**, carried inside the body as Markdown

**No video.** Attach one and the article is refused.

DEV.to articles publish **live** — Ocoya publishes them as published, not as drafts on DEV.to.

## The title

Every DEV.to article needs a title, capped at **128 characters**.

If you don't set one, Ocoya takes the **first line of your caption** and uses that, stripping any Markdown heading marks so a line starting `## Introduction` becomes *Introduction* rather than printing the hashes. With nothing to work from it falls back to *Untitled article* — which you don't want published, so set a title or open with a strong first line.

## DEV.to's limits

|        |                          |
| ------ | ------------------------ |
| Title  | 128 characters           |
| Body   | 100,000 characters       |
| Images | 10                       |
| Video  | Not supported            |
| Tags   | Not supported from Ocoya |

The body limit is Ocoya's guard rail. DEV.to's own cap is **800 KB** of Markdown, which is far past anything typed into a composer — the lower number just means you fail in the editor rather than at publish time.

## Writing for it, not for social

The same caption rarely works as both a tweet and an article. Two things follow from that:

* Use [per-channel captions](/help/post-editor) when a post goes to DEV.to and social networks together. Write the article for DEV.to and a short version for everything else.
* Markdown is rendered, so headings, lists, code fences and links all work — and a caption written for social will look thin as an article.

If you're publishing to DEV.to regularly, it's usually a separate post rather than one shared with your social channels.

## Common problems

**"That DEV.to API key was rejected. Generate a new key and try again."** The key is wrong, was revoked, or was copied with whitespace. Generate a fresh one in Settings → Extensions and reconnect.

**"DEV.to articles require text."** The article has no body. Media alone isn't an article.

**"DEV.to articles cannot exceed 800 KB."** The Markdown is past DEV.to's own limit — split it into more than one article.

**"DEV.to is rate limiting this account. Space the scheduled articles further apart and try again."** DEV.to limits how quickly one account can publish. Spread scheduled articles out rather than queuing several at the same time.

**"Connection to your profile has expired. Please reconnect."** Reconnect with a current key. See [Reconnect a channel](/help/reconnect-a-channel).

## Related

<Columns cols={2}>
  <Card title="Character and media limits" icon="ruler" href="/help/channel-limits">
    Every network's limits side by side.
  </Card>

  <Card title="The post editor" icon="square-pen" href="/help/post-editor">
    Writing a different version per channel.
  </Card>
</Columns>
