{
    "$schema": "./provider-catalog.schema.json",
    "id": "inference-net",
    "displayName": "Inference.net",
    "aliases": [],
    "tier": 2,
    "wire": {
        "baseURL": "https://api.inference.net/v1",
        "envOverrides": {
            "apiKey": "INFERENCE_API_KEY"
        }
    },
    "models": {
        "default": "glm-5.2",
        "fallbacks": [
            "glm-5.3",
            "glm-5.3-flash",
            "llama-3.3-70b-instruct",
            "deepseek-v3.2",
            "gpt-4.1-mini",
            "gemini-2.5-flash",
            "claude-haiku-4-5"
        ],
        "defaultContextWindow": 1000000,
        "defaultMaxOutputTokens": 128000,
        "catalog": {
            "glm-5.2": {
                "contextWindow": 1000000,
                "maxOutputTokens": 128000,
                "pricingPerMTok": {
                    "input": 1.3,
                    "output": 4.4,
                    "cachedInput": 0.2
                },
                "vision": false,
                "status": "production",
                "description": "Zhipu GLM-5.2, served natively on Inference.net's own infrastructure. This is the exact model used in the request-body example on the vendor's own API quickstart (https://docs.inference.net/api/api-quickstart, retrieved 2026-09-28: `baseURL: \"https://api.inference.net/v1\"`, `model: \"glm-5.2\"`, streaming chat via the OpenAI SDK), so it is picked as the catalog default over an arbitrary roster pick. context_length/max_completion_tokens/pricing read from the live, unauthenticated GET https://api.inference.net/v1/models on 2026-09-28 (200, 63 models). input_modalities is [\"text\"] only for this model — no image/video support documented. Not live capability-probed (credential-free onboarding, no key used)."
            },
            "glm-5.3": {
                "contextWindow": 1048576,
                "maxOutputTokens": 131072,
                "pricingPerMTok": {
                    "input": 0.9,
                    "output": 3.0,
                    "cachedInput": 0.15
                },
                "vision": false,
                "status": "production",
                "description": "Zhipu GLM-5.3 — newer GLM generation on the same live roster; one of only a handful of models whose supported_endpoints spans chat, responses and messages together (per the live /v1/models payload, 2026-09-28). input_modalities text-only. Roster-listed and priced from the vendor's own /v1/models response; not itself capability-probed."
            },
            "glm-5.3-flash": {
                "contextWindow": 1048576,
                "maxOutputTokens": 128000,
                "pricingPerMTok": {
                    "input": 0.09,
                    "output": 0.28,
                    "cachedInput": 0.02
                },
                "vision": true,
                "status": "production",
                "description": "Zhipu GLM-5.3 Flash — cheapest model on the roster and the only one of the eight cataloged here whose live /v1/models entry lists input_modalities [\"text\",\"image\",\"video\"] (2026-09-28 GET), so it is the one model in this entry marked vision: true; not itself capability-probed end to end (no key used)."
            },
            "llama-3.3-70b-instruct": {
                "contextWindow": 131072,
                "maxOutputTokens": 128000,
                "pricingPerMTok": {
                    "input": 0.13,
                    "output": 0.4
                },
                "vision": false,
                "status": "production",
                "description": "Meta Llama 3.3 70B Instruct, open-weight — widely-recognized baseline fallback. Roster-listed with no cached-input price on the live /v1/models payload (2026-09-28); input_modalities text-only."
            },
            "deepseek-v3.2": {
                "contextWindow": 163840,
                "maxOutputTokens": 65536,
                "pricingPerMTok": {
                    "input": 0.7,
                    "output": 2.0,
                    "cachedInput": 0.35
                },
                "vision": false,
                "status": "production",
                "description": "DeepSeek V3.2, open-weight — roster-listed fallback from the live /v1/models GET (2026-09-28); input_modalities text-only."
            },
            "gpt-4.1-mini": {
                "contextWindow": 1047576,
                "maxOutputTokens": 32768,
                "pricingPerMTok": {
                    "input": 0.4,
                    "output": 1.6,
                    "cachedInput": 0.1
                },
                "vision": true,
                "status": "production",
                "description": "OpenAI GPT-4.1 mini, reachable through Inference.net's hosted gateway under the same Bearer-key API (the vendor's quickstart separately documents a 'proxy mode' with extra x-inference-provider* headers for BYO provider keys — not used here; this catalog entry only relies on the plain gateway call). Live /v1/models (2026-09-28) lists input_modalities [\"text\",\"image\"], so marked vision: true; not capability-probed end to end."
            },
            "gemini-2.5-flash": {
                "contextWindow": 1048576,
                "maxOutputTokens": 65536,
                "pricingPerMTok": {
                    "input": 0.3,
                    "output": 2.5,
                    "cachedInput": 0.03
                },
                "vision": true,
                "status": "production",
                "description": "Google Gemini 2.5 Flash, reachable through the same gateway. Live /v1/models (2026-09-28) lists input_modalities [\"text\",\"image\"], so marked vision: true; not capability-probed end to end."
            },
            "claude-haiku-4-5": {
                "contextWindow": 200000,
                "maxOutputTokens": 64000,
                "pricingPerMTok": {
                    "input": 1.0,
                    "output": 5.0,
                    "cachedInput": 0.1
                },
                "vision": true,
                "status": "production",
                "description": "Anthropic Claude Haiku 4.5, reachable through the same gateway; the live /v1/models payload notes Claude-family entries list only the \"messages\" supported_endpoint (2026-09-28). input_modalities [\"text\",\"image\"], so marked vision: true; not capability-probed end to end."
            }
        },
        "topModels": [
            "glm-5.2",
            "glm-5.3",
            "glm-5.3-flash",
            "llama-3.3-70b-instruct",
            "deepseek-v3.2",
            "gpt-4.1-mini",
            "gemini-2.5-flash",
            "claude-haiku-4-5"
        ]
    },
    "capabilities": {
        "text": true,
        "streaming": true,
        "tools": true,
        "toolsWithStreaming": false,
        "structuredOutput": true,
        "structuredOutputWithTools": false,
        "embeddings": false,
        "thinking": false
    },
    "errorRules": [
        {
            "status": 401,
            "class": "authentication",
            "message": "Invalid Inference.net API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"
        }
    ],
    "setup": {
        "url": "https://inference.net/register/",
        "apiKeyFormat": null,
        "billingPolicy": "free-tier",
        "instructions": [
            "1. Visit: https://inference.net/register/ and sign up",
            "2. Create an Inference.net project API key from the dashboard (this is the gateway key that goes in {apiKeyEnvVar} — do not confuse it with a third-party provider key used only for the separate 'proxy mode')",
            "3. New accounts start on a pay-as-you-go, $0-usage tier (1M included gateway requests/month, 30 req/min) per https://inference.net/pricing; confirm current terms before heavy use",
            "4. Set {apiKeyEnvVar} in your .env file"
        ],
        "description": "OpenAI-compatible endpoint at https://api.inference.net/v1 (`Authorization: Bearer <key>`), serving 63 models on the live roster across many upstream families — Claude, GPT, Gemini, DeepSeek, GLM, Kimi, Llama, Qwen, Gemma, Nemotron, plus Inference.net's own Schematron structured-extraction models — behind one API. A separate 'proxy mode' can forward to your own provider key via x-inference-provider* headers; not used by this catalog entry."
    },
    "evidence": {
        "rosterVerified": {
            "date": "2026-09-28",
            "method": "unauthenticated GET https://api.inference.net/v1/models — 63 models; credential-free, no key used",
            "status": 200
        },
        "liveMatrix": null,
        "addedInPR": "https://github.com/juspay/neurolink/pull/1848"
    }
}
