Discover/jsDelivr API
live

jsDelivr APIcdn.jsdelivr.net ↗

Query prebuilt model configs from any published @mlc-ai/web-llm npm package version. Get model_id, vram_required_MB, and source excerpts in one call.

Endpoint health
monitored
find_model_config
Checks pendingself-healing
Endpoints
1
Updated
3h ago

What is the jsDelivr API?

The find_model_config endpoint searches the compiled runtime bundle for any published @mlc-ai/web-llm package version and returns every prebuilt model config object whose model_id matches a given substring. Each match surfaces 4 fields: the exact model_id string, VRAM requirement in MB, a source excerpt, and a match count — making it straightforward to audit which models are bundled in a specific release without downloading and parsing the bundle yourself.

This call costs10 credits / call— charged only on success
Try it
Published @mlc-ai/web-llm package version in MAJOR.MINOR.PATCH form; confirmed on 0.2.79 and 0.2.80.
Exact, case-sensitive substring to locate in the model config source, e.g. a model family prefix like SmolLM2-360M or a full id like SmolLM2-360M-Instruct-q4f16_1-MLC.
→ api.parse.bot/scraper/e3f9f698-5a56-4082-9254-cc03212a7bb8/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/e3f9f698-5a56-4082-9254-cc03212a7bb8/find_model_config?model_id=SmolLM2-360M' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace cdn-jsdelivr-net-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: WebLLM prebuilt model config lookup — bounded, re-runnable."""
from parse_apis.cdn_jsdelivr_net_api import WebLlm, VersionNotFound

client = WebLlm()

# Search for all SmolLM2-360M quantisation variants in the default bundle version.
for cfg in client.model_configs.search(model_id="SmolLM2-360M", limit=5):
    print(cfg.model_id, f"{cfg.vram_required_MB} MB" if cfg.vram_required_MB else "VRAM unknown")

# Drill into one specific variant to read its full source excerpt.
variant = client.model_configs.search(model_id="SmolLM2-360M-Instruct-q0f16-MLC", limit=1).first()
if variant is not None:
    print(variant.model_id, variant.source_excerpt[:120])

# Look up models in an older package version; catch a bad version gracefully.
try:
    for cfg in client.model_configs.search(model_id="Llama-3", version="9.9.9", limit=3):
        print(cfg.model_id)
except VersionNotFound as e:
    print("version not found:", e.message)

print("exercised: model_configs.search")
All endpoints · 1 totalmissing one? ·

Fetches the compiled web-llm runtime bundle for one published package version and returns every prebuilt model config object whose source text contains the given model_id substring (case-sensitive). One row per distinct config object, in source order; each row carries the exact model_id string, the parsed vram_required_MB number, and the verbatim source excerpt of the whole object literal (CRLF normalized to LF). A substring that matches nothing yields match_count 0 and an empty matches list; a package version that does not exist on the registry yields a stale_input (input_not_found) error. Matching is capped at 50 objects per call. One round trip per call; the bundle is several megabytes.

Input
ParamTypeDescription
versionstringPublished @mlc-ai/web-llm package version in MAJOR.MINOR.PATCH form; confirmed on 0.2.79 and 0.2.80.
model_idrequiredstringExact, case-sensitive substring to locate in the model config source, e.g. a model family prefix like SmolLM2-360M or a full id like SmolLM2-360M-Instruct-q4f16_1-MLC.
Response
{
  "type": "object",
  "fields": {
    "query": "the model_id substring that was searched",
    "matches": "array of {model_id (exact string from source), vram_required_MB (number parsed from source, null if absent), source_excerpt (verbatim object literal)}",
    "version": "package version the bundle was read from",
    "match_count": "integer number of distinct config objects matched"
  },
  "sample": {
    "data": {
      "query": "SmolLM2-1.7B",
      "matches": [
        {
          "model_id": "SmolLM2-1.7B-Instruct-q4f16_1-MLC",
          "source_excerpt": "{\n            model: \"https://huggingface.co/mlc-ai/SmolLM2-1.7B-Instruct-q4f16_1-MLC\",\n            model_id: \"SmolLM2-1.7B-Instruct-q4f16_1-MLC\",\n            model_lib: modelLibURLPrefix +\n                modelVersion +\n                \"/SmolLM2-1.7B-Instruct-q4f16_1-ctx4k_cs1k-webgpu.wasm\",\n            vram_required_MB: 1774.19,\n            low_resource_required: true,\n            required_features: [\"shader-f16\"],\n            overrides: {\n                context_window_size: 4096,\n            },\n        }",
          "vram_required_MB": 1774.19
        },
        {
          "model_id": "SmolLM2-1.7B-Instruct-q4f32_1-MLC",
          "source_excerpt": "{\n            model: \"https://huggingface.co/mlc-ai/SmolLM2-1.7B-Instruct-q4f32_1-MLC\",\n            model_id: \"SmolLM2-1.7B-Instruct-q4f32_1-MLC\",\n            model_lib: modelLibURLPrefix +\n                modelVersion +\n                \"/SmolLM2-1.7B-Instruct-q4f32_1-ctx4k_cs1k-webgpu.wasm\",\n            vram_required_MB: 2692.38,\n            low_resource_required: true,\n            overrides: {\n                context_window_size: 4096,\n            },\n        }",
          "vram_required_MB": 2692.38
        }
      ],
      "version": "0.2.80",
      "match_count": 2
    },
    "status": "success"
  }
}

