01
Connect Dev.to
- On dev.to, open Settings → Extensions → DEV Community API Keys.
- Generate a key named Reelspan.
- Paste it in the dashboard.
Posting for clients? Send them a connect link so they connect their own Dev.to account without a Reelspan login.
02
Get an API key
In the dashboard, open Developers → API keys and create one. Keep it in an environment variable such as REELSPAN_KEY; never in code you share.
03
Post with one request
Add more platform[] fields to post the same thing everywhere at once.
curl -X POST https://api.reelspan.com/v1/posts/text \
-H "Authorization: Bearer $REELSPAN_KEY" \
-F user=my-brand \
-F "platform[]=devto" \
-F "title=Your article (markdown)" \
-F "devto_tags=…"const form = new FormData();
form.append('user', 'my-brand');
form.append('platform[]', 'devto');
form.append('title', 'Your article (markdown)');
const res = await fetch('https://api.reelspan.com/v1/posts/text', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.REELSPAN_KEY}` },
body: form,
});
console.log(await res.json());import os, requests
res = requests.post(
"https://api.reelspan.com/v1/posts/text",
headers={"Authorization": f"Bearer {os.environ['REELSPAN_KEY']}"},
files=[
("user", (None, "my-brand")),
("platform[]", (None, "devto")),
("title", (None, "Your article (markdown)")),
],
)
print(res.json())devto_title sets Dev.to’s title (up to 250 characters), separate from the text.
04
Dev.to options
- devto_title
- The article title.
- devto_tags
- Up to 4 tags, comma-separated.
- devto_canonical_url
- Where the article first ran.
- devto_published
- false saves a draft.
- Articles written in Markdown, published or saved as a draft.
- Set tags and a canonical URL when the article first ran elsewhere.
Every field, with its limits: the docs.
05
Schedule it and check the result
- Add
scheduled_date(ISO 8601) andtimezoneto post later, oradd_to_queue=trueto take the next slot of your posting schedule. - The response has Dev.to’s status and the post’s link. For big files send
async_upload=trueand checkGET /v1/posts/status?request_id=…, or get a signed webhook when it’s live. - If Dev.to refuses a post, the error says why in plain words, and you can retry just that network.
06
Without code
07
Ideas
- Cross-post every engineering blog post with its canonical URL.
More on Dev.to: what you can post there. Other networks: all upload guides.