Haijun Platform Docs
ID

Get Work Item

GET /v1/environments/{environment_id}/work/{work_id}

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Retrieve detailed information about a specific work item.

Path parameters

  • environment_id: string
  • work_id: string

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"
  • "juglow-workspace-id": optional string

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Returns

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/$WORK_ID \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "id": "id",
  "acknowledged_at": "acknowledged_at",
  "created_at": "created_at",
  "data": {
    "id": "id",
    "type": "session"
  },
  "environment_id": "environment_id",
  "latest_heartbeat_at": "latest_heartbeat_at",
  "metadata": {
    "foo": "string"
  },
  "secret": "secret",
  "started_at": "started_at",
  "state": "queued",
  "stop_requested_at": "stop_requested_at",
  "stopped_at": "stopped_at",
  "type": "work"
}

Poll for Work

GET /v1/environments/{environment_id}/work/poll

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Long poll for work items in the queue.

Path parameters

  • environment_id: string

Query parameters

  • block_ms: optional number

How long to wait for work to arrive before returning. Must be 1-999 in milliseconds. Defaults to non-blocking (returns immediately if no work is available).

minimum: 1

  • reclaim_older_than_ms: optional number

Reclaim unacknowledged work items older than this many milliseconds. If omitted, uses the default (5000ms).

minimum: 1

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"
  • "Juglow-Worker-ID": optional string

Unique identifier for the specific worker polling, used to track aggregated environment-level work metrics in Console

Returns

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/poll \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "id": "id",
  "acknowledged_at": "acknowledged_at",
  "created_at": "created_at",
  "data": {
    "id": "id",
    "type": "session"
  },
  "environment_id": "environment_id",
  "latest_heartbeat_at": "latest_heartbeat_at",
  "metadata": {
    "foo": "string"
  },
  "secret": "secret",
  "started_at": "started_at",
  "state": "queued",
  "stop_requested_at": "stop_requested_at",
  "stopped_at": "stopped_at",
  "type": "work"
}

Acknowledge Work

POST /v1/environments/{environment_id}/work/{work_id}/ack

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Acknowledge receipt of a work item, transitioning it from 'queued' to 'starting' and removing it from the queue.

Path parameters

  • environment_id: string
  • work_id: string

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"

Returns

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/$WORK_ID/ack \
    -X POST \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "id": "id",
  "acknowledged_at": "acknowledged_at",
  "created_at": "created_at",
  "data": {
    "id": "id",
    "type": "session"
  },
  "environment_id": "environment_id",
  "latest_heartbeat_at": "latest_heartbeat_at",
  "metadata": {
    "foo": "string"
  },
  "secret": "secret",
  "started_at": "started_at",
  "state": "queued",
  "stop_requested_at": "stop_requested_at",
  "stopped_at": "stopped_at",
  "type": "work"
}

Record Heartbeat

POST /v1/environments/{environment_id}/work/{work_id}/heartbeat

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Record a heartbeat for a work item to maintain the lease.

Path parameters

  • environment_id: string
  • work_id: string

Query parameters

  • desired_ttl_seconds: optional number

Desired TTL in seconds

  • expected_last_heartbeat: optional string

Expected last_heartbeat for conditional update (optimistic concurrency). Use literal 'NO_HEARTBEAT' to claim an unclaimed lease (first heartbeat). For subsequent heartbeats, echo the server's previous last_heartbeat value exactly. Returns 412 Precondition Failed if the actual value doesn't match.

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"

Returns

  • BetaSelfHostedWorkHeartbeatResponse object

Response after recording a heartbeat for a work item.

  • type: "work_heartbeat"

The type of response

default: work_heartbeat

  • last_heartbeat: string

RFC 3339 timestamp of the actual heartbeat from DB

  • lease_extended: boolean

Whether the heartbeat succeeded in extending the lease

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item (active/stopping/stopped)

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • ttl_seconds: number

