---
title: "Fv Attempt Stopped"
method: POST
path: "/v1/internal/fv-runs/{job_id}/attempts/{attempt_number}/stopped"
---

# Fv Attempt Stopped

`POST /v1/internal/fv-runs/{job_id}/attempts/{attempt_number}/stopped`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/internal/fv-runs/{job_id}/attempts/{attempt_number}/stopped`
- Auth: none declared

Record that an FV attempt's ECS task STOPPED, with its stop code / exit code
and the typed failure family. First stop wins (idempotent).

## Path parameters

- `job_id` string, required
- `attempt_number` integer, required

## Request body

- FvAttemptStoppedRequest
  - `stopCode` string, nullable
  - `containerExitCode` integer, nullable
  - `failureFamily` 'repository' | 'policy' | 'provider_writeback' | 'cancelled' | 'expired' | 'security' | 'runner_resource' | 'capacity' | 'aws_transient' | 'control_plane': Typed cause of an FvAttempt's stop, reported by the task-state reconciler on POST /stopped. The single source of truth for the taxonomy: the /stopped intake validates against it (so a producer that drifts fails loudly with a 422 rather than silently), and the dispatch circuit breaker keys off it.
  - `retryDisposition` string, nullable
  - `ecsTaskArn` string, nullable

## Response `202`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
