{
  "data": {
    "a": {
      "slug": "cloudflare-ai-gateway",
      "name": "Cloudflare AI Gateway",
      "vendor": "Cloudflare, Inc.",
      "vendorUrl": "https://www.cloudflare.com",
      "kind": "router",
      "category": "inference",
      "summary": "AI Gateway is Cloudflare's proxy and router for model providers. Agents call OpenAI-style, Anthropic-style or native endpoints on the Cloudflare API, with logging, caching, rate and spend limits, retries, fallbacks and one prepaid credit balance.",
      "url": "https://www.anchorterminal.com/tools/cloudflare-ai-gateway",
      "markdownUrl": "https://www.anchorterminal.com/tools/cloudflare-ai-gateway.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/cloudflare-ai-gateway.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/cloudflare-ai-gateway.json",
      "dns": "cloudflare-ai-gateway.grade.anchorterminal.com",
      "repo": "https://github.com/cloudflare/ai",
      "license": "Proprietary service under Cloudflare's Self-Serve Subscription Agreement and its service-specific terms. Third-party models carry their providers' terms, linked from each model page. `ai-gateway-provider` is MIT and Cloudflare's OpenAPI repository is BSD-3-Clause",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai",
      "packages": [
        {
          "registry": "npm",
          "name": "ai-gateway-provider"
        },
        {
          "registry": "npm",
          "name": "cloudflare"
        },
        {
          "registry": "pypi",
          "name": "cloudflare"
        }
      ],
      "auth": "api-key",
      "authNotes": "A Cloudflare API token as a Bearer header, created by a person in the dashboard. The `/ai/*` inference routes need Workers AI Read, and the `/ai-gateway/*` management routes need AI Gateway Read or Edit. Provider-native endpoints on `gateway.ai.cloudflare.com` take the token in `cf-aig-authorization`. Tokens can carry an expiry and an IP address filter and cannot be limited to one gateway. Access is self-serve, with no review or sales step.",
      "pricing": "freemium",
      "pricingNotes": "Free on all plans for analytics, caching, rate limiting and DLP scanning, with a Cloudflare account. Third-party models are paid from prepaid Unified Billing credits at provider prices plus a 5 per cent fee on each credit purchase, or with the caller's own provider keys at no Cloudflare charge. Guardrails are billed as Workers AI inference. Accounts whose first gateway dates from 24 September 2026 or later keep logs in Workers Logs at Workers Logs pricing, older accounts in Legacy Logs (100,000 logs on Workers Free, 10,000,000 per gateway on Workers Paid). Logpush follows Logpush pricing (https://developers.cloudflare.com/ai-gateway/reference/pricing/, checked 2026-11-01).",
      "priceSummary": "5% fee",
      "where": "hosted",
      "x402": {
        "level": "partial",
        "evidence": "Machine Payments, in beta since 30 September 2026, takes x402 payment on `POST /ai/run` for four open models when the request carries `Payment-Method: x402`. It needs a Cloudflare API token, a United States account and a card on file. The OpenAI-style and Anthropic-style routes are not covered. We did not call it (https://developers.cloudflare.com/ai-gateway/features/machine-payments/, checked 2026-10-09).",
        "endpoints": [
          {
            "url": "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run",
            "priceUsd": null,
            "network": ""
          }
        ]
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 250648,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://developers.cloudflare.com/ai-gateway/",
      "llmsTxt": "https://developers.cloudflare.com/ai-gateway/llms.txt",
      "openapi": "https://raw.githubusercontent.com/cloudflare/api-schemas/main/openapi.json",
      "capabilities": [
        "inference.llm",
        "inference.router",
        "obs.gateway",
        "guard.moderation",
        "guard.pii"
      ],
      "tags": [
        "hosted",
        "router",
        "free-tier",
        "usage-based",
        "x402",
        "openapi",
        "llms-txt",
        "openai-compatible",
        "typescript",
        "python",
        "go",
        "status-page",
        "bug-bounty"
      ],
      "lastRelease": "2026-10-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.8,
        "grade": "B",
        "agentReady": false,
        "rank": 300,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 75,
          "payments": 52,
          "reliability": 66,
          "schema": 75,
          "security": 80,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -3,
        "negativeNotes": [
          "6 October 2026. Rejected-credential responses on `POST /ai/run` changed status (ElevenLabs 403, Vertex 500 and other providers' 402 became 401 with code 2009, and Unified Billing rejections became 503) on the day of the changelog entry, with no advance notice found. On 8 October new log IDs and request IDs changed from ULIDs and random UUIDs to UUIDv7, announced the same day with advice to update code that checks the ULID format. Repeats of one kind fold into one term. Three points (https://developers.cloudflare.com/ai-gateway/changelog/)."
        ],
        "verdict": "The gateway layer is free, per-model prices are public with no markup, and logs, spend limits and fallbacks are set per gateway. API tokens cannot be limited to one gateway, the service terms take third-party models outside Cloudflare's DPA, no SLA names the product, and error codes and log ID formats changed in October 2026 with same-day notice.",
        "bestFor": "Teams that already hold a Cloudflare account and want one token, one bill, logs, budgets and fallbacks in front of several model providers, or that want to keep their own provider keys behind a proxy with spend limits.",
        "strengths": [
          "Core gateway functions (analytics, caching, rate limiting) are free on all plans, and provider prices pass through with no markup",
          "One Cloudflare API token reaches 241 catalogue models through OpenAI Chat Completions, OpenAI Responses, Anthropic Messages or the native `/ai/run` route",
          "Spend limits block requests with a 429 once a budget is reached, scoped by model, provider or request metadata, with up to 20 rules a gateway",
          "Logging is switched per gateway and per request, and `cf-aig-collect-log-payload: false` keeps token and cost metadata without storing prompts",
          "x402 payment (Machine Payments, beta since 30 September 2026) works on `POST /ai/run` for four open models"
        ],
        "weaknesses": [
          "API tokens are account-scoped. Any token with AI Gateway Run can send requests through every gateway in the account and spend its stored provider keys",
          "The service-specific terms say the DPA and Information Security Exhibit do not apply to third-party models reached through AI Gateway",
          "No SLA naming AI Gateway was found. The Enterprise SLA lists service-specific SLAs for R2, Queues and Workers only",
          "On 6 October 2026 rejected-credential responses on `/ai/run` changed to 401 with code 2009, and on 8 October log IDs became UUIDv7, each announced the same day",
          "Unified Billing traffic is capped at 200 requests per 60 seconds per gateway, and a 5 per cent fee applies to credit purchases",
          "Section 2.2(e) of the Self-Serve Subscription Agreement bars automated agents that generate automated requests into the Services, which matters before any probe is run",
          "`ai-gateway-provider` was feature frozen and deprecated on 21 October 2026 in favour of `createAI` in the Agents SDK"
        ],
        "agentNotes": [
          "Use the REST API at `api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1` with a token holding Workers AI Read. A token with only an AI Gateway permission returns 401 with code 10000",
          "Send `cf-aig-gateway-id` on every Workers AI (`@cf/`) call and on dynamic routes. Without it a dynamic route resolves against the default gateway and returns 404",
          "Set `cf-aig-collect-log: false` or `cf-aig-collect-log-payload: false` on sensitive requests. Logging of prompts and responses is on by default",
          "Treat a 429 as a rate limit or a spent budget and a 401 with code 2009 as a rejected provider key. Do not retry a 2009",
          "Set `byok_only` on the gateway or send `cf-aig-no-wholesale: true` to stop a request without a provider key falling through to paid Unified Billing credits",
          "Use `createAI` from the `agents` package for new AI SDK code. `ai-gateway-provider` is deprecated and gets no new work"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.8
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 75,
          "payments": 52,
          "reliability": 66,
          "schema": 75,
          "security": 80,
          "transparency": 51
        },
        "provenanceScore": 96,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST \"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/v1/chat/completions\" \\\n  --header \"Authorization: Bearer $CLOUDFLARE_API_TOKEN\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n    \"model\": \"openai/gpt-4.1-mini\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"What is Cloudflare?\"}]\n  }'",
        "x402": "curl -iX POST \"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run\" \\\n  --header \"Authorization: Bearer $CLOUDFLARE_API_TOKEN\" \\\n  --header \"Payment-Method: x402\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\"model\":\"z-ai/glm-4.7-flash\",\"input\":{\"messages\":[{\"role\":\"user\",\"content\":\"What is Cloudflare?\"}]}}'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.llm",
        "tool": "https://letme.dev/cloudflare-ai-gateway"
      },
      "sameCompany": [
        "cloudflare-workers-ai",
        "cloudflare-sandbox-sdk",
        "cloudflare-workers-oauth-provider",
        "cloudflare-web-search",
        "cloudflare-clairic",
        "cloudflare-ai-search",
        "cloudflare-cli",
        "cloudflare-mcp",
        "cloudflare-email-service",
        "cloudflare-r2",
        "cloudflare-clef"
      ],
      "area": "models",
      "unitPrices": [
        {
          "item": "Unified Billing credit purchase fee",
          "unit": "pct",
          "usd": 5,
          "note": "a $100 purchase is charged $105"
        }
      ],
      "provenance": {
        "legalEntity": "Cloudflare, Inc.",
        "domain": "cloudflare.com",
        "domainRegistered": "2009-02-17",
        "endpointOnVendorDomain": true,
        "terms": "https://www.cloudflare.com/terms/",
        "privacy": "https://www.cloudflare.com/privacypolicy/",
        "statusPage": "https://www.cloudflarestatus.com",
        "changelog": "https://developers.cloudflare.com/ai-gateway/changelog/",
        "securityTxt": "valid",
        "checked": "2026-10-09",
        "notes": [
          "Terms are the Self-Serve Subscription Agreement, last updated 12 September 2025, which names Cloudflare, Inc. at 101 Townsend St, San Francisco.",
          "The service-specific terms (https://www.cloudflare.com/service-specific-terms-developer-platform/), last updated 28 September 2026, have a section for Workers AI and AI Gateway that supplements the agreement.",
          "The privacy policy is effective from 4 November 2025. The customer DPA is version 6.4, effective 3 April 2026.",
          "www.cloudflare.com/.well-known/security.txt, read on 9 October 2026, names HackerOne and a disclosure policy and has no Expires field. It is recorded as valid, although RFC 9116 asks for that field.",
          "The inference endpoints are on api.cloudflare.com and gateway.ai.cloudflare.com.",
          "The status page lists AI Gateway as its own component, operational on 9 October 2026.",
          "RDAP for cloudflare.com gives a registration date of 2009-02-17."
        ],
        "score": 96
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/cloudflare-ai-gateway.json",
      "live": {
        "slug": "cloudflare-ai-gateway",
        "probe": {
          "target": "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai",
          "method": "get",
          "lastAt": "2026-11-07T18:20:17.774465869Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 163,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 43,
          "p95ms24h": 148,
          "samples24h": 239,
          "samples30d": 7205,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.cloudflarestatus.com",
          "indicator": "major",
          "summary": "Partial System Outage",
          "checkedAt": "2026-11-07T18:20:41.845273095Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "cloudflare/ai",
            "version": "ai-gateway-provider@4.0.2",
            "released": "2026-10-20",
            "seenAt": "2026-11-06T23:15:38.559571341Z"
          },
          {
            "registry": "npm",
            "name": "ai-gateway-provider",
            "version": "4.0.2",
            "seenAt": "2026-11-06T23:15:36.263846681Z"
          },
          {
            "registry": "npm",
            "name": "cloudflare",
            "version": "7.3.0",
            "seenAt": "2026-11-06T23:15:36.494835591Z"
          },
          {
            "registry": "pypi",
            "name": "cloudflare",
            "version": "5.10.0",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:15:38.451058045Z"
          }
        ],
        "githubStars": 1214,
        "npmWeekly": 232984,
        "pypiWeekly": 584250,
        "securityTxt": {
          "url": "https://cloudflare.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-11-07T16:00:23.467095484Z"
        },
        "llmsTxt": {
          "url": "https://developers.cloudflare.com/ai-gateway/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:51.067852107Z"
        },
        "domain": {
          "domain": "cloudflare.com",
          "registered": "2009-02-17",
          "source": "https://rdap.verisign.com/com/v1/domain/cloudflare.com",
          "checkedAt": "2026-11-01T14:18:56.122446983Z"
        },
        "pages": [
          {
            "url": "https://developers.cloudflare.com/ai-gateway/changelog/",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:42.700833734Z",
            "changedAt": "2026-11-07T14:03:42.700833734Z",
            "fingerprint": "e12d8cc0ccb6"
          },
          {
            "url": "https://developers.cloudflare.com/ai-gateway/reference/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:44.942884533Z",
            "changedAt": "2026-11-05T12:27:58.285650461Z",
            "fingerprint": "37ec41081ede"
          },
          {
            "url": "https://www.cloudflare.com/privacypolicy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:26:53.030074077Z",
            "changedAt": "2026-11-06T13:47:54.357995184Z",
            "fingerprint": "282aa4b71b3e"
          },
          {
            "url": "https://www.cloudflare.com/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:26:55.359645005Z",
            "changedAt": "2026-10-22T01:30:41.491480215Z",
            "fingerprint": "515e09b3c6ed"
          }
        ],
        "github": {
          "repo": "cloudflare/ai",
          "checkedAt": "2026-11-02T08:39:38.372041532Z",
          "stars": 1210,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-27T10:39:35Z",
          "openIssues": 63,
          "openPRs": 21,
          "issuesOpened90d": 21,
          "issuesClosed90d": 12,
          "prsMerged90d": 6,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 49,
            "failure": 0,
            "other": 1,
            "latest": "success",
            "latestAt": "2026-10-27T10:42:34Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-v85r-hgf6-q875",
              "severity": "medium",
              "published": "2025-11-04T18:27:48Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 14,
            "medianDays": 0.1
          }
        },
        "updatedAt": "2026-11-07T18:20:17.774465869Z"
      }
    },
    "answer": "Cloudflare AI Gateway scores 67.8 (B) on agent readiness against Eden AI's 59.9 (C), and leads in 4 of 7 scored categories. Eden AI leads on schema \u0026 documentation.",
    "b": {
      "slug": "eden-ai",
      "name": "Eden AI",
      "vendor": "Eden AI SAS",
      "vendorUrl": "https://www.edenai.co",
      "kind": "router",
      "category": "inference",
      "summary": "Eden AI is a French AI gateway with one OpenAI-compatible API key for about 1,000 chat and expert models from 80 or more providers, including OCR, speech, translation and image analysis, with an EU-only endpoint and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/eden-ai",
      "markdownUrl": "https://www.anchorterminal.com/tools/eden-ai.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/eden-ai.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/eden-ai.json",
      "dns": "eden-ai.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.edenai.run/mcp",
      "packages": [],
      "auth": "api-key",
      "authNotes": "Bearer key created in the dashboard at app.edenai.run after a browser signup. Keys carry budgets, expiry and attribution, can be managed through a key API, and can be limited to chosen models by deny-by-default guardrails. The MCP server takes the same key in the Authorization header.",
      "pricing": "usage",
      "pricingNotes": "Provider list prices with no markup plus a 5.5% platform fee applied when buying credits. Prepaid credits through Stripe by card, PayPal or bank transfer, with optional auto-refill. Some models are billed $0 for tests. The Advanced plan is by quote.",
      "priceSummary": "5.5% fee",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the OpenAPI spec, the pricing pages or the agent catalogue (checked 2026-11-06). Credits are bought through Stripe.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://www.edenai.co/docs",
      "llmsTxt": "https://www.edenai.co/llms.txt",
      "openapi": "https://api.edenai.run/v3/docs/openapi.json",
      "capabilities": [
        "inference.router",
        "inference.llm",
        "embed.text",
        "translate.text",
        "translate.documents",
        "docs.ocr",
        "speech.stt",
        "speech.tts",
        "image.generate",
        "guard.moderation"
      ],
      "tags": [
        "hosted",
        "router",
        "openai-compatible",
        "usage-priced",
        "prepaid",
        "mcp",
        "remote-mcp",
        "api-key",
        "llms-txt",
        "openapi",
        "eu",
        "eu-region",
        "soc2",
        "iso27001",
        "batch",
        "closed-source"
      ],
      "lastRelease": "2026-11-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.9,
        "grade": "C",
        "agentReady": false,
        "rank": 672,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 22,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 58,
          "payments": 30,
          "reliability": 33,
          "schema": 81,
          "security": 82,
          "transparency": 55
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Eden AI gives one OpenAI-compatible key to about 1,000 models and expert models such as OCR, speech and translation, with an EU-only endpoint, per-key guardrails and no stored content by default. No status page, SLA or changelog was found, and its own pages disagree on the default rate limit.",
        "bestFor": "Teams that want one key and bill for many LLMs plus OCR, speech, translation and web tools, with EU-only processing.",
        "strengths": [
          "OpenAI-compatible v3 API with an OpenAPI 3.1 spec and a keyless model catalogue with prices and regions",
          "EU endpoint that refuses models not cleared for European processing with HTTP 451",
          "Content isn't stored or used for training by default, with opt-in logs and enforceable Zero Data Retention",
          "Per-key budgets, expiry and deny-by-default guardrails, plus a key management API",
          "Hosted MCP server exposing OCR, speech, translation, web search and other expert models as tools"
        ],
        "weaknesses": [
          "No public status page, incident history or SLA found",
          "The rate-limits page says 10 requests a second and the plans page says 7, raisable to 15",
          "No public changelog or deprecation policy",
          "The OpenAPI spec documents few error responses",
          "Credits are prepaid through Stripe with a 5.5% platform fee on every purchase"
        ],
        "agentNotes": [
          "Read GET https://api.edenai.run/v3/models at run time for model ids, prices and regions instead of hard-coding them",
          "Use https://api.eu.edenai.run/v3 when data must stay in the EU, and pick another model on a 451 region_not_allowed",
          "Set max_tokens to 500 or more for reasoning models, or the answer can come back empty",
          "Pass a fallbacks list so a provider 429 or error retries inside one request",
          "Poll check_job for MCP tools marked long-running instead of calling them again"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.9
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 58,
          "payments": 30,
          "reliability": 33,
          "schema": 81,
          "security": 82,
          "transparency": 65
        },
        "provenanceScore": 44,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.edenai.run/v3/models",
        "claudeCode": "claude mcp add edenai --transport http https://mcp.edenai.run/mcp --header \"Authorization: Bearer $EDENAI_API_KEY\"",
        "config": {
          "mcpServers": {
            "edenai": {
              "headers": {
                "Authorization": "Bearer YOUR_EDENAI_API_KEY"
              },
              "url": "https://mcp.edenai.run/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/inference.router",
        "tool": "https://letme.dev/eden-ai"
      },
      "area": "models",
      "unitPrices": [
        {
          "item": "Platform fee on credit purchases",
          "unit": "pct",
          "usd": 5.5,
          "note": "On top of provider list prices, which carry no markup"
        }
      ],
      "provenance": {
        "legalEntity": "Eden AI SAS",
        "domain": "edenai.co",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.edenai.co/terms",
        "privacy": "https://www.edenai.co/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms, last updated 22 October 2026, name Eden AI SAS, share capital €4,992, 19 rue Louis Guérin, 69100 Villeurbanne, France, under French law with courts in Lyon.",
          "The API and MCP server run on edenai.run, a second domain of the same company, while the site and docs are on edenai.co.",
          "robots.txt on www.edenai.co allows all agents and carries `Content-Signal: search=yes, ai-input=yes, ai-train=yes`.",
          "/.well-known/security.txt returns 404. No status page is linked, and status.edenai.co didn't resolve on 6 November 2026.",
          "RDAP for edenai.co wasn't read: rdap.org rate-limited us and the .co registry server wasn't tried."
        ],
        "score": 44
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/eden-ai.json",
      "live": {
        "slug": "eden-ai",
        "probe": {
          "target": "https://mcp.edenai.run/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:22.496540152Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 123,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 50,
          "p95ms24h": 129,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "securityTxt": {
          "url": "https://edenai.co/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:41.694549385Z"
        },
        "llmsTxt": {
          "url": "https://www.edenai.co/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:20.299431316Z"
        },
        "pages": [
          {
            "url": "https://www.edenai.co/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:28:13.706474894Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "21a1da47a2ce"
          },
          {
            "url": "https://www.edenai.co/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:28:15.881335606Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9cd0db8f0f61"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.edenai.run/mcp",
          "checkedAt": "2026-11-07T01:44:01.27972989Z",
          "status": "ok",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "list_models",
              "description": "List available providers/models and their pricing.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "tool": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Optional tool name (as returned by tools/list) to filter on."
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              }
            },
            {
              "name": "list_voices",
              "description": "List the voices a text-to-speech model accepts, for audio_tts's 'voice'.\n\nThe model's default voice comes first.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "gender": {
                    "anyOf": [
                      {
                        "enum": [
                          "female",
                          "male",
                          "unknown"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Keep voices of this gender."
                  },
                  "language": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Keep voices speaking this language: 'fr' matches every region,\n'fr-CA' only that locale. Multilingual voices are always kept."
                  },
                  "limit": {
                    "default": 50,
                    "description": "Most voices to return (default 50, max 200); 'total' counts every match.",
                    "type": "integer"
                  },
                  "model": {
                    "description": "The audio_tts model, as 'provider' or 'provider/model' (e.g. 'amazon/neural').",
                    "type": "string"
                  }
                },
                "required": [
                  "model"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              }
            },
            {
              "name": "upload_file",
              "description": "Upload a file to Eden AI and get a file ID to use in other tools.\n\nOnly needed for local file content. If you already have a public URL\nfor the file, pass that URL directly to the tool's file parameter\ninstead — no upload needed.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "content_base64": {
                    "description": "The file content, base64-encoded.",
                    "type": "string"
                  },
                  "expires_in_days": {
                    "default": 30,
                    "description": "How long Eden AI keeps the file (1-30, default 30).",
                    "type": "integer"
                  },
                  "filename": {
                    "description": "Name with extension (used to detect the file type).",
                    "type": "string"
                  }
                },
                "required": [
                  "content_base64",
                  "filename"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              }
            },
            {
              "name": "check_job",
              "description": "Get the status/result of an async job started by a long-running tool.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "job_id": {
                    "description": "The job id returned when the job was submitted.",
                    "type": "string"
                  }
                },
                "required": [
                  "job_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              }
            },
            {
              "name": "manage_collections",
              "description": "Create and manage collections: stored sets of items (e.g. faces) that a tool searches against. Tools that take a collection_id: image_face_recognition. Flow: create, then add_item once per file (returns the item ids it indexed), then call the tool with the collection_id; delete when done. Arguments per action: create(model, tool?, name?); list(tool?, model?, page?); get, delete, list_items(collection_id); add_item(collection_id, file); delete_item(collection_id, item_id).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "action": {
                    "enum": [
                      "create",
                      "list",
                      "get",
                      "delete",
                      "add_item",
                      "list_items",
                      "delete_item"
                    ],
                    "type": "string"
                  },
                  "collection_id": {
                    "description": "From create or list.",
                    "type": "string"
                  },
                  "file": {
                    "description": "File to add (add_item). Pass a file ID (UUID) from upload_file, or a direct file URL.",
                    "type": "string"
                  },
                  "item_id": {
                    "description": "Item to delete (delete_item), from add_item or list_items.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Provider the collection binds to (create; list filter). image_face_recognition: amazon.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Optional label (create).",
                    "type": "string"
                  },
                  "page": {
                    "description": "Result page (list).",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "tool": {
                    "description": "Tool the collection serves (create; list filter). Defaults to image_face_recognition.",
                    "enum": [
                      "image_face_recognition"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "action"
                ],
                "type": "object"
              }
            },
            {
              "name": "audio_speech_to_text",
              "description": "Speech Recognition (or speech to text or voice to text) can recognize and transcribe spoken words (voice),  that will be converted to text with or without diarization. It is also possible to filter profanity. The type of files allowed are: mp3, wav, m4a. If convert_to_wav option is set to true, then you can transcribe any type of audio or video files. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Audio file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: audio/*.",
                    "type": "string"
                  },
                  "language": {
                    "description": "Language code in ISO format (e.g., 'en', 'fr', 'es')",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, assembly, deepgram, deepgram/base, deepgram/enhanced, deepgram/nova-3, gladia, google, gradium, gradium/stt-translate, greenpt, greenpt/green-s, greenpt/green-s-pro, microsoft, mistral, mistral/voxtral-mini-2602, mistral/voxtral-mini-latest, mistral/voxtral-mini-transcribe-3, mistral/voxtral-small-transcribe-3, openai. Call list_models for pricing.",
                    "type": "string"
                  },
                  "profanity_filter": {
                    "default": false,
                    "description": "Whether to filter profanity and replace inappropriate words with a series of asterisks",
                    "type": "boolean"
                  },
                  "speakers": {
                    "default": 2,
                    "description": "Number of speakers present in the audio",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "vocabulary": {
                    "description": "List of words or composed words to be detected by the speech to text engine",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "audio_tts",
              "description": "Text-to-speech (TTS) is a technology that converts written text into spoken audio, enabling computers and digital devices to \"read\" text aloud.  It is also known as speech synthesis, read aloud technology, or computer-generated speech.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "audio_format": {
                    "description": "Desired audio format (e.g., 'mp3', 'wav')",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon/neural, amazon/standard, deepgram/aura, deepgram/aura-2, elevenlabs, elevenlabs/eleven_flash_v2, elevenlabs/eleven_flash_v2_5, elevenlabs/eleven_multilingual_v2, elevenlabs/eleven_turbo_v2, elevenlabs/eleven_turbo_v2_5, elevenlabs/eleven_v3, google/casual, google/chirp-hd, google/chirp3-hd, google/gemini-2.5-flash-tts, google/gemini-2.5-pro-tts, google/gemini-3.1-flash-tts-preview, google/neural2, google/news, google/polyglot, google/standard, google/studio, google/wavenet, gradium, microsoft/neural, microsoft/neural-hd, mistral/voxtral-mini-tts-3, openai/gpt-4o-mini-tts, openai/tts-1, openai/tts-1-hd, ovhcloud/nvr-tts-de-de, ovhcloud/nvr-tts-en-us, ovhcloud/nvr-tts-es-es, ovhcloud/nvr-tts-it-it. Call list_models for pricing.",
                    "type": "string"
                  },
                  "speaking_pitch": {
                    "description": "Increase or decrease the speaking pitch by a percentage from -100% to 100%, 0 is normal.",
                    "maximum": 100,
                    "minimum": -100,
                    "type": "integer"
                  },
                  "speaking_volume": {
                    "description": "Increase or decrease the audio volume by a percentage from -100% to 100%, 0 is normal.",
                    "maximum": 100,
                    "minimum": -100,
                    "type": "integer"
                  },
                  "speed": {
                    "description": "Speed multiplier for speech synthesis",
                    "maximum": 4,
                    "minimum": 0.25,
                    "type": "number"
                  },
                  "text": {
                    "description": "Text to convert to speech",
                    "minLength": 1,
                    "type": "string"
                  },
                  "voice": {
                    "description": "Voice to synthesize with: an id or name from list_voices(model=...), matched case-insensitively. Omit it to use the model's default voice. An id the list doesn't know (e.g. your own cloned voice) is sent to the provider unchanged.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_ai_detection",
              "description": "Determine whether an image was generated by AI or is a real photograph or artwork. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: resemble, winstonai. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_anonymization",
              "description": "Image Anonymization API, also known as image de-identification or image de-personalization, refers to the process of automatically removing personal or sensitive information from images. The main objective is to protect the privacy and security of individuals who may be depicted in images shared online or used for research purposes. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: api4ai. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_background_removal",
              "description": "Background removal is a digital image processing technique designed to seamlessly eliminate the backdrop of a photo, leaving behind only the main subject. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: api4ai, clipdrop, photoroom, picsart, sentisight, stabilityai. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_deepfake_detection",
              "description": "Detect whether a face in a real photo has been swapped or manipulated (face-swap deepfakes). For fully AI-generated images, use AI Image Detection instead. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: resemble, sightengine. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_explicit_content",
              "description": "Explicit Content Detection detects adult only content in images, that is generally inappropriate for people under the age of 18 and includes nudity, sexual activity, pornography, violence, gore content, etc. (type of files allowed: jpg, jpeg, png, tiff) File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, google, microsoft, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_face_compare",
              "description": "Compare two faces and decide whether they are from the same person. The API expects 2 images, reference and query, where the former is the ground truth (e.g. user's official ID) and the latter is the validation image (e.g. a selfie). File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file1": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "file2": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, base64, facepp. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file1",
                  "file2"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_face_detection",
              "description": "Face Detection is a computer technology being used in a variety of applications that identifies human faces in digital images with different attributes like landmarks, sentiments and physical attire (type of file allowed: jpg, jpeg, png, tiff) File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, api4ai, google. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_face_recognition",
              "description": "Recognizing a face in an image is a more advanced feature than just detecting the face in the image. It allows the user to search for the detected face from a database of existing images and extract the faces that are most similar to the face displayed in the query image. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "collection_id": {
                    "description": "Id of one of your collections. Make one with manage_collections (action='create', then add_item for each file to search against); action='list' shows the ones you have. 'model' must be the collection's provider.",
                    "type": "string"
                  },
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "collection_id",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_generation",
              "description": "Image Generation is an advanced feature that generates compelling images based on a given text prompt. It can easily produce high-quality and original images in a matter of seconds, without the need for specialized design skills or software File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "mask": {
                    "description": "Optional inpainting mask. Must be paired with at least one reference image (otherwise the request returns 422). Support varies by model; models that do not accept a mask surface the error as status=\"fail\" with a provider message in the response body. Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: bytedance, bytedance/seedream-4-0-250828, bytedance/seedream-4-5-251128, bytedance/seedream-5-0-260128, google, google/gemini-2.5-flash-image, google/gemini-3-pro-image-preview, infomaniak/flux, ionos/black-forest-labs/FLUX.1-schnell, ionos/black-forest-labs/FLUX.2-klein-4B, leonardo, leonardo/AlbedoBase XL, leonardo/Leonardo Anime XL, leonardo/Leonardo Diffusion XL, leonardo/Leonardo Kino XL, leonardo/Leonardo Lightning XL, leonardo/Leonardo Phoenix, leonardo/Leonardo Vision XL, leonardo/SDXL 0.9, minimax, minimax/image-01, openai, openai/gpt-image-1, openai/gpt-image-1-mini, openai/gpt-image-1.5, openai/gpt-image-2, ovhcloud/stable-diffusion-xl-base-v10, pruna/p-image, pruna/p-image-edit, pruna/p-image-ideogram, pruna/p-image-ideogram-low, pruna/p-image-ideogram-medium, pruna/p-image-ideogram-very-high, pruna/p-image-ideogram-very-low, replicate, replicate/anime-style, replicate/classic, replicate/vintedois-diffusion, stabilityai, stabilityai/stable-diffusion-xl-1024-v1-0. Call list_models for pricing.",
                    "type": "string"
                  },
                  "num_images": {
                    "default": 1,
                    "description": "Number of images to generate",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "reference_images": {
                    "description": "Optional reference images. Plain file IDs/URLs are treated as ReferenceImage with kind=None. Support and per-model limits vary by model; models that do not accept reference images surface the error as status=\"fail\" with a provider message in the response body.",
                    "items": {},
                    "maxItems": 64,
                    "type": "array"
                  },
                  "resolution": {
                    "description": "Image resolution as a named size (e.g. '1024x1024'). Optional: providers may also accept native sizing knobs (width/height, aspect_ratio, image_size tier, etc.) in the top-level `provider_params` request field, next to `input` rather than inside it, in which case `provider_params` takes precedence.",
                    "pattern": "^\\d+x\\d+$",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text prompt for image generation",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_logo_detection",
              "description": "Logo Detection is a powerful technology that enables the automatic identification and recognition of popular logos within an image. It provides accurate and efficient detection of known (and less known) brand logos. It's a valuable tool for a variety of industries, including advertising, retail, and e-commerce. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: api4ai, api4ai/v1, api4ai/v2, google, microsoft, openai, openai/gpt-4-turbo, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "image_object_detection",
              "description": "Object Detection is a computer vision technique that allows users to identify and locate (with bounding boxes) objects in an image. The detected objects can be animals, people, electronics, vehicles etc. (type of file allowed: jpg, jpeg, png, tiff) File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, api4ai, google, microsoft, sentisight. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr",
              "description": "Optical Character Recognition or Reader (OCR) is the electronic or mechanical conversion of images of typed, handwritten or printed text into machine-encoded text. The image can be a scanned document or a photo of a license plate, a road sign or anything else that contains text (type of files allowed: jpg, jpeg, png, tiff) . File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "PDF or image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: application/pdf, image/*.",
                    "type": "string"
                  },
                  "language": {
                    "description": "Document language code. Most providers detect the language themselves and ignore this field; providers that cannot detect it reject requests that omit it. Check the provider's supported languages before relying on it.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, api4ai, google, ionos, ionos/lightonai/LightOnOCR-2-1B, microsoft, mistral, mistral/mistral-ocr-2512, mistral/mistral-ocr-3, mistral/mistral-ocr-3-0, mistral/mistral-ocr-4, mistral/mistral-ocr-4-0, mistral/mistral-ocr-4-1, mistral/mistral-ocr-latest, sentisight. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr_async",
              "description": "OCR or Optical Character Recognition is also referred to as text recognition or text extraction. It allows users to extract text data from PDFs with multiple pages. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "PDF or image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: application/pdf, image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, microsoft, mistral, mistral/mistral-ocr-2512, mistral/mistral-ocr-3, mistral/mistral-ocr-3-0, mistral/mistral-ocr-4, mistral/mistral-ocr-4-0, mistral/mistral-ocr-4-1, mistral/mistral-ocr-latest. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr_financial_parser",
              "description": "Financial Parser API is a powerful and versatile tool designed to streamline your financial data extraction process. This cutting-edge API combines Optical Character Recognition (OCR) technology with advanced parsing capabilities to seamlessly extract and organize relevant information from invoices and receipts. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "document_type": {
                    "default": "invoice",
                    "description": "Specify the type of your document. Can be set to 'auto-detect' for automatic detection if the provider supports it.",
                    "enum": [
                      "auto-detect",
                      "invoice",
                      "receipt"
                    ],
                    "type": "string"
                  },
                  "file": {
                    "description": "File ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*, application/*, text/*.",
                    "type": "string"
                  },
                  "language": {
                    "description": "Document language code. Most providers detect the language themselves and ignore this field; providers that cannot detect it reject requests that omit it. Check the provider's supported languages before relying on it.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: affinda, amazon, base64, eagledoc, extracta, google, klippa, microsoft, mindee, openai, openai/gpt-4o, tabscanner, veryfi. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr_identity_parser",
              "description": "ID Document parsing technology allows users to automatically extract information from an ID Document such as passport, ID card, driving license and more. This API is ideal for developers looking to create applications that require identity verification or access control. It extracts information like name, date of birth, nationality, age and more. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "PDF or image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: application/pdf, image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: affinda, amazon, base64, klippa, microsoft, mindee, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr_resume_parser",
              "description": "Resume Parser enables users to extract various information from resumes (curriculum vitae, CV) that could be in a variety of formats and returns structured data (name, job list, education, skills) to automate their processing. (type of files allowed: pdf, jpg, jpeg, png) File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "File ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/*, application/*, text/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: affinda, extracta, klippa, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "ocr_tables",
              "description": "OCR Table (Optical Character Recognition for tabular documents)  allows users to analyze documents containing tables and returns a structured representation of the detected tables in the form of a Json object that can be converted to a CSV. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "PDF or image file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: application/pdf, image/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, google, microsoft. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_ai_detection",
              "description": "The AI Detection API is a tool designed to determine whether a given text was generated by an artificial intelligence chatbot, or a Language Model (LLM).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: sapling, winstonai. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to analyze for AI detection, at least 300 characters long. Shorter texts carry too little signal to be scored reliably.",
                    "minLength": 300,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_anonymization",
              "description": "The personally identifiable information (PII) detection feature can identify and redact sensitive information in unstructured text. For example: phone numbers, email addresses, and forms of identification. Removing these personally identifiable information helps with the Anonymization of a text and privacy protection.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "description": "ISO 639-1 language code",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, limina, microsoft. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to detect personal information in",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_moderation",
              "description": "Text moderation scans text for offensive, sexually explicit or suggestive content, it also checks if there is any content of self-harm, violence, racist or hate speech.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "description": "ISO 639-1 language code",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: google, microsoft, openai, openai/text-moderation-007, openai/text-moderation-latest, openai/text-moderation-stable, ovhcloud/Qwen3Guard-Gen-0.6B, ovhcloud/Qwen3Guard-Gen-8B. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to moderate",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_named_entity_recognition",
              "description": "Named Entity Recognition (also called entity identification or extraction) is an information extraction technique that automatically identifies named entities in a text and classifies them into predefined categories such as dates, persons names, company names, dates, products etc.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "description": "ISO 639-1 language code",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, microsoft, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to analyze for named entities",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_plagia_detection",
              "description": "The Plagiarism Detection API is a tool designed to scan a content string for plagiarism using a plagiarism detection module",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: winstonai. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text content on which plagiarism detection will be run",
                    "minLength": 1,
                    "type": "string"
                  },
                  "title": {
                    "description": "Content title",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_spell_check",
              "description": "Spell Check analyzes the inputted text by comparing it to a dictionary of correctly spelled words to identify and highlight any spelling errors or grammatical mistakes.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "description": "ISO 639-1 language code",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: prowritingaid, sapling. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to be spell-checked",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "text_topic_extraction",
              "description": "Topic analysis is a Natural Language Processing (NLP) technique that allows us to automatically extract meaning from text by identifying recurrent themes or topics.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "description": "ISO 639-1 language code",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: google, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to analyze for topics",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "translation_automatic_translation",
              "description": "Automatic translation or machine translation (MT) is the process of automatically translating a text from one language to another language. The aim of it is to enable people to communicate and access information in different languages, without the need for a human translator.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: amazon, deepl, google, microsoft, modernmt, openai, openai/gpt-4o. Call list_models for pricing.",
                    "type": "string"
                  },
                  "source_language": {
                    "description": "Source language code",
                    "minLength": 1,
                    "type": "string"
                  },
                  "target_language": {
                    "description": "Target language code",
                    "minLength": 1,
                    "type": "string"
                  },
                  "text": {
                    "description": "Text to translate",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text",
                  "target_language"
                ],
                "type": "object"
              }
            },
            {
              "name": "translation_document_translation",
              "description": "Document Translation API translates whole documents in supported languages and various file formats (like pdf or doc) while keeping their structure intact. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Document file ID from /v3/upload or direct file URL (PDF, DOCX, PPTX) Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.presentationml.presentation.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: deepl, google. Call list_models for pricing.",
                    "type": "string"
                  },
                  "source_language": {
                    "description": "Source language code",
                    "minLength": 1,
                    "type": "string"
                  },
                  "target_language": {
                    "description": "Target language code",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file",
                  "target_language"
                ],
                "type": "object"
              }
            },
            {
              "name": "video_deepfake_detection",
              "description": "Detect deepfake and synthetically manipulated video. Returns an overall deepfake score and prediction, along with per-frame scores when the provider supplies them. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "file": {
                    "description": "Video file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: video/*.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: resemble. Call list_models for pricing.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "file"
                ],
                "type": "object"
              }
            },
            {
              "name": "video_generation",
              "description": "The Video Generation API enables easy creation of high-quality videos from text,and images, perfect for marketing, education, and more—all through one integration. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'. File parameters accept a file ID from upload_file or a direct file URL — if you already have a URL, pass it as-is (no upload needed).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "dimension": {
                    "default": "1280x720",
                    "description": "Video resolution in 'widthxheight' format (e.g., '1280x720')",
                    "pattern": "^\\d+x\\d+$",
                    "type": "string"
                  },
                  "duration": {
                    "description": "Length of the generated video in seconds. Omit to use the model's default duration.",
                    "maximum": 120,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "file": {
                    "description": "Initial keyframe image (JPEG or PNG) file ID from /v3/upload or direct file URL Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: image/jpeg, image/png.",
                    "type": "string"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: bytedance, bytedance/dreamina-seedance-2-0-260128, bytedance/dreamina-seedance-2-0-fast-260128, bytedance/dreamina-seedance-2-0-mini-260615, bytedance/dreamina-seedance-2-5-260628, bytedance/seedance-1-0-pro-250528, bytedance/seedance-1-0-pro-fast-251015, bytedance/seedance-1-5-pro-251215, minimax, minimax/MiniMax-Hailuo-02, minimax/MiniMax-Hailuo-2.3, minimax/S2V-01, minimax/T2V/I2V-01-Director, openai, openai/sora-2, openai/sora-2-pro, pixverse, pixverse/c1, pixverse/v5, pixverse/v5.5, pixverse/v6, pruna, pruna/p-video, pruna/p-video-2, pruna/p-video-2-pro, pruna/p-video-2-pro-cost, pruna/p-video-2-pro-quality, pruna/p-video-animate, pruna/p-video-avatar, pruna/p-video-edit, xai/grok-imagine-video-1.5, xai/grok-imagine-video-1.5-lite. Call list_models for pricing.",
                    "type": "string"
                  },
                  "seed": {
                    "description": "Random seed for generation reproducibility (0 to 2,147,483,646). Omit for varied output.",
                    "maximum": 2147483646,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "text": {
                    "description": "Text prompt describing the content and style of the video to generate",
                    "minLength": 1,
                    "type": "string"
                  },
                  "video": {
                    "description": "Source video to edit, for models that edit a video (their `requires_video` is true in /v3/info). The output keeps the source's length, which is what is billed, so `duration` and `dimension` do not apply to them. Other models refuse it. Pass a file ID (UUID) from upload_file, or a direct file URL. Accepted types: video/*.",
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "text"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_batch_scrape",
              "description": "Scrape many URLs in one request and return each page's content. Runs as an async job. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: firecrawl. Call list_models for pricing.",
                    "type": "string"
                  },
                  "urls": {
                    "description": "Explicit list of URLs to scrape (async job)",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "model",
                  "urls"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_crawl",
              "description": "Crawl a site from a starting URL and return the content of its pages. Runs as an async job. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: firecrawl, tavily. Call list_models for pricing.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Root URL to crawl (async job)",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "url"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_map",
              "description": "Discover and return the list of URLs on a site (a sitemap-style link map).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: firecrawl, tavily. Call list_models for pricing.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Root URL to map (discover its links)",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "url"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_research",
              "description": "Run deep, multi-step web research on a query and return a synthesized answer with sources. Runs as an async job. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: firecrawl, linkup, tavily. Call list_models for pricing.",
                    "type": "string"
                  },
                  "prompt": {
                    "description": "Natural-language research task for the agent",
                    "minLength": 1,
                    "type": "string"
                  },
                  "reasoning_depth": {
                    "default": "L",
                    "description": "Research reasoning-effort tier (billed per tier; priced pre-call)",
                    "enum": [
                      "S",
                      "M",
                      "L",
                      "XL"
                    ],
                    "type": "string"
                  },
                  "schema": {
                    "description": "JSON schema describing the structured output",
                    "type": "object"
                  }
                },
                "required": [
                  "model",
                  "prompt"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_scraping",
              "description": "Fetch a single URL and return its clean content as markdown, text, or HTML, with optional JavaScript rendering.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: deepseek, firecrawl, linkup, tavily. Call list_models for pricing.",
                    "type": "string"
                  },
                  "url": {
                    "description": "URL of the web page to scrape",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "url"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_search",
              "description": "Search the web for a query and return ranked results (title, URL, and a snippet or the page content).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "depth": {
                    "default": "standard",
                    "description": "Search depth tier. `deep` is refused with a 400 on deepseek, perplexityai and zai, which run one tier only.",
                    "enum": [
                      "standard",
                      "deep"
                    ],
                    "type": "string"
                  },
                  "max_results": {
                    "description": "Max number of search results to return",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "model": {
                    "description": "Which provider/model to run, exactly one of: deepseek, firecrawl, linkup, perplexityai, tavily, zai. Call list_models for pricing.",
                    "type": "string"
                  },
                  "query": {
                    "description": "The web search query",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "model",
                  "query"
                ],
                "type": "object"
              }
            },
            {
              "name": "web_structured_extraction",
              "description": "Extract structured data from one or more web pages against a schema or prompt. Runs as an async job. Long-running: returns a job immediately; poll it with check_job(job_id) every few seconds until status is 'success' or 'fail'.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "description": "Which provider/model to run, exactly one of: firecrawl. Call list_models for pricing.",
                    "type": "string"
                  },
                  "prompt": {
                    "description": "Natural-language description of what to extract",
                    "type": "string"
                  },
                  "schema": {
                    "description": "JSON schema describing the structured output",
                    "type": "object"
                  },
                  "urls": {
                    "description": "URLs to extract structured data from (async job)",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "model",
                  "urls"
                ],
                "type": "object"
              }
            }
          ],
          "schemaTokens": 10725,
          "changedAt": "2026-11-07T01:44:01.27972989Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 10725,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 49
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "manage_collections",
                "message": "1 parameter without a description: action",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC12",
                "severity": "warn",
                "tool": "image_generation",
                "message": "no type for reference_images[]",
                "fix": "Give every parameter a type (or an enum)."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "web_research",
                "message": "schema (object with no properties)",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "web_structured_extraction",
                "message": "schema (object with no properties)",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC14",
                "severity": "warn",
                "tool": "image_face_recognition",
                "message": "allowed values are in the description, not an enum: collection_id",
                "fix": "Move them into enum."
              },
              {
                "rule": "TC14",
                "severity": "warn",
                "tool": "image_generation",
                "message": "allowed values are in the description, not an enum: resolution",
                "fix": "Move them into enum."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "audio_speech_to_text",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "audio_tts",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "check_job",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"check\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_ai_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_anonymization",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_background_removal",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_deepfake_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_explicit_content",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_face_compare",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_face_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_face_recognition",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_generation",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_logo_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "image_object_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "list_models",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "list_voices",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "manage_collections",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr_async",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr_financial_parser",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr_identity_parser",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr_resume_parser",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "ocr_tables",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_ai_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_anonymization",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_moderation",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_named_entity_recognition",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_plagia_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_spell_check",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"check\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "text_topic_extraction",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "translation_automatic_translation",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "translation_document_translation",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "upload_file",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "video_deepfake_detection",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "video_generation",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_batch_scrape",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_crawl",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_map",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_research",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_scraping",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_search",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "web_structured_extraction",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC23",
                "severity": "warn",
                "message": "42 tools",
                "fix": "Offer a smaller default toolset and let clients opt into the rest."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "38 of 42 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-11-07T18:20:22.496540152Z"
      }
    },
    "edges": [
      {
        "by": 33,
        "category": "reliability",
        "leads": "cloudflare-ai-gateway",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted reading. www.cloudflarestatus.com is a Statuspage with AI Gateway, Workers AI and API as separate components (20). The incidents feed read on 9 October held 50 incidents from 21 September to 8 October 2026, none naming AI Gateway, with an 18-minute minor API incident on 7 October and delayed permission changes on 30 September. On 1 November the host's history.atom held only scheduled maintenance for 2 to 6 November, and the history page loads by script. Whether the incidents posted from 16 to 31 October name AI Gateway wasn't read for this listing (cloudflare-r2, cloudflare-workers-ai and cloudflare-email-service read that list for their own components only), and 3 August to 20 September and 9 to 15 October went unread too. An unread window isn't credited, so the line rests on the 21 September to 8 October reading alone, as on 9 October (10 of 30). Unified Billing traffic is limited to 200 requests per 60 seconds per gateway, re-read on 1 November, the Cloudflare API to 1,200 requests per five minutes per token, and BYOK traffic has no gateway limit (15). Over-limit and over-budget requests return 429, the Cloudflare API returns `retry-after` and `Ratelimit` headers for its own limit, and retries with backoff and model fallbacks can be set per request or per gateway. No `Retry-After` was found for the gateway's own 429, and nothing separates a rate-limit 429 from a spend-limit 429 (11 of 15). No SLA naming AI Gateway was found. The Enterprise SLA lists service-specific SLAs for R2, Queues and Workers only (0). The core product carries no beta label, and Machine Payments is in beta (10). 20 + 10 + 15 + 11 + 0 + 10 = 66.",
          "b": "Router, read on the hosted lines. No status page is linked from the site or docs, and status.edenai.co didn't resolve for us on 6 November 2026 (0). No incident history to read (5). The rate-limits page gives 10 requests a second per account, shared across keys, while the plans page gives 7 a second, raisable to 15, so the figure is documented but inconsistent (10). Fallback retries the next model or provider on a 429 or error inside one request, but no client-facing 429 or Retry-After guidance was found (8). No SLA published; 'Dedicated support \u0026 SLA' is listed only for the custom Advanced plan, and the pricing page's '99.99%' uptime is a claim without a status page behind it (0). The v3 API is GA (10). 0+5+10+8+0+10 = 33."
        },
        "scores": {
          "a": 66,
          "b": 33
        }
      },
      {
        "by": 22,
        "category": "payments",
        "leads": "cloudflare-ai-gateway",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "x402 is in beta on `POST /ai/run` since 30 September 2026 for four open models of 241 in the catalogue. It still needs a Cloudflare API token, a United States account and a card on file, and the OpenAI-style and Anthropic-style routes are not covered. We did not call it (12 of 40). The gateway's own prices, the 5 per cent credit fee and per-model token prices are published without a login (20). Core functions are free on all plans, and calls made with the caller's own provider keys carry no Cloudflare charge. We did not sign up to confirm that no card is asked for (20). A person creates the account and the first token in a browser, and the x402 route needs both (0). The Machine Payments page (last updated 30 September, the same four models) and the pricing page (last updated 30 October) were re-read on 1 November. 12 + 20 + 20 + 0 = 52.",
          "b": "No x402, MPP or L402 (0). Provider prices with no markup plus a 5.5% platform fee, published per model in the keyless catalogue (20). llms.txt says some models are billed $0 for tests, but whether a new account can call them without buying credits isn't stated (10). A person signs up in a browser and buys credits through Stripe (0). 0+20+10+0 = 30."
        },
        "scores": {
          "a": 52,
          "b": 30
        }
      },
      {
        "by": 19,
        "category": "transparency",
        "leads": "cloudflare-ai-gateway",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under the Self-Serve Subscription Agreement and service-specific terms with a section for Workers AI and AI Gateway. Each model page links the provider's terms, `ai-gateway-provider` is MIT and the OpenAPI repository is BSD-3-Clause (16 of 30). The service terms, the logging and Zero Data Retention pages, the DPA (version 6.4, 3 April 2026) and the privacy policy of 4 November 2025 were read. The privacy policy gives retention criteria, not periods. The terms take third-party models outside the DPA, while the sub-processor list names five model providers for AI Gateway, and the two are hard to square (17 of 30). No deprecation policy was found. Deprecated endpoints carry notices with no dates, and section 8 of the agreement lets Cloudflare modify or discontinue a service without notice (6 of 20). The sub-processor list, last updated 1 October 2025, names Google, Anthropic, OpenAI, xAI and Groq for AI Gateway with locations. The catalogue on 9 October 2026 also carries models from Alibaba, ByteDance, MiniMax and others that the list does not name (12 of 20). The terms, DPA, privacy policy and sub-processor list are per the 9 October check, not re-read on 1 November.",
          "b": "Editorial half only. Closed service under terms last updated 22 October 2026, naming Eden AI SAS and French law with courts in Lyon (15). The data retention page, terms and DPA agree that content isn't stored by default, and the docs carry a per-provider table of training, retention and ZDR (27). No deprecation policy found; models are dropped in docs updates without dated notice that we found (5). The DPA's Annex 2 names operational subprocessors (AWS EMEA, ClickHouse, Sentry, Metabase, Stripe, Brevo and others) with their roles, and the EU endpoint keeps routing in the EU (18). 15+27+5+18 = 65."
        },
        "scores": {
          "a": 74,
          "b": 55
        }
      },
      {
        "by": 17,
        "category": "maintenance",
        "leads": "cloudflare-ai-gateway",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Router, read on the model lines. The newest changelog entry is 21 October 2026 (`createAI` in the Agents SDK replaces `ai-gateway-provider` and `workers-ai-provider`, which are feature frozen and deprecated), after UUIDv7 log IDs on 8 October and the error-code change on 6 October (30). No minimum notice for API changes was found. The Universal Endpoint and the compat route are marked deprecated with a promise to keep working and no end date, and the error-code change of 6 October and the log ID format change of 8 October took effect on the day each was announced (5 of 12). No gateway endpoint was shut down in the last 90 days that we found. Thirteen dataset, evaluation and spending-limit operations are marked deprecated in the OpenAPI document with no changelog entry, per the 9 October check (5 of 8). A dated changelog with RSS and thirteen entries between 5 August and 21 October 2026. The Discord community was not sampled (11 of 15). Replies on the SDK repositories were not examined (3 of 10). `cloudflare` for TypeScript 7.3.0 and Python 5.9.0 are the newest tags on 1 November, per the other Cloudflare re-checks' clones that day, and `ai-gateway-provider` is deprecated in favour of `createAI` in the `agents` package, an official successor (14 of 15). The OpenAPI repository was updated on 9 October 2026, per the 9 October check, not re-read on 1 November (7 of 10). 30 + 5 + 5 + 11 + 3 + 14 + 7 = 75.",
          "b": "Closed service, read on the model lines. The docs repository changed on 5 and 6 November 2026, including retiring Nova Reel and Veo from video generation, and the terms were updated 22 October (30). No public changelog, so dated API changes in the last 90 days come only from docs commits (12 of 20). Chat support within 48 working hours, no public changelog (8). No SDK of its own, and the MCP server isn't in the official MCP registry (5). Nothing to judge package health by beyond the docs repository (3). 30+12+8+5+3 = 58."
        },
        "scores": {
          "a": 75,
          "b": 58
        }
      },
      {
        "by": 6,
        "category": "schema",
        "leads": "eden-ai",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Router, scored on the API lines. Cloudflare's public OpenAPI 3.0.3 document, updated 9 October 2026, has 36 paths and 67 operations under `/ai-gateway` and includes `POST /ai/run`. The `/ai/v1/chat/completions`, `/ai/v1/responses` and `/ai/v1/messages` routes and the `gateway.ai.cloudflare.com` endpoints are not in it (20 of 25). An AI Gateway `llms.txt` and a Markdown copy of every page (10). Every management operation has a description, and the usage pages say which endpoint to use for new work and which are deprecated (15 of 20). Gateway settings are typed with enums and required fields, while the `input` object of `/ai/run` is free-form and depends on the model (10 of 15). Curl, SDK and Worker examples on most pages. No table of gateway error codes was found. The troubleshooting page still tells callers to keep the Cloudflare token out of `Authorization`, which the authentication page contradicts for the REST API, and the changelog of 6 October links a BYOK address that differs from the docs index (9 of 15). A dated changelog with RSS. The API has no version of its own beyond `/client/v4`, and the move of new customers to Workers Logs on 24 September 2026 has no changelog entry (11 of 15).",
          "b": "Router, scored on the API lines. OpenAPI 3.1 document for v3 (version 3.0.0, 46 paths) at api.edenai.run/v3/docs/openapi.json, plus a management API spec (25). llms.txt on the site and in the docs, llms-full.txt and Markdown pages (10). llms.txt states when to use Eden AI and when not to, and the docs separate chat models from expert models (17). Requests follow the OpenAI shape, and expert-model tools on the MCP server carry JSON Schema inputs (12). Examples throughout, but the spec documents only 200, 201, 202, 302 and 422, while llms.txt names 401 and 451 for region refusals (10). Versioned /v3 path, but no public changelog was found (7). 25+10+17+12+10+7 = 81."
        },
        "scores": {
          "a": 75,
          "b": 81
        }
      }
    ],
    "facts": [
      {
        "a": "Model router",
        "b": "Model router",
        "name": "Kind"
      },
      {
        "a": "Cloudflare, Inc.",
        "b": "Eden AI SAS",
        "name": "Vendor"
      },
      {
        "a": "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai",
        "b": "https://mcp.edenai.run/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "payer tooling only",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Cloudflare's Self-Serve Subscription Agreement and its service-specific terms. Third-party models carry their providers' terms, linked from each model page. `ai-gateway-provider` is MIT and Cloudflare's OpenAPI repository is BSD-3-Clause",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-21",
        "b": "2026-11-05",
        "name": "Last release"
      },
      {
        "a": "2025-09-12",
        "b": "2026-10-22",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-10-22",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "251k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Cloudflare AI Gateway scores 67.8 (B) on agent readiness against Eden AI's 59.9 (C), and leads in 4 of 7 scored categories. Eden AI leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Cloudflare AI Gateway or Eden AI?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Cloudflare AI Gateway and Eden AI need an API key?"
      },
      {
        "answer": "Yes. Cloudflare AI Gateway has a hosted endpoint at https://api.cloudflare.com/client/v4/accounts/{account_id}/ai and Eden AI at https://mcp.edenai.run/mcp.",
        "question": "Can an agent call Cloudflare AI Gateway and Eden AI without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 66 against 33",
          "Payments \u0026 pricing, 52 against 30",
          "Maintenance \u0026 community, 75 against 58",
          "Transparency \u0026 trust, 74 against 55"
        ],
        "also": null,
        "goodFor": "Teams that already hold a Cloudflare account and want one token, one bill, logs, budgets and fallbacks in front of several model providers, or that want to keep their own provider keys behind a proxy with spend limits.",
        "slug": "cloudflare-ai-gateway",
        "watchFor": "API tokens are account-scoped. Any token with AI Gateway Run can send requests through every gateway in the account and spend its stored provider keys"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 81 against 75"
        ],
        "also": [
          "No incidents deducted, where Cloudflare AI Gateway loses 3 points for them"
        ],
        "goodFor": "Teams that want one key and bill for many LLMs plus OCR, speech, translation and web tools, with EU-only processing.",
        "slug": "eden-ai",
        "watchFor": "No public status page, incident history or SLA found"
      }
    ],
    "history": {
      "cloudflare-ai-gateway": [
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-11-01",
          "delta": 0.9,
          "from": 66.9,
          "fromGrade": "B",
          "to": 67.8,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 66.8,
          "fromGrade": "B",
          "to": 66.9,
          "toGrade": "B"
        }
      ],
      "eden-ai": null
    },
    "job": {
      "capability": "inference.llm",
      "name": "LLM inference"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-bedrock-vs-cloudflare-ai-gateway.json",
        "title": "Amazon Bedrock vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/amazon-bedrock-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-bedrock-vs-eden-ai.json",
        "title": "Amazon Bedrock vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/amazon-bedrock-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anthropic-api-vs-cloudflare-ai-gateway.json",
        "title": "Claude API vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/anthropic-api-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anthropic-api-vs-eden-ai.json",
        "title": "Claude API vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/anthropic-api-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-openai-vs-cloudflare-ai-gateway.json",
        "title": "Azure OpenAI in Foundry Models vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/azure-openai-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-openai-vs-eden-ai.json",
        "title": "Azure OpenAI in Foundry Models vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/azure-openai-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blockrun-ai-vs-cloudflare-ai-gateway.json",
        "title": "BlockRun.AI vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/blockrun-ai-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blockrun-ai-vs-eden-ai.json",
        "title": "BlockRun.AI vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/blockrun-ai-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cerebras-inference-vs-cloudflare-ai-gateway.json",
        "title": "Cerebras Inference vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/cerebras-inference-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cerebras-inference-vs-eden-ai.json",
        "title": "Cerebras Inference vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/cerebras-inference-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cloudflare-workers-ai.json",
        "title": "Cloudflare AI Gateway vs Cloudflare Workers AI",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cloudflare-workers-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cohere-chat.json",
        "title": "Cloudflare AI Gateway vs Cohere Chat API (Command models)",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cohere-chat"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepinfra.json",
        "title": "Cloudflare AI Gateway vs DeepInfra",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepinfra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepseek-api.json",
        "title": "Cloudflare AI Gateway vs DeepSeek API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepseek-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-elorian-glimpse.json",
        "title": "Cloudflare AI Gateway vs Glimpse",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-elorian-glimpse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-fireworks-inference.json",
        "title": "Cloudflare AI Gateway vs Fireworks AI Inference",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-fireworks-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-gemini-api.json",
        "title": "Cloudflare AI Gateway vs Gemini Developer API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-gemini-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-groq.json",
        "title": "Cloudflare AI Gateway vs GroqCloud",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-groq"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-hugging-face-inference-providers.json",
        "title": "Cloudflare AI Gateway vs Hugging Face Inference Providers",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-hugging-face-inference-providers"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-inkling-2-small.json",
        "title": "Cloudflare AI Gateway vs Inkling 2 Small",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-inkling-2-small"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-jais-3.json",
        "title": "Cloudflare AI Gateway vs Jais 3",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-jais-3"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-meta-model-api.json",
        "title": "Cloudflare AI Gateway vs Meta Model API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-meta-model-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-minimax-api.json",
        "title": "Cloudflare AI Gateway vs MiniMax API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-minimax-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-mistral-api.json",
        "title": "Cloudflare AI Gateway vs Mistral AI API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-mistral-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-muse-spark-open.json",
        "title": "Cloudflare AI Gateway vs Muse Spark Open",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-muse-spark-open"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-nemotron-3-5-super-vl.json",
        "title": "Cloudflare AI Gateway vs Nemotron 3.5 Super VL",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-nemotron-3-5-super-vl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-novita-ai.json",
        "title": "Cloudflare AI Gateway vs Novita AI",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-novita-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openai-api.json",
        "title": "Cloudflare AI Gateway vs OpenAI API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openai-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openrouter.json",
        "title": "Cloudflare AI Gateway vs OpenRouter",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-prism-inference.json",
        "title": "Cloudflare AI Gateway vs Prism Inference",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-prism-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-ramp-router.json",
        "title": "Cloudflare AI Gateway vs Router.com (Ramp Router)",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-ramp-router"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-reflection-beam.json",
        "title": "Cloudflare AI Gateway vs Beam 1.0",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-reflection-beam"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-routerplus.json",
        "title": "Cloudflare AI Gateway vs RouterPlus",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-routerplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-sambanova.json",
        "title": "Cloudflare AI Gateway vs SambaCloud",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-sambanova"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-siliconflow.json",
        "title": "Cloudflare AI Gateway vs SiliconFlow",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-siliconflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-simplismart.json",
        "title": "Cloudflare AI Gateway vs Simplismart",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-simplismart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-stepfun-api.json",
        "title": "Cloudflare AI Gateway vs StepFun API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-stepfun-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-swe-2-flash.json",
        "title": "Cloudflare AI Gateway vs SWE-2 Flash",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-swe-2-flash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-tencent-tokenhub.json",
        "title": "Cloudflare AI Gateway vs Tencent Cloud TokenHub",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-tencent-tokenhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-together-inference.json",
        "title": "Cloudflare AI Gateway vs Together AI Inference",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-together-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vercel-ai-gateway.json",
        "title": "Cloudflare AI Gateway vs Vercel AI Gateway",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vercel-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vertex-ai.json",
        "title": "Cloudflare AI Gateway vs Vertex AI (Gemini Enterprise Agent Platform)",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vertex-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-xai-api.json",
        "title": "Cloudflare AI Gateway vs xAI API (Grok)",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-xai-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-workers-ai-vs-eden-ai.json",
        "title": "Cloudflare Workers AI vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/cloudflare-workers-ai-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cohere-chat-vs-eden-ai.json",
        "title": "Cohere Chat API (Command models) vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/cohere-chat-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepinfra-vs-eden-ai.json",
        "title": "DeepInfra vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/deepinfra-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-api-vs-eden-ai.json",
        "title": "DeepSeek API vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/deepseek-api-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-elorian-glimpse.json",
        "title": "Eden AI vs Glimpse",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-elorian-glimpse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-fireworks-inference.json",
        "title": "Eden AI vs Fireworks AI Inference",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-fireworks-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-gemini-api.json",
        "title": "Eden AI vs Gemini Developer API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-gemini-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-groq.json",
        "title": "Eden AI vs GroqCloud",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-groq"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-inkling-2-small.json",
        "title": "Eden AI vs Inkling 2 Small",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-inkling-2-small"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-jais-3.json",
        "title": "Eden AI vs Jais 3",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-jais-3"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-meta-model-api.json",
        "title": "Eden AI vs Meta Model API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-meta-model-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-minimax-api.json",
        "title": "Eden AI vs MiniMax API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-minimax-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-mistral-api.json",
        "title": "Eden AI vs Mistral AI API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-mistral-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-muse-spark-open.json",
        "title": "Eden AI vs Muse Spark Open",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-muse-spark-open"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-nemotron-3-5-super-vl.json",
        "title": "Eden AI vs Nemotron 3.5 Super VL",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-nemotron-3-5-super-vl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-novita-ai.json",
        "title": "Eden AI vs Novita AI",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-novita-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-openai-api.json",
        "title": "Eden AI vs OpenAI API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-openai-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-prism-inference.json",
        "title": "Eden AI vs Prism Inference",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-prism-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-reflection-beam.json",
        "title": "Eden AI vs Beam 1.0",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-reflection-beam"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-sambanova.json",
        "title": "Eden AI vs SambaCloud",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-sambanova"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-siliconflow.json",
        "title": "Eden AI vs SiliconFlow",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-siliconflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-simplismart.json",
        "title": "Eden AI vs Simplismart",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-simplismart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-stepfun-api.json",
        "title": "Eden AI vs StepFun API",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-stepfun-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-swe-2-flash.json",
        "title": "Eden AI vs SWE-2 Flash",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-swe-2-flash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-together-inference.json",
        "title": "Eden AI vs Together AI Inference",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-together-inference"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-vertex-ai.json",
        "title": "Eden AI vs Vertex AI (Gemini Enterprise Agent Platform)",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-vertex-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-xai-api.json",
        "title": "Eden AI vs xAI API (Grok)",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-xai-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antseed-vs-cloudflare-ai-gateway.json",
        "title": "Antseed vs Cloudflare AI Gateway",
        "url": "https://www.anchorterminal.com/compare/antseed-vs-cloudflare-ai-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antseed-vs-eden-ai.json",
        "title": "Antseed vs Eden AI",
        "url": "https://www.anchorterminal.com/compare/antseed-vs-eden-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-litellm.json",
        "title": "Cloudflare AI Gateway vs LiteLLM",
        "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-litellm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-hugging-face-inference-providers.json",
        "title": "Eden AI vs Hugging Face Inference Providers",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-hugging-face-inference-providers"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-litellm.json",
        "title": "Eden AI vs LiteLLM",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-litellm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-openrouter.json",
        "title": "Eden AI vs OpenRouter",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-openrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-ramp-router.json",
        "title": "Eden AI vs Router.com (Ramp Router)",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-ramp-router"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-routerplus.json",
        "title": "Eden AI vs RouterPlus",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-routerplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-tencent-tokenhub.json",
        "title": "Eden AI vs Tencent Cloud TokenHub",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-tencent-tokenhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eden-ai-vs-vercel-ai-gateway.json",
        "title": "Eden AI vs Vercel AI Gateway",
        "url": "https://www.anchorterminal.com/compare/eden-ai-vs-vercel-ai-gateway"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 33,
        "cloudflare-ai-gateway": 66,
        "eden-ai": 33,
        "edge": "cloudflare-ai-gateway",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "cloudflare-ai-gateway": 75,
        "eden-ai": 81,
        "edge": "eden-ai",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 2,
        "cloudflare-ai-gateway": 73,
        "eden-ai": 75,
        "edge": "eden-ai",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 2,
        "cloudflare-ai-gateway": 80,
        "eden-ai": 82,
        "edge": "eden-ai",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 22,
        "cloudflare-ai-gateway": 52,
        "eden-ai": 30,
        "edge": "cloudflare-ai-gateway",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "cloudflare-ai-gateway": 75,
        "eden-ai": 58,
        "edge": "cloudflare-ai-gateway",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 19,
        "cloudflare-ai-gateway": 74,
        "eden-ai": 55,
        "edge": "cloudflare-ai-gateway",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Cloudflare AI Gateway scores 67.8 (B) on agent readiness against Eden AI's 59.9 (C), and leads in 4 of 7 scored categories. Eden AI leads on schema \u0026 documentation. Both do llm inference.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "cloudflare-ai-gateway": "The gateway layer is free, per-model prices are public with no markup, and logs, spend limits and fallbacks are set per gateway. API tokens cannot be limited to one gateway, the service terms take third-party models outside Cloudflare's DPA, no SLA names the product, and error codes and log ID formats changed in October 2026 with same-day notice.",
      "eden-ai": "Eden AI gives one OpenAI-compatible key to about 1,000 models and expert models such as OCR, speech and translation, with an EU-only endpoint, per-key guardrails and no stored content by default. No status page, SLA or changelog was found, and its own pages disagree on the default rate limit."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai",
    "json": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai.min.md"
  },
  "markdown": "Cloudflare AI Gateway scores 67.8 (B) on agent readiness against Eden AI's 59.9 (C), and leads in 4 of 7 scored categories. Eden AI leads on schema \u0026 documentation. Both do llm inference.\n\n- Cloudflare AI Gateway: grade B, 67.8/100, rank #300 of 1486. Markdown https://www.anchorterminal.com/tools/cloudflare-ai-gateway.md · JSON https://www.anchorterminal.com/api/v1/tools/cloudflare-ai-gateway.json\n- Eden AI: grade C, 59.9/100, rank #672 of 1486. Markdown https://www.anchorterminal.com/tools/eden-ai.md · JSON https://www.anchorterminal.com/api/v1/tools/eden-ai.json\n- Best model APIs and inference for AI agents: https://www.anchorterminal.com/best/inference/index.md\n- All 830 models comparisons: https://www.anchorterminal.com/compare/inference/index.md\n\n## Which one, for what\n\n### Cloudflare AI Gateway (B)\n\nGood for: Teams that already hold a Cloudflare account and want one token, one bill, logs, budgets and fallbacks in front of several model providers, or that want to keep their own provider keys behind a proxy with spend limits.\n\nAhead on:\n- Reliability, 66 against 33\n- Payments \u0026 pricing, 52 against 30\n- Maintenance \u0026 community, 75 against 58\n- Transparency \u0026 trust, 74 against 55\n\nWatch for: API tokens are account-scoped. Any token with AI Gateway Run can send requests through every gateway in the account and spend its stored provider keys\n\n### Eden AI (C)\n\nGood for: Teams that want one key and bill for many LLMs plus OCR, speech, translation and web tools, with EU-only processing.\n\nAhead on:\n- Schema \u0026 documentation, 81 against 75\n\nAlso in its favour:\n- No incidents deducted, where Cloudflare AI Gateway loses 3 points for them\n\nWatch for: No public status page, incident history or SLA found\n\n\n## Why the edge\n\n### Reliability: Cloudflare AI Gateway +33\n\n- Cloudflare AI Gateway (66): Hosted reading. www.cloudflarestatus.com is a Statuspage with AI Gateway, Workers AI and API as separate components (20). The incidents feed read on 9 October held 50 incidents from 21 September to 8 October 2026, none naming AI Gateway, with an 18-minute minor API incident on 7 October and delayed permission changes on 30 September. On 1 November the host's history.atom held only scheduled maintenance for 2 to 6 November, and the history page loads by script. Whether the incidents posted from 16 to 31 October name AI Gateway wasn't read for this listing (cloudflare-r2, cloudflare-workers-ai and cloudflare-email-service read that list for their own components only), and 3 August to 20 September and 9 to 15 October went unread too. An unread window isn't credited, so the line rests on the 21 September to 8 October reading alone, as on 9 October (10 of 30). Unified Billing traffic is limited to 200 requests per 60 seconds per gateway, re-read on 1 November, the Cloudflare API to 1,200 requests per five minutes per token, and BYOK traffic has no gateway limit (15). Over-limit and over-budget requests return 429, the Cloudflare API returns `retry-after` and `Ratelimit` headers for its own limit, and retries with backoff and model fallbacks can be set per request or per gateway. No `Retry-After` was found for the gateway's own 429, and nothing separates a rate-limit 429 from a spend-limit 429 (11 of 15). No SLA naming AI Gateway was found. The Enterprise SLA lists service-specific SLAs for R2, Queues and Workers only (0). The core product carries no beta label, and Machine Payments is in beta (10). 20 + 10 + 15 + 11 + 0 + 10 = 66.\n- Eden AI (33): Router, read on the hosted lines. No status page is linked from the site or docs, and status.edenai.co didn't resolve for us on 6 November 2026 (0). No incident history to read (5). The rate-limits page gives 10 requests a second per account, shared across keys, while the plans page gives 7 a second, raisable to 15, so the figure is documented but inconsistent (10). Fallback retries the next model or provider on a 429 or error inside one request, but no client-facing 429 or Retry-After guidance was found (8). No SLA published; 'Dedicated support \u0026 SLA' is listed only for the custom Advanced plan, and the pricing page's '99.99%' uptime is a claim without a status page behind it (0). The v3 API is GA (10). 0+5+10+8+0+10 = 33.\n\n### Payments \u0026 pricing: Cloudflare AI Gateway +22\n\n- Cloudflare AI Gateway (52): x402 is in beta on `POST /ai/run` since 30 September 2026 for four open models of 241 in the catalogue. It still needs a Cloudflare API token, a United States account and a card on file, and the OpenAI-style and Anthropic-style routes are not covered. We did not call it (12 of 40). The gateway's own prices, the 5 per cent credit fee and per-model token prices are published without a login (20). Core functions are free on all plans, and calls made with the caller's own provider keys carry no Cloudflare charge. We did not sign up to confirm that no card is asked for (20). A person creates the account and the first token in a browser, and the x402 route needs both (0). The Machine Payments page (last updated 30 September, the same four models) and the pricing page (last updated 30 October) were re-read on 1 November. 12 + 20 + 20 + 0 = 52.\n- Eden AI (30): No x402, MPP or L402 (0). Provider prices with no markup plus a 5.5% platform fee, published per model in the keyless catalogue (20). llms.txt says some models are billed $0 for tests, but whether a new account can call them without buying credits isn't stated (10). A person signs up in a browser and buys credits through Stripe (0). 0+20+10+0 = 30.\n\n### Transparency \u0026 trust: Cloudflare AI Gateway +19\n\n- Cloudflare AI Gateway (74): Closed service under the Self-Serve Subscription Agreement and service-specific terms with a section for Workers AI and AI Gateway. Each model page links the provider's terms, `ai-gateway-provider` is MIT and the OpenAPI repository is BSD-3-Clause (16 of 30). The service terms, the logging and Zero Data Retention pages, the DPA (version 6.4, 3 April 2026) and the privacy policy of 4 November 2025 were read. The privacy policy gives retention criteria, not periods. The terms take third-party models outside the DPA, while the sub-processor list names five model providers for AI Gateway, and the two are hard to square (17 of 30). No deprecation policy was found. Deprecated endpoints carry notices with no dates, and section 8 of the agreement lets Cloudflare modify or discontinue a service without notice (6 of 20). The sub-processor list, last updated 1 October 2025, names Google, Anthropic, OpenAI, xAI and Groq for AI Gateway with locations. The catalogue on 9 October 2026 also carries models from Alibaba, ByteDance, MiniMax and others that the list does not name (12 of 20). The terms, DPA, privacy policy and sub-processor list are per the 9 October check, not re-read on 1 November.\n- Eden AI (55): Editorial half only. Closed service under terms last updated 22 October 2026, naming Eden AI SAS and French law with courts in Lyon (15). The data retention page, terms and DPA agree that content isn't stored by default, and the docs carry a per-provider table of training, retention and ZDR (27). No deprecation policy found; models are dropped in docs updates without dated notice that we found (5). The DPA's Annex 2 names operational subprocessors (AWS EMEA, ClickHouse, Sentry, Metabase, Stripe, Brevo and others) with their roles, and the EU endpoint keeps routing in the EU (18). 15+27+5+18 = 65.\n\n### Maintenance \u0026 community: Cloudflare AI Gateway +17\n\n- Cloudflare AI Gateway (75): Router, read on the model lines. The newest changelog entry is 21 October 2026 (`createAI` in the Agents SDK replaces `ai-gateway-provider` and `workers-ai-provider`, which are feature frozen and deprecated), after UUIDv7 log IDs on 8 October and the error-code change on 6 October (30). No minimum notice for API changes was found. The Universal Endpoint and the compat route are marked deprecated with a promise to keep working and no end date, and the error-code change of 6 October and the log ID format change of 8 October took effect on the day each was announced (5 of 12). No gateway endpoint was shut down in the last 90 days that we found. Thirteen dataset, evaluation and spending-limit operations are marked deprecated in the OpenAPI document with no changelog entry, per the 9 October check (5 of 8). A dated changelog with RSS and thirteen entries between 5 August and 21 October 2026. The Discord community was not sampled (11 of 15). Replies on the SDK repositories were not examined (3 of 10). `cloudflare` for TypeScript 7.3.0 and Python 5.9.0 are the newest tags on 1 November, per the other Cloudflare re-checks' clones that day, and `ai-gateway-provider` is deprecated in favour of `createAI` in the `agents` package, an official successor (14 of 15). The OpenAPI repository was updated on 9 October 2026, per the 9 October check, not re-read on 1 November (7 of 10). 30 + 5 + 5 + 11 + 3 + 14 + 7 = 75.\n- Eden AI (58): Closed service, read on the model lines. The docs repository changed on 5 and 6 November 2026, including retiring Nova Reel and Veo from video generation, and the terms were updated 22 October (30). No public changelog, so dated API changes in the last 90 days come only from docs commits (12 of 20). Chat support within 48 working hours, no public changelog (8). No SDK of its own, and the MCP server isn't in the official MCP registry (5). Nothing to judge package health by beyond the docs repository (3). 30+12+8+5+3 = 58.\n\n### Schema \u0026 documentation: Eden AI +6\n\n- Cloudflare AI Gateway (75): Router, scored on the API lines. Cloudflare's public OpenAPI 3.0.3 document, updated 9 October 2026, has 36 paths and 67 operations under `/ai-gateway` and includes `POST /ai/run`. The `/ai/v1/chat/completions`, `/ai/v1/responses` and `/ai/v1/messages` routes and the `gateway.ai.cloudflare.com` endpoints are not in it (20 of 25). An AI Gateway `llms.txt` and a Markdown copy of every page (10). Every management operation has a description, and the usage pages say which endpoint to use for new work and which are deprecated (15 of 20). Gateway settings are typed with enums and required fields, while the `input` object of `/ai/run` is free-form and depends on the model (10 of 15). Curl, SDK and Worker examples on most pages. No table of gateway error codes was found. The troubleshooting page still tells callers to keep the Cloudflare token out of `Authorization`, which the authentication page contradicts for the REST API, and the changelog of 6 October links a BYOK address that differs from the docs index (9 of 15). A dated changelog with RSS. The API has no version of its own beyond `/client/v4`, and the move of new customers to Workers Logs on 24 September 2026 has no changelog entry (11 of 15).\n- Eden AI (81): Router, scored on the API lines. OpenAPI 3.1 document for v3 (version 3.0.0, 46 paths) at api.edenai.run/v3/docs/openapi.json, plus a management API spec (25). llms.txt on the site and in the docs, llms-full.txt and Markdown pages (10). llms.txt states when to use Eden AI and when not to, and the docs separate chat models from expert models (17). Requests follow the OpenAI shape, and expert-model tools on the MCP server carry JSON Schema inputs (12). Examples throughout, but the spec documents only 200, 201, 202, 302 and 422, while llms.txt names 401 and 451 for region refusals (10). Versioned /v3 path, but no public changelog was found (7). 25+10+17+12+10+7 = 81.\n\n## Score by category\n\n| Category | Weight | Cloudflare AI Gateway | Eden AI | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 66 | 33 | Cloudflare AI Gateway +33 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 75 | 81 | Eden AI +6 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 75 | Eden AI +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 80 | 82 | Eden AI +2 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 52 | 30 | Cloudflare AI Gateway +22 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 58 | Cloudflare AI Gateway +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 74 | 55 | Cloudflare AI Gateway +19 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **67.8 · B** | **59.9 · C** | |\n\n## Facts side by side\n\n| Fact | Cloudflare AI Gateway | Eden AI |\n| --- | --- | --- |\n| Kind | Model router | Model router |\n| Vendor | Cloudflare, Inc. | Eden AI SAS |\n| Hosted endpoint | `https://api.cloudflare.com/client/v4/accounts/{account_id}/ai` | `https://mcp.edenai.run/mcp` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Pay per use |\n| x402 | payer tooling only | no |\n| Licence | Proprietary service under Cloudflare's Self-Serve Subscription Agreement and its service-specific terms. Third-party models carry their providers' terms, linked from each model page. `ai-gateway-provider` is MIT and Cloudflare's OpenAPI repository is BSD-3-Clause | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-21 | 2026-11-05 |\n| Terms last updated | 2025-09-12 | 2026-10-22 |\n| Privacy policy last updated | no date given | 2026-10-22 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 251k npm/wk | none |\n| Agent reviews | 3/5 (4) | none |\n\n## How the scores have moved\n\n### Cloudflare AI Gateway\n\n- +0.9 on 1 November 2026: new evidence\n- +0.1 on 27 October 2026: checklist\n\n### Eden AI\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Cloudflare AI Gateway.** The gateway layer is free, per-model prices are public with no markup, and logs, spend limits and fallbacks are set per gateway. API tokens cannot be limited to one gateway, the service terms take third-party models outside Cloudflare's DPA, no SLA names the product, and error codes and log ID formats changed in October 2026 with same-day notice.\n\n**Eden AI.** Eden AI gives one OpenAI-compatible key to about 1,000 models and expert models such as OCR, speech and translation, with an EU-only endpoint, per-key guardrails and no stored content by default. No status page, SLA or changelog was found, and its own pages disagree on the default rate limit.\n\n## Before you call either\n\n### Cloudflare AI Gateway\n\n1. Use the REST API at `api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1` with a token holding Workers AI Read. A token with only an AI Gateway permission returns 401 with code 10000\n2. Send `cf-aig-gateway-id` on every Workers AI (`@cf/`) call and on dynamic routes. Without it a dynamic route resolves against the default gateway and returns 404\n3. Set `cf-aig-collect-log: false` or `cf-aig-collect-log-payload: false` on sensitive requests. Logging of prompts and responses is on by default\n4. Treat a 429 as a rate limit or a spent budget and a 401 with code 2009 as a rejected provider key. Do not retry a 2009\n5. Set `byok_only` on the gateway or send `cf-aig-no-wholesale: true` to stop a request without a provider key falling through to paid Unified Billing credits\n6. Use `createAI` from the `agents` package for new AI SDK code. `ai-gateway-provider` is deprecated and gets no new work\n\n### Eden AI\n\n1. Read GET https://api.edenai.run/v3/models at run time for model ids, prices and regions instead of hard-coding them\n2. Use https://api.eu.edenai.run/v3 when data must stay in the EU, and pick another model on a 451 region_not_allowed\n3. Set max_tokens to 500 or more for reasoning models, or the answer can come back empty\n4. Pass a fallbacks list so a provider 429 or error retries inside one request\n5. Poll check_job for MCP tools marked long-running instead of calling them again\n\n## Questions\n\n### Which is better for AI agents, Cloudflare AI Gateway or Eden AI?\n\nCloudflare AI Gateway scores 67.8 (B) on agent readiness against Eden AI's 59.9 (C), and leads in 4 of 7 scored categories. Eden AI leads on schema \u0026 documentation.\n\n### Do Cloudflare AI Gateway and Eden AI need an API key?\n\nBoth need an API key.\n\n### Can an agent call Cloudflare AI Gateway and Eden AI without installing anything?\n\nYes. Cloudflare AI Gateway has a hosted endpoint at https://api.cloudflare.com/client/v4/accounts/{account_id}/ai and Eden AI at https://mcp.edenai.run/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai.json, and with the fewest tokens: https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"cloudflare-ai-gateway\", \"b\": \"eden-ai\"}`. From a terminal: `anchor compare cloudflare-ai-gateway eden-ai`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/cloudflare-ai-gateway.json and https://www.anchorterminal.com/api/v1/tools/eden-ai.json\n\n## Other comparisons with Cloudflare AI Gateway or Eden AI\n\n- [Amazon Bedrock vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/amazon-bedrock-vs-cloudflare-ai-gateway.md)\n- [Amazon Bedrock vs Eden AI](https://www.anchorterminal.com/compare/amazon-bedrock-vs-eden-ai.md)\n- [Claude API vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/anthropic-api-vs-cloudflare-ai-gateway.md)\n- [Claude API vs Eden AI](https://www.anchorterminal.com/compare/anthropic-api-vs-eden-ai.md)\n- [Azure OpenAI in Foundry Models vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/azure-openai-vs-cloudflare-ai-gateway.md)\n- [Azure OpenAI in Foundry Models vs Eden AI](https://www.anchorterminal.com/compare/azure-openai-vs-eden-ai.md)\n- [BlockRun.AI vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/blockrun-ai-vs-cloudflare-ai-gateway.md)\n- [BlockRun.AI vs Eden AI](https://www.anchorterminal.com/compare/blockrun-ai-vs-eden-ai.md)\n- [Cerebras Inference vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/cerebras-inference-vs-cloudflare-ai-gateway.md)\n- [Cerebras Inference vs Eden AI](https://www.anchorterminal.com/compare/cerebras-inference-vs-eden-ai.md)\n- [Cloudflare AI Gateway vs Cloudflare Workers AI](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cloudflare-workers-ai.md)\n- [Cloudflare AI Gateway vs Cohere Chat API (Command models)](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-cohere-chat.md)\n- [Cloudflare AI Gateway vs DeepInfra](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepinfra.md)\n- [Cloudflare AI Gateway vs DeepSeek API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-deepseek-api.md)\n- [Cloudflare AI Gateway vs Glimpse](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-elorian-glimpse.md)\n- [Cloudflare AI Gateway vs Fireworks AI Inference](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-fireworks-inference.md)\n- [Cloudflare AI Gateway vs Gemini Developer API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-gemini-api.md)\n- [Cloudflare AI Gateway vs GroqCloud](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-groq.md)\n- [Cloudflare AI Gateway vs Hugging Face Inference Providers](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-hugging-face-inference-providers.md)\n- [Cloudflare AI Gateway vs Inkling 2 Small](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-inkling-2-small.md)\n- [Cloudflare AI Gateway vs Jais 3](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-jais-3.md)\n- [Cloudflare AI Gateway vs Meta Model API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-meta-model-api.md)\n- [Cloudflare AI Gateway vs MiniMax API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-minimax-api.md)\n- [Cloudflare AI Gateway vs Mistral AI API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-mistral-api.md)\n- [Cloudflare AI Gateway vs Muse Spark Open](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-muse-spark-open.md)\n- [Cloudflare AI Gateway vs Nemotron 3.5 Super VL](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-nemotron-3-5-super-vl.md)\n- [Cloudflare AI Gateway vs Novita AI](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-novita-ai.md)\n- [Cloudflare AI Gateway vs OpenAI API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openai-api.md)\n- [Cloudflare AI Gateway vs OpenRouter](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-openrouter.md)\n- [Cloudflare AI Gateway vs Prism Inference](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-prism-inference.md)\n- [Cloudflare AI Gateway vs Router.com (Ramp Router)](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-ramp-router.md)\n- [Cloudflare AI Gateway vs Beam 1.0](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-reflection-beam.md)\n- [Cloudflare AI Gateway vs RouterPlus](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-routerplus.md)\n- [Cloudflare AI Gateway vs SambaCloud](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-sambanova.md)\n- [Cloudflare AI Gateway vs SiliconFlow](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-siliconflow.md)\n- [Cloudflare AI Gateway vs Simplismart](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-simplismart.md)\n- [Cloudflare AI Gateway vs StepFun API](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-stepfun-api.md)\n- [Cloudflare AI Gateway vs SWE-2 Flash](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-swe-2-flash.md)\n- [Cloudflare AI Gateway vs Tencent Cloud TokenHub](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-tencent-tokenhub.md)\n- [Cloudflare AI Gateway vs Together AI Inference](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-together-inference.md)\n- [Cloudflare AI Gateway vs Vercel AI Gateway](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vercel-ai-gateway.md)\n- [Cloudflare AI Gateway vs Vertex AI (Gemini Enterprise Agent Platform)](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-vertex-ai.md)\n- [Cloudflare AI Gateway vs xAI API (Grok)](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-xai-api.md)\n- [Cloudflare Workers AI vs Eden AI](https://www.anchorterminal.com/compare/cloudflare-workers-ai-vs-eden-ai.md)\n- [Cohere Chat API (Command models) vs Eden AI](https://www.anchorterminal.com/compare/cohere-chat-vs-eden-ai.md)\n- [DeepInfra vs Eden AI](https://www.anchorterminal.com/compare/deepinfra-vs-eden-ai.md)\n- [DeepSeek API vs Eden AI](https://www.anchorterminal.com/compare/deepseek-api-vs-eden-ai.md)\n- [Eden AI vs Glimpse](https://www.anchorterminal.com/compare/eden-ai-vs-elorian-glimpse.md)\n- [Eden AI vs Fireworks AI Inference](https://www.anchorterminal.com/compare/eden-ai-vs-fireworks-inference.md)\n- [Eden AI vs Gemini Developer API](https://www.anchorterminal.com/compare/eden-ai-vs-gemini-api.md)\n- [Eden AI vs GroqCloud](https://www.anchorterminal.com/compare/eden-ai-vs-groq.md)\n- [Eden AI vs Inkling 2 Small](https://www.anchorterminal.com/compare/eden-ai-vs-inkling-2-small.md)\n- [Eden AI vs Jais 3](https://www.anchorterminal.com/compare/eden-ai-vs-jais-3.md)\n- [Eden AI vs Meta Model API](https://www.anchorterminal.com/compare/eden-ai-vs-meta-model-api.md)\n- [Eden AI vs MiniMax API](https://www.anchorterminal.com/compare/eden-ai-vs-minimax-api.md)\n- [Eden AI vs Mistral AI API](https://www.anchorterminal.com/compare/eden-ai-vs-mistral-api.md)\n- [Eden AI vs Muse Spark Open](https://www.anchorterminal.com/compare/eden-ai-vs-muse-spark-open.md)\n- [Eden AI vs Nemotron 3.5 Super VL](https://www.anchorterminal.com/compare/eden-ai-vs-nemotron-3-5-super-vl.md)\n- [Eden AI vs Novita AI](https://www.anchorterminal.com/compare/eden-ai-vs-novita-ai.md)\n- [Eden AI vs OpenAI API](https://www.anchorterminal.com/compare/eden-ai-vs-openai-api.md)\n- [Eden AI vs Prism Inference](https://www.anchorterminal.com/compare/eden-ai-vs-prism-inference.md)\n- [Eden AI vs Beam 1.0](https://www.anchorterminal.com/compare/eden-ai-vs-reflection-beam.md)\n- [Eden AI vs SambaCloud](https://www.anchorterminal.com/compare/eden-ai-vs-sambanova.md)\n- [Eden AI vs SiliconFlow](https://www.anchorterminal.com/compare/eden-ai-vs-siliconflow.md)\n- [Eden AI vs Simplismart](https://www.anchorterminal.com/compare/eden-ai-vs-simplismart.md)\n- [Eden AI vs StepFun API](https://www.anchorterminal.com/compare/eden-ai-vs-stepfun-api.md)\n- [Eden AI vs SWE-2 Flash](https://www.anchorterminal.com/compare/eden-ai-vs-swe-2-flash.md)\n- [Eden AI vs Together AI Inference](https://www.anchorterminal.com/compare/eden-ai-vs-together-inference.md)\n- [Eden AI vs Vertex AI (Gemini Enterprise Agent Platform)](https://www.anchorterminal.com/compare/eden-ai-vs-vertex-ai.md)\n- [Eden AI vs xAI API (Grok)](https://www.anchorterminal.com/compare/eden-ai-vs-xai-api.md)\n- [Antseed vs Cloudflare AI Gateway](https://www.anchorterminal.com/compare/antseed-vs-cloudflare-ai-gateway.md)\n- [Antseed vs Eden AI](https://www.anchorterminal.com/compare/antseed-vs-eden-ai.md)\n- [Cloudflare AI Gateway vs LiteLLM](https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-litellm.md)\n- [Eden AI vs Hugging Face Inference Providers](https://www.anchorterminal.com/compare/eden-ai-vs-hugging-face-inference-providers.md)\n- [Eden AI vs LiteLLM](https://www.anchorterminal.com/compare/eden-ai-vs-litellm.md)\n- [Eden AI vs OpenRouter](https://www.anchorterminal.com/compare/eden-ai-vs-openrouter.md)\n- [Eden AI vs Router.com (Ramp Router)](https://www.anchorterminal.com/compare/eden-ai-vs-ramp-router.md)\n- [Eden AI vs RouterPlus](https://www.anchorterminal.com/compare/eden-ai-vs-routerplus.md)\n- [Eden AI vs Tencent Cloud TokenHub](https://www.anchorterminal.com/compare/eden-ai-vs-tencent-tokenhub.md)\n- [Eden AI vs Vercel AI Gateway](https://www.anchorterminal.com/compare/eden-ai-vs-vercel-ai-gateway.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Cloudflare AI Gateway vs Eden AI",
        "url": ""
      }
    ],
    "description": "Cloudflare AI Gateway scores 67.8 (B) to Eden AI's 59.9 (C) for llm inference. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Cloudflare AI Gateway B 67.8",
      "Eden AI C 59.9",
      "scores"
    ],
    "h1": "Cloudflare AI Gateway vs Eden AI",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/cloudflare-ai-gateway-vs-eden-ai",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Cloudflare AI Gateway vs Eden AI for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/cloudflare-ai-gateway-vs-eden-ai"
  },
  "tokens": {
    "markdown": 6750,
    "slim": 3180
  },
  "version": 1
}
