Save a draft value
Stages a value for one env without publishing. The draft is validated against the config's current schema and stored alongside the baseVersion it was forked from.
Saving over an existing draft overwrites it. Use POST /{id}/publish to promote it to a new published version.
Iterate on a config value on dev without affecting prod — preview in staging, then publish.
Authorization
bearerSdkKey Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".
In: header
Path Parameters
Stable opaque config id.
Header Parameters
Project the request operates on. Must match the project the SDK key belongs to.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://shipeasy.ai/api/admin/configs/string/drafts" \ -H "X-Project-Id: string" \ -H "Content-Type: application/json" \ -d '{ "env": "dev", "value": { "tiers": [ { "name": "free" }, { "name": "pro" }, { "name": "enterprise" } ] } }'{
"id": "cfg_01j7wae5h6j7k8l9m0n1p2q3r4",
"env": "dev",
"baseVersion": 5,
"updatedAt": "2026-05-10T09:31:00.000Z"
}{
"error": "string",
"code": "string",
"detail": "string"
}{
"error": "string",
"code": "string",
"detail": "string"
}{
"error": "string",
"code": "string",
"detail": "string"
}{
"error": "string",
"code": "string",
"detail": "string"
}{
"error": "string",
"code": "string",
"detail": "string"
}{
"error": "string",
"code": "string",
"detail": "string"
}