Flow State API

Build AI coaching agents, training integrations, and automations with the Flow State Endurance API.

Getting Started

1. Generate an API Key

Go to Settings → API Keys and create a new key. Copy it — you'll only see it once.

Keys are prefixed with fse_live_ and are 41 characters long.

2. Make Your First Request

curl -H "Authorization: Bearer fse_live_YOUR_KEY" \
  "https://reachflowstate.ai/api/v1/athletes/me"

3. Explore

All endpoints are under https://reachflowstate.ai/api/v1/. Responses follow a consistent { data, meta? } format. Errors return { error: { code, message } }.

Authentication

All requests require a Bearer token in the Authorization header:

Authorization: Bearer fse_live_abc123def456...

Keys have scopes that control access:

  • read — GET endpoints (workouts, events, athlete profile, recovery)
  • write — POST/PUT/DELETE endpoints (create, update, delete resources)

Planning API uses a separate PLANNING_API_KEY — see the Planning API section below.

Rate Limits

Rate limits use a sliding window per API key:

100
req/min · Standard
1,000
req/min · Pro
100
req/hr · AI Coach

Every response includes rate limit headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 42

When exceeded, you'll receive a 429 with a Retry-After header (seconds).

Endpoints

Workouts

Events

Athletes

Plans

Sync

Planning API

The Planning API powers the Kanban board and is designed for AI agents (Claude, GPT, etc.) and automations. It uses a separate PLANNING_API_KEY for authentication.

Tasks

Quick Add

Agents

Agent Integration

The tool schema provides ready-to-use function definitions for Claude, GPT, and other LLM frameworks.

Claude MCP (experimental)

{
  "mcpServers": {
    "flowstate": {
      "command": "npx",
      "args": ["-y", "@anthropic/openapi-to-mcp", "--spec", "https://reachflowstate.ai/openapi.json"]
    }
  }
}

OpenAI Function Calling

Each tool in tool-schema.json maps directly to { type: "function", function: { name, description, parameters } }.