Skip to Content
Authentication

API Authentication

Trainwave provides secure authentication for API access. This guide covers everything you need to know about authenticating your API requests.

Quick Start

# Generate an API token in the dashboard # Then use it in your requests: curl -H "Accept: application/json" \ -H "X-API-KEY: your-api-key" \ https://backend.trainwave.ai/api/v1/jobs/

Generating an API Token

  1. Log in to the Trainwave dashboard
  2. Navigate to Settings → API Tokens
  3. Click “Generate New Token”
  4. Set a descriptive name
  5. Copy the token immediately — it won’t be shown again

Using API Keys

Include your token in the X-API-KEY header:

# Python example import requests headers = { "Accept": "application/json", "X-API-KEY": "your-api-key" } response = requests.get( "https://backend.trainwave.ai/api/v1/jobs/", headers=headers )
// JavaScript example const response = await fetch("https://backend.trainwave.ai/api/v1/jobs/", { headers: { Accept: "application/json", "X-API-KEY": "your-api-key", }, });

Security Best Practices

  • Store API keys in environment variables, not in source code
  • Use different keys for different environments (development, staging, production)
  • Rotate keys regularly
  • Never share keys between team members — generate individual keys per person or service

Example using environment variables:

import os API_KEY = os.getenv("TRAINWAVE_API_KEY") if not API_KEY: raise ValueError("TRAINWAVE_API_KEY environment variable is required")

Key Rotation

# Set a new token via the CLI wave auth set-token new-token-value

Revoke old tokens from the tokens dashboard.

Troubleshooting

Invalid API Key

{ "success": false, "error": { "code": "invalid_api_key", "message": "The provided API key is invalid or expired" } }

Verify your token is correct and has not been revoked in the dashboard.

Rate Limit Exceeded

{ "success": false, "error": { "code": "rate_limit_exceeded", "message": "Too many requests" } }

Implement exponential backoff in your client when you receive 429 responses.

Support

[email protected]

Last updated on