---
title: "Provider-neutral control plane for hosted ALK harness jobs."
method: POST
path: "/simulate/api/harness-jobs/preflight/"
tags: ["simulate"]
---

# Provider-neutral control plane for hosted ALK harness jobs.

`POST /simulate/api/harness-jobs/preflight/`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/simulate/api/harness-jobs/preflight/`
- Auth: one of:
  - API key in header `X-Api-Key`
  - API key in header `X-Secret-Key`

Validates the v1.6 request contract and delegates execution to the public backend selected by
``settings.HARNESS_PROVIDER`` (``hosted`` or ``sandbox``). The hosted backend independently
selects its managed sandbox runtime.

## Request body

- HarnessPreflight
  - `schema_version` 'futureagi.harness-job.v1'
  - `run_id` string, uuid
  - `source` HarnessSource
    - `kind` 'github' | 'archive' | 'remote' | 'provider', required
    - `repository` string, nullable
    - `ref` string, nullable
    - `commit_sha` string, nullable
    - `installation_id` string, nullable
    - `archive_artifact_id` string, uuid, nullable
    - `endpoint` string, uri, nullable
    - `visibility` 'public' | 'private'
    - `environment_values` object
  - `agent` HarnessAgent, required
    - `connector` 'livekit' | 'vapi' | 'retell' | 'retell_chat' | 'phone' | 'auto', required
    - `mode` 'connect_only' | 'environment_backed' | 'provider_import', nullable
    - `call_direction` 'inbound' | 'outbound', nullable: inbound: the simulated caller dials the agent. outbound: the agent dials the simulated caller. Voice connectors only.
    - `config` object
    - `secret_refs` object
  - `scenario_count` integer
  - `seed` integer, nullable
  - `runtime` HarnessRuntime
    - `isolation` 'dedicated_vm'
    - `cpu_units` integer
    - `memory_mb` integer
    - `parallelism` integer
    - `concurrency_weight` integer
    - `max_duration_seconds` integer
    - `network_policy` 'live'
  - `security` HarnessSecurity
    - `untrusted_source` boolean
    - `read_only_source` boolean
    - `allow_privileged` boolean
    - `allow_host_runtime_control` boolean
    - `allowed_egress_domains` string[]
  - `retry` HarnessRetry
    - `max_infrastructure_attempts` integer
    - `initial_backoff_seconds` number
    - `max_backoff_seconds` number
    - `retryable_domains` string[]
  - `artifacts` HarnessArtifact, required
    - `level` 'metadata-only' | 'traces' | 'traces-and-recordings' | 'full', required
    - `retention_days` integer
    - `allow_bundle_download` boolean
    - `max_artifact_bytes` integer
  - `platform_run_id` string, nullable
  - `metadata` object
  - `credential_values` object: Target-provider values to verify live; used for this check only.

## Response `200`

OK

- HarnessPreflightResponse
  - `ready_to_submit` boolean, required
  - `state` 'connected' | 'failed', required
  - `checks` HarnessPreflightCheck[], required
    - `id` string, required
    - `label` string, required
    - `status` 'passed' | 'failed' | 'skipped', required
    - `detail` string, required
    - `missing` string[], required
    - `fix` string, nullable, required
  - `credentials` HarnessPreflightCredentials, required
    - `scanned_files` integer, required
    - `detected_connectors` string[], required
    - `requirements` object[], required
    - `credential_choices` object[], required
    - `probe` object[], required
  - `parallelism_enabled` boolean, required
  - `effective_parallelism` integer, required
  - `resource_profile` object, nullable, required
  - `snapshot` object, required

## Other responses

- `default`: Default error response

---

[API](https://skmtc.dev/futureagi/apis/future-agi-management-api.md) · [All operations](https://skmtc.dev/futureagi/apis/future-agi-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/futureagi/apis/future-agi-management-api/revisions/c8684118e142?raw)
