Create Post
medium.create_post
ActionBusiness appsconnection required
Calls the Medium API with the connection's credentials.
Publish a post on the connected Medium account's own profile.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- Medium
- Secret shape
- {"client_id": "…", "client_secret": "…", "refresh_token": "…"}, or {"access_token": "…"} for a self-issued integration token
- Config it needs
- user_id
- Resolved by
- config.connection_id, else node.connection_id
Configuration
9 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
title The post's title, used for SEO and in listings. Medium ignores a title longer than 100 characters, and the title only appears on the page if the content repeats it. | string | Yes | — | ≤ 100 characters | Hard things in software development |
content The body of the post, as a semantic HTML fragment or as Markdown, matching the content format. | string | Yes | — | — | <h1>Hard things</h1><p>Cache invalidation.</p> |
content_format How Medium should read the content field. | string | No | html | one of "html", "markdown" | — |
tags Tags to classify the post. Medium uses only the first three, and ignores any tag longer than 25 characters. | array | No | — | ≤ 3 characters; array of string | ["development","design"] |
canonical_url The original home of this content, when it was first published elsewhere. | string | No | — | url format | https://blog.acme.com/hard-things |
publish_status Whether the post goes out publicly, stays a draft, or is unlisted. | string | No | public | one of "public", "draft", "unlisted" | — |
license The licence the post is published under. | string | No | all-rights-reserved | one of "all-rights-reserved", "cc-40-by", "cc-40-by-sa", "cc-40-by-nd", "cc-40-by-nc", "cc-40-by-nc-nd", "cc-40-by-nc-sa", "cc-40-zero", "public-domain" | — |
notify_followers Notify the account's followers that it has published. | boolean | No | false | — | — |
author_id Medium user id to publish as; defaults to the connection's user, and otherwise to whoever the token belongs to. | string | No | — | — | 5303d74c64f66366f00cb9b2a94f3251bf5 |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"author_id": "5303d74c64f66366f00cb9b2a94f3251bf5",
"canonical_url": "https://blog.acme.com/hard-things",
"content": "<h1>Hard things</h1><p>Cache invalidation.</p>",
"content_format": "html",
"license": "all-rights-reserved",
"notify_followers": false,
"publish_status": "public",
"tags": [
"development",
"design"
],
"title": "Hard things in software development"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The Medium post id. | string | — |
title The post's title, as Medium stored it. | string | — |
authorId The Medium user id of the post's author. | string | — |
tags The tags Medium kept on the post. | array | — |
url The post's URL on Medium. | string | — |
canonicalUrl The canonical URL, absent when none was sent with the post. | string | — |
publishStatus The publish status the post ended up with. | string | — |
publishedAt Publication time in milliseconds since the epoch, absent for a draft. | number | — |
license The licence the post is published under. | string | — |
licenseUrl The URL of that licence on Medium. | string | — |
{
"authorId": "",
"canonicalUrl": "",
"id": "",
"license": "",
"licenseUrl": "",
"publishStatus": "",
"publishedAt": 0,
"tags": [],
"title": "",
"url": ""
}See Create Post run in a workflow.
In a technical demo we add the Medium connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.