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

# Run creative conformance

> Run AdCP's no-spend creative storyboards for an Agent's attested production endpoint

`POST /api/v2/agents/{agentId}/creative-conformance`

Runs the AdCP creative storyboards selected from the Agent's own
`get_adcp_capabilities` response. The test calls only the Agent's attested
production HTTPS endpoint and does not create a creative or spend money.

Only a directly authenticated registration administrator for the owning
organization can start a run. The Agent must be a claimed `CREATIVE` Agent with
an attested production endpoint. Apostra allows one run at a time for an Agent
and accepts another run five minutes after recorded evidence. The endpoint's
own timeout or a malformed capabilities response can stop a run before it
records evidence.

The runner calls only a public HTTPS endpoint that passes Apostra's outbound
endpoint guard. Each storyboard step has a 10-second timeout, the whole run has
a 90-second timeout, and each response is limited to 1 MB.

## Request

```bash theme={null}
curl -X POST "https://api.apostra.com/api/v2/agents/20000000-0000-4000-8000-000000000001/creative-conformance" \
  -H "Authorization: Bearer $INTERACTIVE_USER_ACCESS_TOKEN"
```

## Parameters

| Param | Type | Required | Notes |
| - | - | - | - |
| `agentId` | UUID | Yes | The owned Creative Agent identifier. |

## Response

```json theme={null}
{
  "runId": "5bc435fe-9faa-4ad1-9919-4fcb1ae0e9e8",
  "endpoint": "https://creative.example.com/mcp",
  "steps": [
    {
      "id": "creative/lifecycle/canonical-formats",
      "title": "Canonical supported formats",
      "status": "PASSED",
      "error": null
    },
    {
      "id": "creative/lifecycle/asset-type-filtering",
      "title": "Asset type filtering",
      "status": "FAILED",
      "error": "Agent returned INVALID_ARGUMENT"
    }
  ]
}
```

Each step is `PASSED`, `FAILED`, or `SKIPPED`. Apostra stores recorded results
as evidence for the production revision that was tested. Read the Agent again
with `GET /api/v2/agents/{agentId}` to receive that revision's latest result in
`creativeConformance`. A result is conformance evidence, not creative-agent
certification; creative certification is not available yet. Passed evidence
expires after seven days; failed evidence remains available. Deploying a new
production revision hides the prior revision's result until that revision is
tested.

## Errors

* `400 VALIDATION_ERROR` - the Agent has no attested production endpoint, does
  not declare the creative protocol, the endpoint is unsafe, or the runner did
  not execute an assertion.
* `403 ACCESS_DENIED` - the caller is not a directly authenticated registration
  administrator for the owning organization.
* `404 NOT_FOUND` - the Agent is not a claimed Creative Agent owned by the
  organization.
* `409 CONFLICT` - a run is already in progress or the five-minute rate limit
  has not elapsed.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Agent tasks" href="/v2/storefront/agents/tasks" icon="list-check">
    All agent operations
  </Card>

  <Card title="Storefront agents" href="/v2/storefront/agents/overview" icon="robot">
    Agent model and page guidance
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.