About the jsDelivr API

What the API returns

The single find_model_config endpoint accepts a version parameter (e.g. 0.2.79 or 0.2.80) and a required model_id substring. It reads the compiled bundle for that package version and returns every prebuilt model config object whose source text contains the given substring, in source order. The response envelope contains query (the substring you passed), version (the resolved package version), match_count (integer), and matches (an array of config objects).

Response shape per match

Each element in matches includes model_id (the exact string from the bundle), vram_required_MB (a number parsed from the source, or null when the field is absent in that config), and source_excerpt (a verbatim slice of the surrounding source text). This lets you verify exact model identifiers and memory requirements as they appear in the published library, not as documented elsewhere.

Version coverage and search behavior

The version parameter is optional and defaults to the latest confirmed build. Matching is case-sensitive and substring-based, so passing SmolLM2- will match every config whose model_id contains that prefix, while passing the full exact identifier narrows results to one entry. There is no pagination; all matching configs are returned in a single response.

Reliability & maintenance

The jsDelivr API is a managed, monitored endpoint for cdn.jsdelivr.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cdn.jsdelivr.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official cdn.jsdelivr.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Check VRAM requirements for all models in a specific web-llm release before deploying a browser-based LLM feature
  • Enumerate every model family available in a given @mlc-ai/web-llm version by filtering on a family prefix like 'Llama-'
  • Compare model availability between two package versions by querying both with the same model_id substring
  • Validate that a target model_id exists in a specific release before pinning that version in a dependency
  • Audit which SmolLM2 or Phi variants shipped in a minor release for changelog or release note generation
  • Build a model selection UI that surfaces real vram_required_MB values pulled directly from the bundled config
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does jsDelivr have an official developer API?+
Yes. jsDelivr provides an official public API at https://www.jsdelivr.com/docs/data.jsdelivr.com for package metadata, file listings, and usage stats. This Parse API targets the npm bundle content specifically — it reads model config data embedded in the @mlc-ai/web-llm runtime build.
What does the find_model_config endpoint return when no configs match the model_id substring?+
The response still contains the full envelope — query, version, and match_count — but matches will be an empty array and match_count will be 0. The endpoint does not return an error for zero results.
Does the API expose all fields from a model config object, such as model URL, tokenizer path, or context window size?+
Currently it exposes model_id, vram_required_MB, and source_excerpt per match. Additional fields present in a config object (such as model URL, tokenizer details, or quantization scheme) are not individually parsed into the response. You can fork this API on Parse and revise it to extract those fields from the source_excerpt or add dedicated parsed fields.
Is the version parameter validated against published npm releases?+
The API has confirmed behavior on versions 0.2.79 and 0.2.80. Passing an unpublished or malformed version string may result in an error or empty response. The parameter expects MAJOR.MINOR.PATCH form.
Can I search across multiple package versions in one request?+
No, each request targets exactly one version. To compare model configs across releases you need one request per version. You can fork this API on Parse and revise it to accept a version range and aggregate results across multiple bundle reads.
Page content last updated . Spec covers 1 endpoint from cdn.jsdelivr.net.
Related APIs in Developer ToolsSee all →