---
title: "Pay for one local eval iteration"
method: POST
path: "/projects/{projectId}/eval-ingest/pay-iteration"
tags: ["Eval runs"]
---

# Pay for one local eval iteration

`POST /projects/{projectId}/eval-ingest/pay-iteration`

## Request

- Base URL: `https://app.mcpjam.com/api/v1`
- URL: `https://app.mcpjam.com/api/v1/projects/{projectId}/eval-ingest/pay-iteration`
- Auth: HTTP bearer

Collect the declared prompt fee and reserve one iteration atomically before execution. Retries with the same identity reuse the receipt; changed requests conflict. Uploads claim the payment without charging again.

## Path parameters

- `projectId` string, required

## Request body

- object
  - `runStartId` string, uuid, required
  - `iterationKey` string, uuid, required
  - `caseId` string, required
  - `billableSteps` integer, required

## Response `200`

Iteration payment receipt with paymentId, runStartId, iterationKey and billableSteps.

## Other responses

- `400`: Invalid request.
- `401`: Authentication required.
- `403`: Access or payment refused.
- `404`: Owned run start not found.
- `409`: Conflicting iteration payment.
- `413`: Request exceeds 8 KiB.
- `429`: Organization limit reached.
- `503`: Billing unavailable.

## Changes

- **2026-10-19** `64bfc9f3d018`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/mcpjam/apis/mcpjam-api/changes/projects/:projectId/eval-ingest/pay-iteration/post.md)

---

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