Effective TTL applied to the lease

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/$WORK_ID/heartbeat \
    -X POST \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "last_heartbeat": "last_heartbeat",
  "lease_extended": true,
  "state": "queued",
  "ttl_seconds": 0,
  "type": "work_heartbeat"
}

Stop Work

POST /v1/environments/{environment_id}/work/{work_id}/stop

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Stop a work item, initiating graceful or forced shutdown.

Path parameters

  • environment_id: string
  • work_id: string

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"
  • "juglow-workspace-id": optional string

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Body parameters

  • force: optional boolean

If true, immediately stop work without graceful shutdown

default: false

Returns

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/$WORK_ID/stop \
    -H 'Content-Type: application/json' \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY" \
    -d '{}'

Response (200)

json
{
  "id": "id",
  "acknowledged_at": "acknowledged_at",
  "created_at": "created_at",
  "data": {
    "id": "id",
    "type": "session"
  },
  "environment_id": "environment_id",
  "latest_heartbeat_at": "latest_heartbeat_at",
  "metadata": {
    "foo": "string"
  },
  "secret": "secret",
  "started_at": "started_at",
  "state": "queued",
  "stop_requested_at": "stop_requested_at",
  "stopped_at": "stopped_at",
  "type": "work"
}

List Work Items

GET /v1/environments/{environment_id}/work

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

List work items in an environment.

Path parameters

  • environment_id: string

Query parameters

  • limit: optional number

Maximum number of work items to return

default: 20, minimum: 1, maximum: 1000

  • page: optional string

Opaque cursor from previous response for pagination

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"

Returns

  • BetaSelfHostedWorkListResponse object

Response when listing work items with cursor-based pagination.

  • data: array of BetaSelfHostedWork

List of work items

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

  • next_page: string or null

Opaque cursor for fetching the next page of results

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "data": [
    {
      "id": "id",
      "acknowledged_at": "acknowledged_at",
      "created_at": "created_at",
      "data": {
        "id": "id",
        "type": "session"
      },
      "environment_id": "environment_id",
      "latest_heartbeat_at": "latest_heartbeat_at",
      "metadata": {
        "foo": "string"
      },
      "secret": "secret",
      "started_at": "started_at",
      "state": "queued",
      "stop_requested_at": "stop_requested_at",
      "stopped_at": "stopped_at",
      "type": "work"
    }
  ],
  "next_page": "next_page"
}

Update Work Item

POST /v1/environments/{environment_id}/work/{work_id}

Note: these endpoints are called automatically by the pre-built environment worker provided in the SDKs and CLI, for orchestrating sessions with self-hosted sandbox environments. They are included here as a reference; you do not need to invoke them directly.

Update work item metadata with merge semantics.

Path parameters

  • environment_id: string
  • work_id: string

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"
  • "juglow-workspace-id": optional string

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Body parameters

  • metadata: map[string]

Metadata patch. Set a key to a string to upsert it, or to null to delete it. Omit the field to preserve existing metadata.

Returns

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/$WORK_ID \
    -H 'Content-Type: application/json' \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY" \
    -d '{
          "metadata": {
            "foo": "string"
          }
        }'

Response (200)

json
{
  "id": "id",
  "acknowledged_at": "acknowledged_at",
  "created_at": "created_at",
  "data": {
    "id": "id",
    "type": "session"
  },
  "environment_id": "environment_id",
  "latest_heartbeat_at": "latest_heartbeat_at",
  "metadata": {
    "foo": "string"
  },
  "secret": "secret",
  "started_at": "started_at",
  "state": "queued",
  "stop_requested_at": "stop_requested_at",
  "stopped_at": "stopped_at",
  "type": "work"
}

Get Queue Statistics

GET /v1/environments/{environment_id}/work/stats

Get statistics about the work queue for an environment.

Path parameters

  • environment_id: string

Headers

  • "juglow-beta": optional array of JuglowBeta

