---
title: "Store session cost record"
method: POST
path: "/api/session-costs"
tags: ["Session Data"]
---

# Store session cost record

`POST /api/session-costs`

## Request body

- object
  - `sessionId` string, required
  - `agentId` string, required
  - `totalCostUsd` number, required
  - `taskId` string
  - `inputTokens` integer
  - `outputTokens` integer
  - `cacheReadTokens` integer
  - `cacheWriteTokens` integer, nullable
  - `cacheWrite5mTokens` integer, nullable
  - `cacheWrite1hTokens` integer, nullable
  - `reasoningOutputTokens` integer
  - `thinkingTokens` integer
  - `durationMs` integer
  - `numTurns` integer, nullable
  - `model` string
  - `models` object[]
    - `model` string, required
    - `inputTokens` integer, required
    - `outputTokens` integer, required
    - `cacheReadTokens` integer, required
    - `cacheWriteTokens` integer, required
    - `webSearchRequests` integer, nullable
    - `harnessCostUsd` number, nullable
  - `isError` boolean
  - `provider` 'claude' | 'claude-managed' | 'codex' | 'pi' | 'opencode' | 'devin' | 'gemini' | 'acp'
  - `createdAt` integer

## Response `201`

Cost record stored

- object
  - `success` true, required
  - `cost` SessionCost, required
    - `id` string, uuid, required
    - `sessionId` string, required
    - `taskId` string, uuid
    - `agentId` string, required
    - `totalCostUsd` number, required
    - `inputTokens` integer
    - `outputTokens` integer
    - `cacheReadTokens` integer
    - `cacheWriteTokens` integer
    - `reasoningOutputTokens` integer
    - `thinkingTokens` integer
    - `durationMs` integer, required
    - `numTurns` integer, nullable, required
    - `model` string, required
    - `isError` boolean
    - `costSource` 'harness' | 'pricing-table' | 'unpriced'
    - `harnessCostUsd` number, nullable
    - `cacheWrite5mTokens` integer, nullable
    - `cacheWrite1hTokens` integer, nullable
    - `modelBreakdown` SessionCostModelBreakdown[], nullable
      - `model` string, required
      - `inputTokens` integer, required
      - `outputTokens` integer, required
      - `cacheReadTokens` integer, required
      - `cacheWriteTokens` integer, required
      - `webSearchRequests` integer, nullable
      - `costUsd` number, nullable
      - `harnessCostUsd` number, nullable
    - `createdAt` string, date-time, required

## Other responses

- `400` — Validation error

## Changes

- **2026-09-03** `0f5503f5cd28` — 1 info
  - added the new `acp` enum value to the request property `provider`
- **2026-08-07** `06cac6a7c5bc` — 2 info
  - added the media type `application/json` for the response with the status `201`
  - added the media type `application/json` for the response with the status `400`
- **2026-08-06** `89ca53f117ce` — 4 warning, 3 info
  - the `cacheReadTokens` request property's min was set to `0.00`
  - the `cacheWriteTokens` request property's min was set to `0.00`
  - the `inputTokens` request property's min was set to `0.00`
  - the `outputTokens` request property's min was set to `0.00`
  - …3 more

[Change history](https://skmtc.dev/desplega-ai/apis/agent-swarm-api/changes/api/session-costs/post.md)

---

[API](https://skmtc.dev/desplega-ai/apis/agent-swarm-api.md) · [All operations](https://skmtc.dev/desplega-ai/apis/agent-swarm-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/desplega-ai/agent-swarm-api/revisions/e0acd2155cad/schema)
