Skip to main content

GET /v1/typegen/manifest

Returns the metadata for all variables in a stage in a format suitable for type generation tools, IDE plugins, and codegen scripts. This endpoint returns the same metadata as /v1/env/list but structured for tooling consumption.
This endpoint is for tooling, not for reading variable values. Use /v1/env/evaluate or the SDK to fetch values at runtime.

Request

curl "https://api.barekey.dev/v1/typegen/manifest?orgSlug=acme-42&projectSlug=backend-api-1234&stageSlug=production" \
  -H "Authorization: Bearer bk_at_..."
Query parameters:
ParameterTypeRequiredDescription
orgSlugstringYesOrganization slug
projectSlugstringYesProject slug
stageSlugstringYesStage name

Response

{
  "manifestVersion": 1,
  "variables": [
    {
      "name": "DATABASE_URL",
      "kind": "secret",
      "declaredType": "string"
    },
    {
      "name": "MAX_CONNECTIONS",
      "kind": "secret",
      "declaredType": "int64"
    },
    {
      "name": "FEATURE_FLAGS",
      "kind": "secret",
      "declaredType": "json"
    },
    {
      "name": "CHECKOUT_FLOW",
      "kind": "ab_roll",
      "declaredType": "string",
      "chance": 0.2
    }
  ],
  "requestId": "req_01hx..."
}
Response fields:
FieldTypeDescription
manifestVersionnumberSchema version of the manifest format. Currently 1.
variablesarrayVariable metadata array
requestIdstringRequest trace ID
Each variable:
FieldTypeAlways presentDescription
namestringYesVariable name
kind"secret" | "ab_roll"YesVariable kind
declaredTypestringNoDeclared type, if set
chancenumberab_roll onlyA/B chance value

Use cases

Type-safe SDK wrapper generation A codegen script can use this manifest to generate a typed wrapper around the SDK:
// Generated by barekey-typegen
import { BarekeyClient } from "@barekey/sdk/server";

export async function getEnv(client: BarekeyClient) {
  return {
    DATABASE_URL: () => client.get("DATABASE_URL"),
    MAX_CONNECTIONS: () => client.get("MAX_CONNECTIONS"),
    FEATURE_FLAGS: () => client.get("FEATURE_FLAGS"),
    CHECKOUT_FLOW: (opts?: { seed: string; key: string }) =>
      client.get("CHECKOUT_FLOW", opts),
  };
}
IDE plugin integration IDE plugins can fetch the manifest and provide autocompletion for variable names and return types when calling barekey.get(...).

Error codes

CodeHTTPWhen
UNAUTHORIZED401Invalid or expired token
INVALID_REQUEST400Missing orgSlug, projectSlug, or stageSlug query parameter
INVALID_ORG_SCOPE403Token org doesn’t have access to this project