Optional header to specify the beta version(s) you want to use.

  • string
  • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 45 more
  • "message-batches-2024-09-24"
  • "prompt-caching-2024-07-31"
  • "computer-use-2024-10-22"
  • "computer-use-2025-01-24"
  • "pdfs-2024-09-25"
  • "token-counting-2024-11-01"
  • "token-efficient-tools-2025-02-19"
  • "output-128k-2025-02-19"
  • "files-api-2025-04-14"
  • "mcp-client-2025-04-04"
  • "mcp-client-2025-11-20"
  • "dev-full-thinking-2025-05-14"
  • "interleaved-thinking-2025-05-14"
  • "code-execution-2025-05-22"
  • "extended-cache-ttl-2025-04-11"
  • "context-1m-2025-08-07"
  • "context-management-2025-06-27"
  • "model-context-window-exceeded-2025-08-26"
  • "tracks-2025-10-02"
  • "fast-mode-2026-02-01"
  • "output-300k-2026-03-24"
  • "user-profiles-2026-03-24"
  • "user-profiles-2026-08-18"
  • "user-profiles-2026-09-04"
  • "advisor-tool-2026-03-01"
  • "managed-agents-2026-04-01"
  • "cache-diagnosis-2026-04-07"
  • "dreaming-2026-04-21"
  • "thinking-token-count-2026-05-13"
  • "server-side-fallback-2026-06-01"
  • "server-side-fallback-2026-07-01"
  • "fallback-credit-2026-06-01"
  • "fallback-credit-2026-07-01"
  • "agent-memory-2026-07-22"
  • "mid-conversation-tool-changes-2026-07-01"
  • "compact-2026-01-12"
  • "computer-use-2025-11-24"
  • "mcp-tunnels-2026-06-22"
  • "structured-outputs-2025-11-13"
  • "task-budgets-2026-03-13"
  • "thinking-display-updates-2026-08-18"
  • "ce-user-management-2026-07-13"
  • "mid-conversation-output-config-2026-07-01"
  • "thinking-binding-controls-2026-08-01"
  • "mid-conversation-system-clear-at-2026-08-21"
  • "compact-2026-09-04"
  • "inline-tools-2026-09-15"
  • "mcp-client-2026-09-15"
  • "juglow-workspace-id": optional string

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Returns

  • BetaSelfHostedWorkQueueStats object

Statistics about the work queue for an environment.

Uses Redis Stream consumer group metrics for O(1) queries.

  • type: "work_queue_stats"

The type of object

default: work_queue_stats

  • depth: number

Number of work items waiting to be picked up (lag from consumer group)

  • oldest_queued_at: string or null

RFC 3339 timestamp of oldest item in the work stream (includes both queued and pending items), null if stream empty

  • pending: number

Number of work items being processed (polled but not acknowledged)

default: 0

  • workers_polling: number or null

Number of workers that have polled for work in the last 30 seconds. Requires worker_id to be sent with poll requests.

Example

bash
curl https://haijun.my.id/v1/environments/$ENVIRONMENT_ID/work/stats \
    -H 'juglow-version: 2023-06-01' \
    -H 'juglow-beta: managed-agents-2026-04-01' \
    -H "X-Api-Key: $JUGLOW_API_KEY"

Response (200)

json
{
  "depth": 0,
  "oldest_queued_at": "oldest_queued_at",
  "pending": 0,
  "type": "work_queue_stats",
  "workers_polling": 0
}

Domain types

Beta Self Hosted Work

  • BetaSelfHostedWork object

Work resource representing a unit of work in a self-hosted environment.

Work items are queued when sessions are created or when long-dormant sessions receive new messages. The environment worker polls for work to execute in a self-hosted sandbox.

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

Beta Self Hosted Work Heartbeat Response

  • BetaSelfHostedWorkHeartbeatResponse object

Response after recording a heartbeat for a work item.

  • type: "work_heartbeat"

The type of response

default: work_heartbeat

  • last_heartbeat: string

RFC 3339 timestamp of the actual heartbeat from DB

  • lease_extended: boolean

