Skip to main content
Environments

Create environment

POST /api/v1/cloud/environments Creates a new cloud execution environment for hosting Agent sessions.

Headers

HeaderRequiredDescription
AuthorizationYesBearer <PAT or SAT>
Content-TypeYesapplication/json

Request body

FieldTypeRequiredDescription
namestringYesNon-empty environment name
descriptionstringNoEnvironment description
configEnvironment configNoEnvironment configuration. Defaults to {"type":"cloud"} when omitted
metadataMetadata objectNoCustom metadata. Defaults to {}

Example request

curl -s -X POST 'https://api.qoder.com.cn/api/v1/cloud/environments' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "doc-test-env",
    "config": {
      "type": "cloud",
      "packages": {
        "apt": ["curl"]
      }
    }
  }'

Example request: with setup script

curl -s -X POST 'https://api.qoder.com.cn/api/v1/cloud/environments' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "doc-test-env-with-setup",
    "config": {
      "type": "cloud",
      "packages": {
        "npm": ["pnpm@9"]
      },
      "setup_script": "set -euo pipefail\n[ -d /data/workspace/repo/.git ] || git clone https://github.com/me/repo /data/workspace/repo\ncd /data/workspace/repo && pnpm install --frozen-lockfile"
    }
  }'

Example response

HTTP 200 OK
{
  "id": "env_019e3bb39b6774d8878cd0b9d237574b",
  "type": "environment",
  "name": "doc-test-env",
  "description": "",
  "config": {
    "type": "cloud",
    "packages": {
      "type": "packages",
      "apt": ["curl"],
      "cargo": [],
      "gem": [],
      "go": [],
      "npm": [],
      "pip": []
    }
  },
  "metadata": {},
  "archived_at": null,
  "created_at": "2026-05-18T15:28:07.017808Z",
  "updated_at": "2026-05-18T15:28:07.017808Z"
}

Response fields

FieldTypeDescription
idstringEnvironment unique identifier with the env_ prefix
typestringAlways "environment"
namestringEnvironment name
descriptionstringEnvironment description
configEnvironment configEnvironment configuration
metadataMetadata objectCustom metadata
archived_atstring|nullArchive time (ISO 8601), null when not archived
created_atstringCreation time (ISO 8601)
updated_atstringLast update time (ISO 8601)

Errors

HTTPTypeTrigger
400invalid_request_errorMissing required field name
400invalid_request_errorInvalid config or metadata value
400invalid_request_errorconfig.setup_script is not a string, or exceeds 64 KB
401authentication_errorPAT or SAT invalid or expired
403permission_errorNot authorized for this operation
See Errors for the full error envelope.