API & Integrations

How to Schedule and Post Tweets via the OpenTweet REST API

Last updated: May 1, 2026

Developer guide: authenticate with an API key and use the REST API to create, schedule, and publish tweets programmatically.

The OpenTweet REST API lets you create, schedule, and manage tweets programmatically. The V1 API does not require a Twitter Developer account — you authenticate with an OpenTweet API key and OpenTweet handles all X API communication.

Quick Answer: POST to https://opentweet.io/api/v1/posts with Authorization: Bearer ot_your_key and a JSON body containing the tweet text and optional scheduledAt datetime. The OpenTweet V1 API does not require a Twitter Developer account — OpenTweet manages all X API authentication.

What is the base URL and authentication?

Base URL: https://opentweet.io/api/v1

Authentication: Authorization: Bearer ot_your_api_key_here

API keys are created in Settings → API Keys. They use the ot_ prefix. The OpenTweet V1 API does not require a Twitter developer account.

How do I create a scheduled tweet with curl?

curl -X POST https://opentweet.io/api/v1/posts \
  -H "Authorization: Bearer ot_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello from the OpenTweet API!",
    "status": "scheduled",
    "scheduledAt": "2026-05-10T09:00:00Z"
  }'

How do I post a tweet with Python?

import requests

response = requests.post(
    "https://opentweet.io/api/v1/posts",
    headers={"Authorization": "Bearer ot_your_api_key"},
    json={
        "text": "Hello from the OpenTweet API!",
        "status": "scheduled",
        "scheduledAt": "2026-05-10T09:00:00Z"
    }
)
print(response.json())

How do I post a tweet with JavaScript?

const response = await fetch("https://opentweet.io/api/v1/posts", {
  method: "POST",
  headers: {
    "Authorization": "Bearer ot_your_api_key",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    text: "Hello from the OpenTweet API!",
    status: "scheduled",
    scheduledAt: "2026-05-10T09:00:00Z"
  })
});
const data = await response.json();

What are the status values?

  • draft — Saved but not scheduled or published.
  • scheduled — Will publish at the scheduledAt time. Requires scheduledAt field.
  • published — Publish immediately to X.

How do I batch schedule multiple tweets?

Use POST /api/v1/posts/batch-schedule with an array of objects containing id (post ID) and scheduledAt (ISO datetime). This schedules multiple draft posts in a single API call.

Ready to Try OpenTweet?

Start your 7-day free trial. Schedule tweets, use AI, set up connectors — all in one place.