> For the complete documentation index, see [llms.txt](https://docs.perceptis.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.perceptis.ai/perceptis-api-v1/changelog.md).

# Versioning and changes

Versioning and change guidance for Perceptis API v1.

The Perceptis API uses versioned paths. The current generation API is under:

```
/api/v1/
```

Use the versioned paths shown in this documentation for production integrations.

## Non-breaking changes

Perceptis may add optional fields, response metadata, or additional error codes within `v1`. Build clients to ignore unknown fields they do not need.

## Breaking changes

Breaking changes are introduced with a new API version. Check this page when planning upgrades or reviewing integration behavior.

## Changes

### 2026-09 — Edit a PowerPoint file you already have

`POST /api/v1/edit` accepts a `.pptx` and a prompt, and returns an edited deck. It is a multipart request, because the deck is part of it. The job it creates polls and downloads exactly like a deck job from `POST /generate`.

What changes for your integration: nothing. This is a new endpoint; existing calls are unaffected.

See [`POST /api/v1/edit`](https://github.com/Whiteboard-Intelligence/perceptis/tree/main/docs/public/developer/public-api/reference/post-edit.md).

### 2026-08 — Deck jobs may complete with fewer slides than requested

A deck job now completes when at least one slide is produced. Before this change, a deck job failed if any slide failed.

What changes for your integration:

* `status` is `completed` when the deck holds one or more slides. The downloaded `.pptx` contains the slides that were produced.
* `downloads[0].slide_count` is the number of slides in the file. Read the slide count from this field, not from your prompt.
* `status` is `failed` only when no slide was produced. A failed job is not charged.
* You are charged for the slides in the file, and for no others.

This change is additive: no field is added, removed or renamed, and no existing field changes type. A client that reads `slide_count` needs no change.
