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.com

Self-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

MethodPath
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.

StatusMeaning
PENDINGQueued, not yet picked up by a worker
RUNNINGPipeline is actively executing
COMPLETEDSuccess — check result.wpUrl for the WordPress link
FAILEDPipeline 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 completes

Quick 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.