Shipeasy
Flags experimentsApiOperations

List dynamic configs

Returns a single page of configs ordered by updated_at desc, id desc. Each row includes the latest published version per env and any active drafts.

Returns a single page of configs ordered by updated_at desc, id desc. Each row includes the latest published version per env and any active drafts.

Use case

Snapshot every config in the project — e.g. CI check that asserts no env is stuck on a stale default or that every config has a published value on prod.

GET
/api/admin/configs

Authorization

bearerSdkKey
AuthorizationBearer <token>

Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".

In: header

Query Parameters

limit?integer

Page size (1–500). Defaults to 100.

Default100
Range1 <= value <= 500
cursor?string

Opaque cursor returned in the previous page's next_cursor. Omit for the first page.

q?string

Case-insensitive substring filter across the resource's human-readable text columns (e.g. name, title, description). OR-matched across those columns; omit to return everything.

Lengthlength <= 100

Header Parameters

X-Project-Id?string

Project the request operates on. Optional — defaults to the project the SDK key belongs to; pass it only to scope a multi-project key (the generated client sets it once from its configuration, so per-call callers never thread it).

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://shipeasy.ai/api/admin/configs"
{
  "data": [
    {
      "id": "cfg_01j7wae5h6j7k8l9m0n1p2q3r4",
      "name": "pricing.tiers",
      "description": "Pricing tier definitions consumed by the checkout flow.",
      "folder": "pricing",
      "creatorEmail": "ana@example.com",
      "createdAt": "2026-05-01T10:12:00.000Z",
      "schema": {
        "type": "object",
        "properties": {
          "tiers": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "tiers"
        ]
      },
      "updatedAt": "2026-05-09T18:22:11.000Z",
      "envs": {
        "dev": {
          "version": 5,
          "publishedAt": "2026-05-09T18:22:11.000Z",
          "publishedBy": "ana@example.com"
        },
        "stage": {
          "version": 4,
          "publishedAt": "2026-05-08T11:05:22.000Z",
          "publishedBy": "ana@example.com"
        },
        "prod": {
          "version": 4,
          "publishedAt": "2026-05-08T11:05:22.000Z",
          "publishedBy": "ana@example.com"
        }
      },
      "drafts": {
        "dev": {
          "updatedAt": "2026-05-10T09:31:00.000Z",
          "authorEmail": "bo@example.com",
          "baseVersion": 5
        }
      }
    }
  ],
  "next_cursor": null
}
{
  "error": "Malformed request (bad JSON, missing project scope).",
  "code": "BAD_REQUEST"
}
{
  "error": "Missing or invalid admin SDK key.",
  "code": "UNAUTHORIZED"
}

{
  "error": "Key is valid but not allowed to act on this project.",
  "code": "FORBIDDEN"
}

{
  "error": "The resource does not exist or is not visible to the caller.",
  "code": "NOT_FOUND"
}

{
  "error": "A resource with this name already exists in the project.",
  "code": "ALREADY_EXISTS"
}

{
  "error": "The request body failed structural (schema) validation.",
  "code": "VALIDATION"
}

Was this page helpful?
✎ Edit this page