API

API Reference

REST endpoints for integrating Indxel with your tools and workflows.

Authentication

Two authentication methods depending on the endpoint:

  • Bearer token — For CLI endpoints. Use your account API key (ixu_...). Find it in Settings.
  • Session — For dashboard endpoints. Requires an authenticated browser session.
Bearer token examplebash
curl -X POST https://indxel.com/api/cli/push \
  -H "Authorization: Bearer ixu_your_account_key" \
  -H "Content-Type: application/json" \
  -d @crawl-results.json

Endpoints

MethodPathDescriptionAuth
POST/api/cli/pushPush crawl results from CLI to dashboardBearer (account API key)
GET/api/cli/planGet user's plan for an API keyBearer (account API key)
GET/api/projectsList all projects for the authenticated userSession
POST/api/projectsCreate a new project (enforces plan limit)Session
DELETE/api/projects/[id]Delete a project (cascades to checks and pages)Session
GET/api/projects/[id]/checksGet checks, pages, analysis, and diff for a projectSession
POST/api/checkoutCreate a Stripe checkout session for plan upgradeSession
POST/api/billing/portalCreate a Stripe billing portal sessionSession
POST/api/webhooks/stripeHandle Stripe subscription webhook eventsStripe signature

POST /api/cli/push

The primary endpoint for sending crawl results to the dashboard. Used by indxel crawl --push.

Request

Request bodytypescript
{
  "url": "https://mysite.com",
  "pages": [
    {
      "url": "https://mysite.com/pricing",
      "score": 91,
      "grade": "A",
      "errors": [],
      "warnings": [{ "id": "alternates-hreflang", "message": "..." }],
      "metadata": { "title": "...", "description": "..." },
      "h1s": ["Pricing"],
      "wordCount": 450,
      "responseTimeMs": 120,
      "structuredDataTypes": ["FAQPage"]
    }
  ],
  "averageScore": 88,
  "grade": "B",
  "totalPages": 47,
  "totalErrors": 3,
  "totalWarnings": 5,
  "durationMs": 12000,
  "analysis": {
    "duplicateTitles": [],
    "brokenInternalLinks": [],
    "thinContentPages": [],
    "orphanPages": []
  }
}

Response

Response (201)typescript
{
  "checkId": "clx123...",
  "projectId": "clx456...",
  "message": "Crawl results saved — 47 pages"
}

GET /api/cli/plan

Used by the CLI to check the user's plan and gate paid features.

Responsetypescript
{
  "plan": "pro",           // "free" | "pro" | "agency"
  "maxProjects": 5,
  "maxPagesPerCrawl": 1000,
  "checksPerMonth": -1,     // -1 = unlimited
  "features": ["indexation", "monitoring", "alerts", "gsc"]
}

Rate limits

API endpoints are rate-limited per API key. Free tier: 5 requests/minute. Pro: 60/minute. Agency: 300/minute.