---
title: "Hashnode API: post and schedule from code"
url: "https://get1post.com/developers/hashnode.md"
canonical_url: "https://get1post.com/developers/hashnode"
last_updated: "2026-10-26"
type: "reference"
summary: "Post and schedule to Hashnode with the 1Post API and MCP server: the request, the reply, every rule it is checked against and a dry run."
related: ["https://get1post.com/platforms/hashnode.md", "https://get1post.com/platforms/hashnode/specs.md", "https://get1post.com/docs/api-posts.md", "https://get1post.com/docs/mcp.md"]
---

# Hashnode API: post and schedule from code

Post and schedule to Hashnode with the 1Post API and MCP server: the request, the reply, every rule it is checked against and a dry run.

Post to Hashnode from code with one request: POST /v1/posts with your publication id, the text and a schedule_at time. Hashnode has no text length that 1Post checks. 1Post allows up to 5 posts a day for each connected publication, and a dry run checks a post against every rule first.

## Connect Hashnode first

1. In Hashnode settings, create a personal access token.
2. Open Accounts in 1Post and choose Connect, then Hashnode.
3. Paste the token.
4. Choose the publication in the composer.

Then GET /v1/accounts returns the id of the Hashnode publication to use in the request.

## Send a post to Hashnode

**Schedule a post**

```bash
curl https://api.get1post.com/v1/posts \
  -H "Authorization: Bearer $ONEPOST_API_KEY" \
  -H "Idempotency-Key: hashnode-first-post" \
  -d '{"accounts":["ACCOUNT_ID"],"text":"What changed in version 2.","schedule_at":"2026-11-02T15:00:00Z"}'
```

The reply is 202 with the post (status scheduled) and one destination for Hashnode, which moves from queued to published or failed.

## What you can send to Hashnode

- Article
- Cover image
- Tags
- Original URL

## Hashnode rules the request is checked against

| Rule | What 1Post checks |
| --- | --- |
| Text limit | No length check |
| Media accepted | Images |
| Images per post | 1 |
| Threads | No |
| First comment | No |
| Posts per day, per connected account (1Post) | 5 |

The same table with sources is on the [Hashnode specs page](https://get1post.com/platforms/hashnode/specs.md).

## Good to know for Hashnode

A Hashnode post goes to one publication, so connect the publication you want and use its account id. Send the original address if the article first appeared elsewhere.

## Check the post before it is queued

Add "dry_run": true to test a post: nothing is kept, a valid one answers 200 and a broken one answers 422 naming the rule.

**A refused request, abridged**

```json
{
  "error": {
    "code": "invalid_for_platform",
    "message": "hashnode refuses this post: Hashnode needs some content. (empty_text).",
    "fix": "Fix the rule named in the message and send the post again.",
    "retryable": false,
    "request_id": "REQUEST_ID"
  }
}
```

An assistant connected to the [MCP server](https://get1post.com/docs/mcp.md) sends the same fields to create_post; [set one up](https://get1post.com/assistants.md).

## Questions

**Can I post to Hashnode with an API key?**

Yes. A key with write scope can create, change and cancel Hashnode posts for the workspace it belongs to, with the role of the member who made it. See [API authentication](https://get1post.com/docs/api-authentication.md).

**What happens if a Hashnode post breaks a rule?**

The request is refused with invalid_for_platform and the failing rule is named. Fix it and send the request again, or send it with dry_run to test the fix first.

**How many Hashnode posts can I send in a day?**

Up to 5 for each connected publication. A request that would pass that answers daily_cap with the time the day frees up.

## Related

- [Schedule Hashnode posts: formats, limits, setup](https://get1post.com/platforms/hashnode.md)
- [Hashnode specs and limits: text, media, daily cap](https://get1post.com/platforms/hashnode/specs.md)
- [Creating and changing posts with the API: 1Post docs](https://get1post.com/docs/api-posts.md)
- [The MCP server: 1Post docs](https://get1post.com/docs/mcp.md)
