Purefeed API
Connect your AI tools directly to your Purefeed intelligence feed. Use the REST API or install the OpenClaw skill to access your signals, search tweets, generate content, and publish — all from your AI assistant.
Quick Start
Get your API key
Go to purefeed.ai/profile and create an API key in the Public API Keys section.
Test your key
curl -s https://purefeed.ai/api/v1/auth/me \
-H "Authorization: Bearer YOUR_API_KEY"Start using the API
Use the REST endpoints below directly, or install the OpenClaw skill for the easiest AI integration.
OpenClaw Setup
The fastest way to connect Purefeed to your AI assistant. One command installs everything — no MCP server, no npm packages, no Node.js required.
# Install the Purefeed skill
clawhub install purefeed
# Set your API key
openclaw config set skills.purefeed.env.PUREFEED_API_KEY "pf_live_YOUR_KEY_HERE"That's it. OpenClaw will automatically use the Purefeed API when you ask about your Twitter feed, signals, or content generation. The skill teaches your AI assistant how to call the REST API directly via curl.
curl examples.API Reference
Base URL: https://purefeed.ai/api/v1
All requests require an Authorization: Bearer YOUR_API_KEY header. Responses return { "data": ..., "error": null } on success.
Account
/auth/meGet the authenticated user's profile. Use to verify your API key works.
Feed & Discovery
/feedRetrieve tweets ranked by signal relevance.
limitintsearchstringsignal_idsstring/searchFull-text search across your signal-matched tweets.
querystringrequiredlimitint/feed/signalsGet AI signal analysis for specific tweet IDs.
tweet_idsstringrequiredFolders
/foldersList all bookmark folders.
/folders/:id/tweetsGet tweets saved in a specific folder.
limitintSignals
/signalsList all signal configurations.
/signalsCreate and auto-activate a new signal. Takes up to 6 hours to process existing tweets.
namestringrequireddescriptionstringtagsstring[]include_keywordsstring[]exclude_keywordsstring[]cronstringtimezonestring/signals/:idGet details of a specific signal.
/signals/:idUpdate a signal's name, description, or schedule.
namestringdescriptionstringcronstringtimezonestring/signals/:idPermanently delete a signal (irreversible).
/signals/:id/matchesGet tweets matching a specific signal.
limitintContent Studio
/stylesList available writing styles. Call before generating posts.
/studio/generateGenerate a tweet or thread using a writing style. Returns streaming text.
styleIdintrequiredtweetIdsstring[]ideaPromptstring/studio/humanizeScore a post for AI-likeness (1-100) and get a rewrite if score > 30. Returns streaming text.
postsstring[]required/studio/publishPublish a post to X/Twitter immediately. Requires Typefully connection.
postsstring[]required/studio/scheduleSchedule a post for a specific time.
postsstring[]requiredscheduledAtstring (ISO 8601)required/studio/draftSave a post as a draft in Typefully.
postsstring[]required/studio/queueAdd a post to the next available posting slot.
postsstring[]requiredResponse Examples
Feed / Search Response
{
"data": [
{
"tweet_id": "1234567890",
"full_text": "The latest AI breakthroughs are...",
"creation_date": "2026-03-10T14:30:00Z",
"views": 12500,
"replies": 42,
"retweets": 189,
"screen_name": "techleader",
"profile_image_url": "https://pbs.twimg.com/...",
"signals": [
{
"signal_name": "AI Research",
"content": "Discusses new transformer architecture...",
"sentiment": "positive",
"industry_category": "Technology"
}
]
}
]
}Signals List Response
{
"data": [
{
"id": 1,
"user_signal_name": "AI Research",
"signal_description": "Track breakthroughs in AI...",
"creation_date": "2026-01-15T09:00:00Z"
}
]
}Humanize Response (Pass)
{
"data": {
"score": 22,
"reasons": "Natural tone, varied sentence structure...",
"rewrite": null
}
}Humanize Response (Fail)
When the score exceeds 30, the response includes a rewritten version. The first line is JSON with the score and reasons, followed by the rewritten text.
{"score": 78, "reasons": "Repetitive structure, overly formal..."}
Here's a more natural version of your post that maintains
the core message while sounding more authentic...Error Reference
| Error | What to do |
|---|---|
| 401 Unauthorized | API key is invalid or expired. Create a new key at purefeed.ai/profile. |
| 429 Too Many Requests | Rate limit exceeded. Wait and retry (60 req/min). |
| No Typefully connection | Connect your Typefully account in settings to publish posts. |
| No LLM API keys configured | Add your LLM API keys in Studio settings. |
| Writing style not found | Call GET /styles to get valid style IDs. |
| Signal not found | Call GET /signals to get valid signal IDs. |
Rate Limits
60 requests per minute
- Rate limits are per API key.
- Streaming endpoints count as 1 request each.
- When rate-limited, the response includes a
Retry-Afterheader indicating how long to wait. - HTTP status
429is returned when the limit is exceeded.