How to Schedule and Post Tweets via the OpenTweet REST API
Last updated: May 1, 2026
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.
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.