TimeToPost for n8n

A community node that lets an n8n workflow hand text to TimeToPost. It can create a draft that waits for your approval, schedule a post for a set time, and list your posts and connected accounts. The package is called n8n-nodes-timetopost.

The shape most people want is a workflow that watches something (a feed, a sheet, a release) and drops a ready-to-review draft into TimeToPost. You open the dashboard, read it, and approve it. The node never decides what goes live on its own.

Install the node

  1. In n8n go to Settings, then Community Nodes, and select Install.
  2. Enter the package name n8n-nodes-timetopost.
  3. Tick the box that says you understand the risks of installing unverified code from a public source, then select Install.

Installing community nodes from npm needs an Owner or Admin account on a self-hosted n8n. The node then appears in the node picker as TimeToPost.

Create the credential

In TimeToPost open Settings, then API, and create a token. In n8n add a new credential of type TimeToPost API, paste the token, and save. n8n runs a test request against GET /api/auth/me and tells you right away if the token is wrong. The API URL field already holds https://api.timetopost.co.

Treat the token like a password. It is stored by n8n, and you can revoke it from the same Settings page whenever you like.

What the node can do

ResourceOperationREST endpointNotes
DraftCreatePOST /api/drafts/batchAlways pending approval. Idempotent on the external reference.
PostSchedulePOST /api/postsNeeds a future date and a token that may publish.
PostGet ManyGET /api/postsFilter by status and set a limit in the node.
AccountGet ManyGET /api/integrationsOne item per connected account, with its ID.

These are the same endpoints documented in the REST API reference, and the same ones the MCP server calls. For an X thread, separate the tweets in the draft text with a line that holds only three dashes.

Sample workflow

A Schedule Trigger fires at 9 each morning and the TimeToPost node creates one draft for X. Copy the JSON, paste it onto an empty n8n canvas, choose your credential on the TimeToPost node, and edit the text. The external reference uses the date, so running it twice on the same day updates the same draft.

workflow.json
{
  "name": "TimeToPost: daily draft for approval",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            { "field": "days", "daysInterval": 1, "triggerAtHour": 9 }
          ]
        }
      },
      "id": "7a1f0c52-3b0e-4c53-9d10-1a5c0f6e0001",
      "name": "Every day at 9",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [0, 0]
    },
    {
      "parameters": {
        "resource": "draft",
        "operation": "create",
        "platform": "twitter",
        "text": "Daily note from n8n. Replace this with your own text or an expression.",
        "externalRef": "={{ 'daily-' + $now.toFormat('yyyy-MM-dd') }}",
        "additionalFields": {}
      },
      "id": "7a1f0c52-3b0e-4c53-9d10-1a5c0f6e0002",
      "name": "TimeToPost",
      "type": "n8n-nodes-timetopost.timeToPost",
      "typeVersion": 1,
      "position": [260, 0],
      "credentials": {
        "timeToPostApi": { "id": "REPLACE_WITH_YOUR_CREDENTIAL", "name": "TimeToPost API" }
      }
    }
  ],
  "connections": {
    "Every day at 9": {
      "main": [[{ "node": "TimeToPost", "type": "main", "index": 0 }]]
    }
  },
  "active": false,
  "settings": { "executionOrder": "v1" },
  "pinData": {}
}

Limits worth knowing

  • The node covers drafts, scheduling and listing. It does not publish immediately, cancel posts, upload media files or read analytics. Media is passed as a URL.
  • Post > Get Many downloads the posts for your workspace and filters by status inside the node, so on a large workspace it is slower than a server-side filter would be.
  • Post > Schedule needs a token that is allowed to publish, and your plan’s monthly post limit still applies.
  • Only networks that are live in your TimeToPost workspace accept posts. Some platforms need extra fields (TikTok choices, Pinterest boards) that this first version does not expose; use the REST API for those.
  • The package is not verified by n8n, so it installs on self-hosted instances and not from the n8n Cloud node picker.

Frequently asked questions

Will a workflow publish to my accounts without me seeing it?

Not through the Draft operation. Draft > Create sends the text to TimeToPost as a pending draft, and nothing goes out until a person approves it in the dashboard. Only Post > Schedule queues something for publishing, and it needs a token that is allowed to publish.

Which token do I use?

Create a personal API token in the dashboard under Settings, API, and paste it into the TimeToPost API credential in n8n. If your token is limited to drafts, creating drafts and listing works, and Post > Schedule is refused with a 403.

Does it work on n8n Cloud?

n8n documents npm installs of community nodes for self-hosted instances, with Owner or Admin rights. On n8n Cloud, community nodes appear only after n8n verifies them, and this node has not been submitted for that. If you use Cloud, call the REST API with the HTTP Request node instead, using the same endpoints listed below.

What happens if the workflow runs twice?

Draft > Create takes an External Reference. Sending the same reference again updates the pending draft instead of adding a duplicate. The default reference includes the workflow, execution and item number, so set your own, for example the date, when you want reruns to merge.

Which platforms can I target?

Whatever you have connected in TimeToPost. Run Account > Get Many to see the connected accounts and their IDs, and pass an account ID when you have more than one account on a platform.

Prefer to let an AI agent drive instead of a workflow? See the MCP server. For a full n8n pipeline walkthrough, read the n8n shorts pipeline guide.