---
title: "Read an operation"
method: GET
path: "/operations/{requestId}"
tags: ["Operations"]
---

# Read an operation

`GET /operations/{requestId}`

## Request

- Base URL: `https://app.vulk.dev/api/v1`
- URL: `https://app.vulk.dev/api/v1/operations/{requestId}`
- Auth: HTTP bearer

Scope `projects.read`. The persisted state of one build or instruction: status, VULK's replies or clarification questions, preview and editor links. Reading never starts, retries or charges a generation.

## Response `200`

The operation.

- Operation
  - `requestId` string, uuid, required
  - `projectId` string, nullable
  - `operationStatus` 'running' | 'waiting' | 'done' | 'failed' | 'orphan' | 'null', nullable, required: `running` while VULK works · `waiting` when a question needs your answer · `done` · `failed` · `orphan` when the process ended without a result · null before the operation was registered.
  - `stopStatus` 'running' | 'stopping' | 'stopped' | 'already-delivered', required: `stopping` after a stop request, `stopped` once honoured, `already-delivered` when the work finished first.
  - `pendingProvider` boolean, required: True while an already accepted provider call may still finish and use credits.
  - `decision` 'GENERATE' | 'RESPOND' | 'CLARIFY' | 'ERROR' | 'null', nullable: How VULK answered: GENERATE built, RESPOND answered in words, CLARIFY asked questions, ERROR failed; null while undecided.
  - `startedAt` string, date-time, nullable
  - `finishedAt` string, date-time, nullable
  - `editorUrl` string, uri, nullable
  - `currentProjectPreviewUrl` string, uri, nullable
  - `currentProjectLiveUrl` string, uri, nullable
  - `responses` object[], required: VULK's replies to this instruction, the latest ones, at most 12.
    - `text` string, required
    - `questions` object[]: Present when VULK is waiting for a choice; answer with POST /projects/{id}/messages.
      - `question` string, required
      - `options` string[], required
  - `responsesTruncated` boolean, required: True when replies were left out or cut.

## Other responses

- `401`: No key, a malformed key, or a revoked or expired one (code UNAUTHORIZED).
- `403`: The key lacks the scope the endpoint needs (code FORBIDDEN).
- `404`: No such endpoint, project, operation or file on this account (code NOT_FOUND).
- `429`: Over 60 requests in a minute; wait `retryAfter` seconds (code RATE_LIMITED).

---

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