---
search:
  tags:
    - Mutations
    - GET
seo:
  description: >-
    Reports how a Mutation ended, or that it has not ended. Reference for the
    GET /mutations/{id} endpoint in the AdCrunch API.
sidebar:
  label: Read a mutation
  badge: GET
title: Read a mutation
type: openapi-operation
---
Reports how a Mutation ended, or that it has not ended.

`running` means the change has not finished. Poll again.

`complete` means the change finished, and `result` says how. `result.ok` of `true` carries what the provider gave back: a create carries the new object id, a copy carries the id of the copy and the `budget` that the copy carries, and every other action carries `success`. `result.ok` of `false` is a provider refusal, with a stable `error` code and a sentence. A refusal is `complete`, not `errored`.

`errored` means the Mutation itself broke down. AdCrunch cannot say whether the provider applied the change, so read the object at the provider before you send the action again.

`priorValue` is present for a change to an object that exists, in each status. It holds the values that the change replaced, read from the provider just before the change, in the field names and units of the action: `{"dailyBudget": 800}` for a budget, `{"status": "ACTIVE"}` for a status. To undo the change, send the same kind again with these values. A create and a copy have none.

A Mutation belongs to one organization. An id from another organization and an id that never existed both answer `404`, so a caller cannot learn which of the two it sent.

This needs `mutation:write`, not `mutation:read`. Polling is the second half of the write that started the Mutation, and the caller polling is the caller that started it. `mutation:read` reads the organization history through `GET /mutations`.

`GET /mutations/{id}`
