---
title: "Get Edit"
method: GET
path: "/v1/edit/{edit_id}"
---

# Get Edit

`GET /v1/edit/{edit_id}`

## Request

- Base URL: `https://api.versionstory.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.versionstory.com/v1/edit/{edit_id}`
- Auth: HTTP bearer

Wait for an edit that POST /v1/edit reported as processing, and return its download links and version.
Pass the edit_id POST /v1/edit returned. Calling it again after a processing answer resumes the wait.

## Path parameters

- `edit_id` string, required: The edit_id POST /v1/edit returned.

## Query parameters

- `format` string[], nullable: The formats of both files, files.clean and files.comparison: docx (default), pdf, md, json, html; repeatable or comma-separated, each as GET /v1/files/{file_id} serves it. md and json are a file's content listing, which the next edit copies its locators from.
- `inline` boolean: true adds content_base64, the file's bytes, to each ready download in files, so the client needs no second request to the download url.

## Headers

- `X-Customer-Id` string, nullable: Id of one of your customers (created in the developer dashboard) to attribute this request's credit usage to. Billing and limits stay organization-wide.

## Response `200`

Successful Response

- EditStatusResponse
  - `edit_id` string, required
  - `status` 'processing' | 'ready' | 'failed', required: The edit's status; each file's status is that file's.
  - `files` Files, required: A document's files, as an edit and a version carry them: its clean document and its redline.
    - `clean` FileResource, required: A file: GET /v1/files/{file_id} answers with it, and every response that carries a document embeds it. It never carries version fields: a version holds its file.
      - `file_id` string, required
      - `file_name` string, required
      - `status` 'processing' | 'ready' | 'failed', required: The state of the formats this request asked for: processing while one is still being produced (poll again after Retry-After), ready when every one is in downloads, failed when the document cannot be used (error) or a requested format will never be produced.
      - `downloads` FormatDownload[], nullable: One per requested format that is ready.
        - `format` string, required
        - `url` string, required: Signed; it expires at expires_at.
        - `file_name` string, required
        - `expires_at` string, required: ISO 8601 in UTC, to the second: 2026-10-21T18:22:31Z.
        - `metadata_report` MetadataReport: What a clean found in one download and did to each kind of hidden data.
          - `format` string, required: docx, xlsx, pptx, pdf or zip.
          - `preset` string, required: standard or strict.
          - `items` MetadataReportItem[], required
            - `type` string, required: The kind of hidden data, such as author, tracked_changes or hidden_text.
            - `category` string, required: properties, review, hidden, automation, package or visible.
            - `count` integer, required: How many were found.
            - `action` string, required: What was done: remove, reset, accept, reject, anonymize, convert, unlink, apply, flatten or clean; keep or report when it was left in place.
            - `examples` string[]: A few of the values found, when they are names.
          - `warnings` MetadataReportWarning[], required
            - `type` string, required: The kind of hidden data the warning is about.
            - `message` string, required: What the reader should know before sending the document.
          - `files` integer, nullable: For a zip, how many documents inside it were cleaned.
        - `content_base64` string, nullable: Only in an edit's or a creation's files, with inline=true: the file's bytes, base64-encoded.
      - `pending_formats` string[], nullable: Requested formats still being produced.
      - `failed_formats` string[], nullable: Requested formats that will never be produced.
      - `error` ComparisonErrorDescriptor
        - `code` string, required
        - `upstream_code` string, nullable
    - `comparison` FileResource: A file: GET /v1/files/{file_id} answers with it, and every response that carries a document embeds it. It never carries version fields: a version holds its file.
      - `file_id` string, required
      - `file_name` string, required
      - `status` 'processing' | 'ready' | 'failed', required: The state of the formats this request asked for: processing while one is still being produced (poll again after Retry-After), ready when every one is in downloads, failed when the document cannot be used (error) or a requested format will never be produced.
      - `downloads` FormatDownload[], nullable: One per requested format that is ready.
        - `format` string, required
        - `url` string, required: Signed; it expires at expires_at.
        - `file_name` string, required
        - `expires_at` string, required: ISO 8601 in UTC, to the second: 2026-10-21T18:22:31Z.
        - `metadata_report` MetadataReport: What a clean found in one download and did to each kind of hidden data.
          - `format` string, required: docx, xlsx, pptx, pdf or zip.
          - `preset` string, required: standard or strict.
          - `items` MetadataReportItem[], required
            - `type` string, required: The kind of hidden data, such as author, tracked_changes or hidden_text.
            - `category` string, required: properties, review, hidden, automation, package or visible.
            - `count` integer, required: How many were found.
            - `action` string, required: What was done: remove, reset, accept, reject, anonymize, convert, unlink, apply, flatten or clean; keep or report when it was left in place.
            - `examples` string[]: A few of the values found, when they are names.
          - `warnings` MetadataReportWarning[], required
            - `type` string, required: The kind of hidden data the warning is about.
            - `message` string, required: What the reader should know before sending the document.
          - `files` integer, nullable: For a zip, how many documents inside it were cleaned.
        - `content_base64` string, nullable: Only in an edit's or a creation's files, with inline=true: the file's bytes, base64-encoded.
      - `pending_formats` string[], nullable: Requested formats still being produced.
      - `failed_formats` string[], nullable: Requested formats that will never be produced.
      - `error` ComparisonErrorDescriptor
        - `code` string, required
        - `upstream_code` string, nullable
  - `version` VersionReference: A version a response points at: a parent, a Document's latest version, an edit's version. Sent back as it is, it names the version in a request (VersionLocator reads its version_id).
    - `document_id` string, required: The Document the version belongs to.
    - `version_id` string, required: The version's id.
    - `index` integer, required: The version's position among its Document's versions in the order they were made, counted from 0: the first version, v1, is index 0. It shows the order and names nothing: deleting a version moves the ones after it down, so a request names a version by its version_id.
    - `label` string, required: The app's label for the version, such as v2, or v2(a) for one of competing drafts, which the user names it by. It comes from the version graph, so a sibling added later can relabel it.
  - `app_url` string, nullable: Opens the version the edit is kept as at its redline in the Version Story app. Present only with version.
  - `carried_versions` VersionReference[], nullable: For an amend: every version after the amended one, which took the change too.
    - `document_id` string, required: The Document the version belongs to.
    - `version_id` string, required: The version's id.
    - `index` integer, required: The version's position among its Document's versions in the order they were made, counted from 0: the first version, v1, is index 0. It shows the order and names nothing: deleting a version moves the ones after it down, so a request names a version by its version_id.
    - `label` string, required: The app's label for the version, such as v2, or v2(a) for one of competing drafts, which the user names it by. It comes from the version graph, so a sibling added later can relabel it.
  - `error` EditErrorDescriptor
    - `code` string, required
    - `upstream_code` string, nullable
    - `message` string, nullable
  - `message` string, nullable

## Other responses

- `400`: The request is invalid: INVALID_REQUEST when a parameter or the body fails validation, otherwise the code of the operation's own refusal.

---

[API](https://skmtc.dev/versionstory/apis/version-story-public-api.md) - [All operations](https://skmtc.dev/versionstory/apis/version-story-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/versionstory/apis/version-story-public-api/revisions/994ce15faf32?raw)
