> ## Documentation Index
> Fetch the complete documentation index at: https://docs.secapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v1/artifacts/{artifact_id}/reconcile

> Reconcile one persisted artifact with configured object storage

Reconcile one persisted artifact with configured object storage

<Info>
  Audience: developers repairing or checking the storage state of one persisted artifact.
</Info>

## Coverage and source scope

Checks the saved record against configured R2 storage. Without R2 configuration it reports `local_only`; with R2 it can report an existing object as `synced`, repair a missing stored object as `recovered`, or upload a local record as `uploaded`. Send no request fields.

## Canonical metadata

* `artifactId`
* `status`
* `storageMode`
* `objectKey`
* `requestId`

## Example request

<RequestExample>
  ```bash theme={null}
  curl -X POST -H "x-api-key: $SECAPI_API_KEY" -H "secapi-version: 2026-03-19" -H "content-type: application/json" -d '{}' "https://api.secapi.ai/v1/artifacts/art_example_123/reconcile"
  ```
</RequestExample>

## Example response

<ResponseExample>
  ```json theme={null}
  {
    "object": "artifact_reconciliation",
    "id": "arec_example_123",
    "artifactId": "art_example_123",
    "status": "synced",
    "storageMode": "r2",
    "objectKey": "artifacts/art_example_123/aapl-10-k.md",
    "requestId": "req_2ZK8Q1W9F4M6P7R3"
  }
  ```
</ResponseExample>

## Storage outcomes

Send no fields: omit the body or send `{}`. If R2 is not configured, the result is `local_only`. With R2 configured, `synced` means the recorded object exists, `recovered` means a missing recorded object was uploaded again, and `uploaded` means a local record was uploaded. The result reports storage state; it does not re-derive, validate, or refresh the filing content.

## Errors

Unknown body fields return `400 validation_error`. A missing, inaccessible, or failed reconciliation returns `404 artifact_reconcile_failed`.

## Give this prompt to your agent

<Prompt>
  Use SEC API POST /v1/artifacts/{artifact_id}/reconcile to reconcile one persisted artifact with configured object storage. Preserve `artifactId`, `status`, `storageMode`, `objectKey`, `requestId` in the output. Return a concise markdown summary plus the exact structured payload fields that a downstream engineer or agent should keep using this result.
</Prompt>

## Failure posture

* do not represent storage reconciliation as source-data validation
* preserve requestId and objectKey with a reconciliation report
* re-fetch the manifest or download only after recording the returned storage state
