Skip to main content

API Documentation

The Strive API lets you programmatically access your goals, milestones, and profile data. Use it to build integrations, automate workflows, or connect Strive with other tools.

Base URL

https://api.strivejournal.com

All API endpoints are prefixed with /api/v1.

Authentication

Every request must include a valid API key in the Authorization header:

Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API keys can be created in the Strive app under Settings > API Keys, or via the API Keys endpoints.

API Key Format

Keys use the prefix sk_live_ followed by 64 hexadecimal characters. The full key is only shown once at creation time — store it securely.

Scopes

Each API key has a set of scopes that determine which endpoints it can access:

ScopeDescription
goals:readRead goals
goals:writeCreate and update goals
milestones:readRead milestones
milestones:writeCreate and update milestones
user:readRead your profile
posts:readRead posts
posts:writeCreate and delete posts
supports:readRead supports

If a request requires a scope that the API key doesn't have, the server returns a 403 Forbidden response.

Rate Limiting

The API allows 60 requests per minute per API key.

Rate limit information is included in every response:

HeaderDescription
X-RateLimit-LimitMaximum requests per window (60)
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when the window resets

When the limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait.

Response Format

All successful responses return JSON with a data field:

{
"data": { ... }
}

Error responses include an error field:

{
"error": "Description of what went wrong"
}

Common HTTP Status Codes

StatusMeaning
200Success
201Created
400Bad request (invalid parameters)
401Not authenticated (missing or invalid API key)
403Forbidden (insufficient scopes or access denied)
404Resource not found
429Rate limit exceeded

Health Check

You can verify the API is operational with a simple GET request:

curl https://api.strivejournal.com/status
{
"status": "ok",
"timestamp": "2026-02-22T12:00:00.000Z"
}

This endpoint does not require authentication.