---
title: "Run frame OCR (deprecated)"
method: POST
path: "/frames/{frame_id}/ocr"
tags: ["Frames"]
---

# Run frame OCR (deprecated)

`POST /frames/{frame_id}/ocr`

Run on-demand OCR on a frame that has no stored bounding boxes.
Loads the snapshot JPEG, runs Apple Vision OCR, stores the result,
and returns the text positions. Subsequent GET requests will hit the
cached DB row. If OCR data already exists, returns it without re-running.

## Path parameters

- `frame_id` integer, required

## Response `200`

OK

- FrameTextResponse — Response type for frame OCR data endpoint
  - `frame_id` integer, required
  - `text_positions` TextPosition[], required
    - `text` string, required
    - `confidence` number, required
    - `bounds` TextBounds, required
      - `left` number, required
      - `top` number, required
      - `width` number, required
      - `height` number, required

## Changes

> 10 revisions in range; 3 could not be searched.

- **2026-04-09** `0f0f8030c7e2` — 1 info
  - api tag `Frames` added
- **2026-04-08** `1a63468a8d30` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/screenpipe/apis/screenpipe-api/changes/frames/:frame_id/ocr/post.md)

---

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