Whether the heartbeat succeeded in extending the lease

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item (active/stopping/stopped)

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • ttl_seconds: number

Effective TTL applied to the lease

Beta Self Hosted Work List Response

  • BetaSelfHostedWorkListResponse object

Response when listing work items with cursor-based pagination.

  • data: array of BetaSelfHostedWork

List of work items

  • type: "work"

The type of object (always 'work')

default: work

  • id: string

Work identifier (e.g., 'work_...')

  • acknowledged_at: string or null

RFC 3339 timestamp when the work item was acknowledged and assigned to a self-hosted sandbox

  • created_at: string

RFC 3339 timestamp when work was created

  • data: BetaSessionWorkData

The actual work to be performed

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

  • environment_id: string

Environment identifier this work belongs to (e.g., env_...)

  • latest_heartbeat_at: string or null

RFC 3339 timestamp of the most recent heartbeat

  • metadata: map[string]

User-provided metadata key-value pairs associated with this work item

  • secret: string or null

Credential payload used by the environment worker to execute this work item. May be populated when polling for work; null on all other retrieval paths.

  • started_at: string or null

RFC 3339 timestamp when work execution started

  • state: "queued" or "starting" or "active" or 2 more

Current state of the work item

  • "queued"
  • "starting"
  • "active"
  • "stopping"
  • "stopped"
  • stop_requested_at: string or null

RFC 3339 timestamp when stop was requested

  • stopped_at: string or null

RFC 3339 timestamp when work execution stopped

  • next_page: string or null

Opaque cursor for fetching the next page of results

Beta Self Hosted Work Queue Stats

  • BetaSelfHostedWorkQueueStats object

Statistics about the work queue for an environment.

Uses Redis Stream consumer group metrics for O(1) queries.

  • type: "work_queue_stats"

The type of object

default: work_queue_stats

  • depth: number

Number of work items waiting to be picked up (lag from consumer group)

  • oldest_queued_at: string or null

RFC 3339 timestamp of oldest item in the work stream (includes both queued and pending items), null if stream empty

  • pending: number

Number of work items being processed (polled but not acknowledged)

default: 0

  • workers_polling: number or null

Number of workers that have polled for work in the last 30 seconds. Requires worker_id to be sent with poll requests.

Beta Self Hosted Work Stop Request

  • BetaSelfHostedWorkStopRequest object

Request to stop a work item.

  • force: optional boolean

If true, immediately stop work without graceful shutdown

default: false

Beta Self Hosted Work Update Request

  • BetaSelfHostedWorkUpdateRequest object

Request to update work item metadata.

  • metadata: map[string]

Metadata patch. Set a key to a string to upsert it, or to null to delete it. Omit the field to preserve existing metadata.

Beta Session Work Data

  • BetaSessionWorkData object

Work data for session work items.

This resource type is used when work represents a session that needs to be executed in a self-hosted environment.

  • type: "session"

Type of work data

  • id: string

Session identifier (e.g., 'session_...')

On this page
Get Work ItemPath parametersHeadersReturnsExampleResponse (200)Poll for WorkPath parametersQuery parametersHeadersReturnsExampleResponse (200)Acknowledge WorkPath parametersHeadersReturnsExampleResponse (200)Record HeartbeatPath parametersQuery parametersHeadersReturnsExampleResponse (200)Stop WorkPath parametersHeadersBody parametersReturnsExampleResponse (200)List Work ItemsPath parametersQuery parametersHeadersReturnsExampleResponse (200)Update Work ItemPath parametersHeadersBody parametersReturnsExampleResponse (200)Get Queue StatisticsPath parametersHeadersReturnsExampleResponse (200)Domain typesBeta Self Hosted WorkBeta Self Hosted Work Heartbeat ResponseBeta Self Hosted Work List ResponseBeta Self Hosted Work Queue StatsBeta Self Hosted Work Stop RequestBeta Self Hosted Work Update RequestBeta Session Work Data