Running Days Docs
GitHub

API Reference

The Running Days API is a RESTful service built with Fastify 5. All endpoints return JSON and use standard HTTP status codes.

Base URL

text
https://api.running-days.app/api/v1

For local development:

text
http://localhost:3000/api/v1

Authentication

All authenticated endpoints require a valid JWT token. See Authentication for details on obtaining tokens.

http
Authorization: Bearer <access_token>

Or via httpOnly cookies (automatically set by the auth flow).

API Sections

SectionDescription
AuthenticationApple Sign-In, sessions, token refresh
GoalsYear-long running day targets
WebhooksHealth Auto Export integration

Common Response Formats

Success Response

json
{
  "success": true,
  "data": { ... }
}

Error Response

json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Validation failed"
}

Rate Limiting

API requests are rate limited per user:

Endpoint TypeLimit
Auth endpoints10 req/min
Read endpoints100 req/min
Write endpoints30 req/min

Rate limit headers are included in responses:

  • X-RateLimit-Limit: Maximum requests allowed
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Unix timestamp when limit resets

OpenAPI Documentation

Interactive API documentation is available at:

text
GET /api/v1/docs

Error Codes

StatusMeaning
400Bad Request - Invalid parameters
401Unauthorized - Missing or invalid token
403Forbidden - Insufficient permissions
404Not Found - Resource doesn’t exist
423Locked - Account locked due to failed attempts
429Too Many Requests - Rate limited
500Internal Server Error