API Introduction
Notipo exposes a REST API that lets you create posts, trigger syncs, manage posts, and configure connections programmatically — from n8n, Make, custom scripts, AI agents, or any HTTP client.
Authentication
All API requests require your API key in the X-API-Key header.
curl https://notipo.com/api/posts \
-H "X-API-Key: your-api-key"Base URL
All endpoints are relative to your Notipo instance:
# Hosted
https://notipo.com
# Self-hosted
https://your-domain.comSelf-hosted users replace notipo.com with their own domain throughout all examples.
Getting Your API Key
You can retrieve your API key in two ways:
Dashboard: Go to Settings → Account in the Notipo admin. Your API key is displayed there and can be copied with one click.
Login endpoint: Authenticate programmatically and receive your API key in the response:
curl -X POST https://notipo.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "yourpassword"}'
# Response
{ "apiKey": "ntp_..." }Response Format
All API responses are JSON. Successful responses are wrapped in a data envelope and return HTTP 200 or 201.
# Success
{
"data": { ... }
}Errors return a message field with an appropriate HTTP status code (400, 401, 403, 404, 429, 500):
# Error (e.g. 401)
{
"message": "Unauthorized"
}Endpoints
| Method | Path |
|---|---|
| POST | /api/posts/create |
| POST | /api/sync-now |
| GET | /api/posts |
| GET | /api/posts/:id |
| DELETE | /api/posts/:id |
| GET | /api/jobs |
| GET | /api/settings |
| PUT | /api/settings/notion |
| PUT | /api/settings/wordpress |
| GET | /api/categories |
| GET | /api/tags |
| GET | /api/billing |
Creating Posts via API
POST /api/posts/create is the most powerful endpoint in the Notipo API. It creates a Notion page and immediately triggers the full publishing pipeline — Gutenberg conversion, image uploads, featured image generation, SEO metadata, and WordPress draft or publish — in a single request.
Request body
| Field |
|---|
title |
body |
category |
tags |
seoKeyword |
imageTitle |
slug |
publish |
Response
Returns a jobId you can use to poll for completion, and the notionPageId of the newly created page.
{
"data": {
"jobId": "ce372d00-7d67-4613-bd1d-adc711c35846",
"notionPageId": "321842af-972f-813a-85a3-e6ad450b4869",
"message": "Post created. Run `notipo jobs` to monitor progress."
}
}Example 1 — create a draft (minimal)
curl -X POST https://notipo.com/api/posts/create \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"title": "Why Every Developer Should Have a Blog"
}'Example 2 — create and publish with all fields
curl -X POST https://notipo.com/api/posts/create \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"title": "Why Every Developer Should Have a Blog",
"body": "## Introduction
Writing forces clarity.
## Benefits
You learn more by writing than by reading.",
"category": "Developer Tips",
"tags": ["writing", "productivity", "career"],
"seoKeyword": "developer blog",
"imageTitle": "Developer writing at a desk with code on screen",
"slug": "developer-blog-guide",
"publish": true
}'Polling for Job Completion
After calling POST /api/posts/create, use the returned jobId to track progress. Call GET /api/jobs and find the job where pgBossJobId === jobId.
When publish: true is set, the pipeline runs two sequential jobs. After the SYNC_POST job completes, a PUBLISH_POST job is queued — poll for a job with type === "PUBLISH_POST" and a matching postId to get the live URL.
| Status | Meaning |
|---|---|
PENDING | Queued, not yet picked up by a worker |
RUNNING | Pipeline is actively executing |
COMPLETED | Success — check result.wpUrl for the WordPress link |
FAILED | Pipeline failed — check result.error for the reason |
# Poll for job status
curl https://notipo.com/api/jobs \
-H "X-API-Key: your-api-key"
# Find entry where pgBossJobId matches the jobId from /api/posts/create
# result.wpUrl contains the live URL once PUBLISH_POST completesQuick Example
Trigger an immediate sync from any script or workflow tool:
curl -X POST https://notipo.com/api/sync-now \
-H "X-API-Key: your-api-key"Notipo will immediately poll your Notion database for any pages with a trigger status (Post to Wordpress, Publish, Update Wordpress) and process them. Available on the Pro plan with a 15-second cooldown.
Using with n8n
Notipo works as a drop-in publishing engine for n8n workflows — replace dozens of custom nodes with a single HTTP request. See the n8n integration guide for workflow templates and examples.