API Reference

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).

Was this article helpful?