---
title: "Ingérer un événement d'exécution Codex externe"
method: POST
path: "/api/v1/runs/ingest/external-execution"
tags: ["AI Workforce", "Runs externes"]
---

# Ingérer un événement d'exécution Codex externe

`POST /api/v1/runs/ingest/external-execution`

## Request

- Base URL: `https://arcadeops.leadalpes.fr`
- URL: `https://arcadeops.leadalpes.fr/api/v1/runs/ingest/external-execution`
- Auth: HTTP bearer

Accepte un événement du protocole d'exécution externe avec un grant Bearer signé et une Idempotency-Key. Le grant borne l'organisation, la Mission, l'AgentRun, l'Agent, les scopes, les outils, le budget et le dépôt autorisés.

## Headers

- `Idempotency-Key` string, required

## Request body

- union
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'session.started', required
    - `payload` object, required
      - `providerSessionId` string, nullable
      - `summary` string, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'session.heartbeat', required
    - `payload` object, required
      - `summary` string, required
      - `progressPercent` number
      - `usage` object
        - `status` 'UNKNOWN', required
        - `inputTokens` integer, nullable, required
        - `outputTokens` integer, nullable, required
        - `costMicros` string, nullable, required
        - `source` string, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'decision.requested', required
    - `payload` object, required
      - `request` string, required
      - `context` string, required
      - `risk` 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL', required
      - `consequenceOfRefusal` string, required
      - `toolName` string, required
      - `arguments` object, required
      - `expiresAt` string, date-time, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'artifact.produced', required
    - `payload` object, required
      - `artifactType` 'FILE' | 'CODE' | 'COMMIT' | 'PULL_REQUEST' | 'REPORT' | 'URL' | 'DATA' | 'MESSAGE' | 'ARTIFACT' | 'OTHER', required
      - `name` string, required
      - `mimeType` string, nullable, required
      - `sizeBytes` integer, nullable, required
      - `sha256` string, required
      - `pointer` union, required
        - object
          - `kind` 'REPOSITORY_PATH', required
          - `value` string, required
        - object
          - `kind` 'COMMIT', required
          - `value` string, required
        - object
          - `kind` 'STORAGE_KEY', required
          - `provider` string, required
          - `value` string, required
        - object
          - `kind` 'HTTPS_URL', required
          - `value` string, uri, required
      - `summary` string, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'tests.completed', required
    - `payload` object, required
      - `command` string, required
      - `status` 'PASSED' | 'FAILED', required
      - `exitCode` integer, required
      - `summary` string, required
      - `durationMs` integer, required
      - `total` integer, nullable, required
      - `passed` integer, nullable, required
      - `failed` integer, nullable, required
      - `skipped` integer, nullable, required
      - `evidence` object[], required
        - `name` string, required
        - `sha256` string, required
        - `pointer` union, required
          - object
            - `kind` 'REPOSITORY_PATH', required
            - `value` string, required
          - object
            - `kind` 'COMMIT', required
            - `value` string, required
          - object
            - `kind` 'STORAGE_KEY', required
            - `provider` string, required
            - `value` string, required
          - object
            - `kind` 'HTTPS_URL', required
            - `value` string, uri, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'run.completed', required
    - `payload` object, required
      - `summary` string, required
      - `result` string, required
      - `deliverableEventIds` string[], required
      - `evidenceEventIds` string[], required
      - `usage` union, required
        - object
          - `status` 'UNKNOWN', required
          - `inputTokens` integer, nullable, required
          - `outputTokens` integer, nullable, required
          - `costMicros` string, nullable, required
          - `source` string, required
        - object
          - `status` 'PROVIDER_RECEIPT', required
          - `receipt` string, required
          - `source` string, required
  - object
    - `schemaVersion` 'arcadeops.external-execution.v1', required
    - `eventId` string, required
    - `externalExecutionId` string, required
    - `sequence` integer, required
    - `occurredAt` string, date-time, required
    - `type` 'run.failed', required
    - `payload` object, required
      - `errorCode` string, required
      - `message` string, required
      - `retryable` boolean, required
      - `usage` object, required
        - `status` 'UNKNOWN', required
        - `inputTokens` integer, nullable, required
        - `outputTokens` integer, nullable, required
        - `costMicros` string, nullable, required
        - `source` string, required

## Response `200`

Événement accepté ou rejoué sans répéter son effet

- ExternalExecutionEventIngestResponse
  - `eventId` string, required
  - `externalExecutionId` string, required
  - `replayed` boolean, required
  - `runStatus` 'PENDING' | 'RUNNING' | 'AWAITING_APPROVAL' | 'COMPLETED' | 'FAILED' | 'CANCELLED', required
  - `approval` object, nullable, required
    - `id` string, required
    - `status` 'PENDING' | 'APPROVED' | 'REJECTED' | 'EXPIRED' | 'CANCELLED', required
  - `resumed` boolean, nullable
  - `releaseDecision` 'READY' | 'BLOCKED' | 'NEEDS_REVIEW' | 'REJECTED', nullable
  - `evidencePackId` string, nullable
  - `certificateId` string, nullable

## Other responses

- `400`: Événement ou Idempotency-Key invalide
- `401`: Grant Bearer absent, invalide ou expiré
- `403`: Grant révoqué, scope insuffisant ou liaison refusée
- `409`: Rejeu divergent, séquence ou état d'exécution en conflit
- `413`: Corps supérieur à 1 Mo
- `415`: Content-Type application/json requis
- `429`: Limite de requêtes atteinte
- `500`: Erreur interne d'ingestion

---

[API](https://skmtc.dev/leadalpes/apis/arcadeops-api.md) · [All operations](https://skmtc.dev/leadalpes/apis/arcadeops-api/llms.txt) · [OpenAPI document](https://skmtc.dev/leadalpes/apis/arcadeops-api/revisions/f10422ec7412?raw)
