---
title: "Get a shader"
method: GET
path: "/v1/shaders/{shader_id}"
tags: ["shaders"]
---

# Get a shader

`GET /v1/shaders/{shader_id}`

## Request

- Base URL: `https://api.framelane.io`
- URL: `https://api.framelane.io/v1/shaders/{shader_id}`
- Auth: HTTP bearer

One shader; `?view=full` adds its source and the compiled variants' text.

## Path parameters

- `shader_id` string, required

## Query parameters

- `view` 'full', nullable: `full` adds `source` and `variants`.

## Response `200`

Successful Response

- ShaderOut: A stored shader. `variants` and `source` come back with `?view=full` only.
  - `id` string, required: Its id, for `effects[].shader.id`.
  - `name` string, required
  - `lang` string, required
  - `hash` string, required: SHA-256 of "sksl\n" + source, 64 lowercase hex digits: the entry's identity.
  - `jitter` boolean, required: Compiled in Jitter's dialect.
  - `status` 'compiled' | 'failed', required: `failed` shaders cannot render; `errors` says why.
  - `errors` ShaderCompileError[]: The compiler's errors, with positions.
    - `line` integer, required: 1-based line in the source; 0 when the error is not in it (a param).
    - `col` integer, required: 1-based column in the source; 0 with line 0.
    - `message` string, required
  - `params` ShaderParamSpec[], required
    - `name` string, required: A letter, then letters, digits and single underscores; not a prelude name (`time` is taken by `u_time`). The shader reads it as `u_<name>`.
    - `type` 'float' | 'color' | 'vec2', required: `float`, `color` (straight-alpha RGBA) or `vec2`.
    - `default` union: Its value where an effect does not set it. Omitted: 0, transparent black or [0, 0].
      - number
      - string
      - number[]
    - `min` number, nullable: Lowest value an effect may set (a vec2's each component).
    - `max` number, nullable: Highest value an effect may set (a vec2's each component).
  - `variant_hashes` object: SHA-256 of each variant (`glsl330`, `glsles300`, `wgsl`), as the engines check them.
  - `shared` boolean, required: A shared shader every workspace can use, and none can delete.
  - `source` string, nullable: The SkSL source (`?view=full`).
  - `variants` object, nullable: The compiled variants' text (`?view=full`).
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `401`: Missing or invalid API key.
- `404`: Shader not found.
- `422`: Validation Error

---

[API](https://skmtc.dev/framelane/apis/framelane-api.md) · [All operations](https://skmtc.dev/framelane/apis/framelane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/framelane/apis/framelane-api/revisions/a223001ca8e5?raw)
