---
title: "Resolve a kernel manifest + PTX text"
method: GET
path: "/kernels/{name}/{version}"
tags: ["kernels"]
---

# Resolve a kernel manifest + PTX text

`GET /kernels/{name}/{version}`

FEATURE-GATED: only mounted under `--features
kernel-registry-api`. Returns `503
kernel_registry_not_configured` when the feature is on but
`TENSOR_WASM_API_KERNEL_HMAC_KEY` is unset.

Resolves a single manifest plus its PTX source by
`name`/`version`. Any authenticated tenant may resolve. Path
segments are accepted verbatim; clients must percent-encode any
reserved characters in `name` or `version`.

## Path parameters

- `name` string, required
- `version` string, required

## Headers

- `X-TensorWasm-Tenant` integer

## Response `200`

Resolved manifest and its PTX text.

- ResolveKernelResponse — Body of `GET /kernels/{name}/{version}`. Mirrors `tensor_wasm_api::kernels::ResolveKernelResponse`.
  - `manifest` KernelManifest, required — Signed kernel manifest. Mirrors the `tensor_wasm_jit::registry::KernelManifest` Rust struct (`#[non_exhaustive]`, so additional fields may appear in future revisions). `digest` and `signature` are fixed 32-byte arrays serialized by serde as JSON arrays of 32 integers (0-255); the HMAC `signature` tag is public by design (it authenticates authorship, the signing key is the secret).
    - `name` string, required — Stable kernel name (e.g. `matmul.f32`).
    - `version` string, required — SemVer-style version (e.g. `1.0.0`).
    - `sm_version` integer, required — CUDA compute capability the PTX targets (e.g. 80 for sm_80).
    - `digest` integer[], required — BLAKE3 hash of the PTX text (32 bytes).
    - `signature` integer[], required — HMAC-SHA256 tag over the canonical signed bytes (32 bytes).
    - `published_unix_ms` integer, required — Wall-clock publish timestamp (Unix millis).
    - `publisher` string, required — Publisher identifier (typically a tenant id or signing-key id).
  - `ptx_text` string, required — PTX text whose BLAKE3 matches `manifest.digest`.

## Other responses

- `401` — Missing or unrecognised bearer token
- `404` — Function or job id is unknown
- `429` — Per-token QPS + burst exceeded. The `Retry-After` header carries the wait in integer seconds (RFC 9110 §10.2.3).
- `503` — Kernel registry routes are mounted but the backing registry is not configured: `TENSOR_WASM_API_KERNEL_HMAC_KEY` is unset, so the handler returns `503 kernel_registry_not_configured`. (The publish path can also surface `kernel_registry_storage_error` here on a backend I/O failure.)

---

[API](https://skmtc.dev/craton-co/apis/tensorwasm-http-api.md) · [All operations](https://skmtc.dev/craton-co/apis/tensorwasm-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/craton-co/tensorwasm-http-api/revisions/d363e13d8640/schema)
