Overview

Authentication API overview, base URL, and common patterns

All LegionEdge Platform API requests must be authenticated. This page covers the base URL, authentication methods, rate limits, and error handling conventions.

Base URL

All API requests target the following base URL:

https://api.legionedge.com/v2

For sandbox/testing environments:

https://api.sandbox.legionedge.com/v2

Authentication Methods

Include credentials in every request using one of these methods:

Bearer Token (OAuth)

curl -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..." \
  https://api.legionedge.com/v2/projects

API Key

curl -H "X-API-Key: le_live_abc123def456" \
  https://api.legionedge.com/v2/projects

SDK Authentication

import { LegionEdge } from "@legionedge/sdk";

// API key
const client = new LegionEdge({ apiKey: "le_live_abc123def456" });

// OAuth token
const client = new LegionEdge({ accessToken: "eyJhbGciOiJSUzI1NiIs..." });

Common Headers

HeaderDescription
AuthorizationBearer token (Bearer {token})
X-API-KeyAPI key for server-to-server auth
Content-Typeapplication/json for request bodies
X-Request-IdOptional client-generated request ID for tracing
X-Org-IdOverride the default organization (for multi-org keys)

Rate Limits

Rate limits are applied per authentication credential:

PlanRequests/MinuteBurst
Free6010
Pro600100
Enterprise6,0001,000

Rate limit headers are included in every response:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 594
X-RateLimit-Reset: 1700000060

Error Codes

The API uses standard HTTP status codes with a consistent error body:

{
  "error": {
    "code": "authentication_failed",
    "message": "The provided API key is invalid or has been revoked.",
    "status": 401,
    "requestId": "req_abc123"
  }
}

Common Error Codes

StatusCodeDescription
400invalid_requestMalformed request body or missing required fields
401authentication_failedInvalid or expired credentials
403insufficient_permissionsValid credentials but lacking required permissions
404not_foundRequested resource does not exist
409conflictResource already exists or state conflict
422validation_errorRequest body fails validation
429rate_limit_exceededToo many requests
500internal_errorUnexpected server error

Handling Errors in the SDK

import { LegionEdge, LegionEdgeError } from "@legionedge/sdk";

const client = new LegionEdge({ apiKey: process.env.LEGIONEDGE_API_KEY! });

try {
  const project = await client.projects.get("proj_nonexistent");
} catch (err) {
  if (err instanceof LegionEdgeError) {
    console.error(`[${err.code}] ${err.message}`);
    console.error(`Request ID: ${err.requestId}`);
    console.error(`Status: ${err.status}`);
  }
}

Pagination

List endpoints support cursor-based and offset-based pagination:

# Offset-based
GET /v2/projects?page=2&per_page=20

# Cursor-based
GET /v2/projects?cursor=eyJpZCI6InByb2pfYWJj&limit=20

Next Steps