API Reference
All API-key-authenticated endpoints live under /api/v1/. Every response returns JSON in the format { data, error }.
> Base URL: https://www.outpacer.ai (always use www to avoid redirect issues)
Authentication
``
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
`
Generate API keys at Dashboard > Settings > API Keys. Keys start with bst_.
Websites
List websites
`
GET /api/v1/websites
`
Get website details
`
GET /api/v1/websites/:id
`
Create website
`
POST /api/v1/websites
Body: { "domain": "example.com", "name": "My Site", "cms_type": "wordpress", "industry": "power washing" }
`
> Always include industry — it drives keyword research and content plan generation. Be specific: use "power washing" instead of "home services", "vacation rentals" instead of "real estate".
Update website
`
PATCH /api/v1/websites/:id
Body: { "name": "New Name", "industry": "vacation rentals", "target_audience": "property managers" }
`
Articles
List articles
`
GET /api/v1/articles?website_id=XXX&status=draft
`
Get article
`
GET /api/v1/articles/:id
`
Generate article
`
POST /api/v1/articles/generate
Body: { "website_id": "XXX", "keyword": "best pressure washers" }
`
Edit article
`
PATCH /api/v1/articles/:id
Body: { "title": "New Title", "content_markdown": "..." }
`
Approve article
`
POST /api/v1/articles/:id/approve
`
Publish article
`
POST /api/v1/articles/:id/publish
`
Rewrite a section
`
POST /api/v1/articles/:id/rewrite
Body: { "selected_text": "paragraph to rewrite", "instruction": "make more engaging" }
`
Refresh article
`
POST /api/v1/articles/:id/refresh
`
Content Plans
Get content plan
`
GET /api/v1/content-plans?website_id=XXX
`
Generate content plan
`
POST /api/v1/content-plans
Body: { "website_id": "XXX" }
`
Keywords
Research a keyword
`
GET /api/v1/keywords/research?keyword=content+marketing&location=United+States
`
Analytics
Get analytics and rankings
`
GET /api/v1/analytics?website_id=XXX
`
Tools
Generate interactive tool
`
POST /api/v1/tools/generate
Body: { "website_id": "XXX", "tool_name": "Cost Calculator", "tool_type": "cost_calculator", "target_keyword": "pressure washing cost" }
`
Get tool suggestions
`
POST /api/v1/tools/suggest
Body: { "website_id": "XXX" }
`
Rate Limits
API requests are rate-limited to 60 requests per minute per API key. Article generation and keyword research have additional limits based on your plan tier. Rate limit headers are included in every response:
- X-RateLimit-Limit
— Maximum requests per window - X-RateLimit-Remaining
— Requests remaining - X-RateLimit-Reset
— Unix timestamp when the window resets
Error Handling
All errors return a JSON response with an error field:
`json
{
"data": null,
"error": "Article not found"
}
``
Common HTTP status codes: 400 (bad request), 401 (unauthorized), 403 (forbidden), 404 (not found), 429 (rate limited), 500 (server error).