---
title: "Changes to Create Ocr"
method: POST
path: "/v1/ocr"
---

# Changes to Create Ocr

`POST /v1/ocr`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 9 of 21 revisions.

- **2026-09-29** `2f7a4a0aac8f`: 1 info
- **2026-09-29** `da70d9cd1957`: 1 breaking
- **2026-09-21** `5fdbd3614b8c`: 2 info
- **2026-08-20** `0db3023472ef`: 21 breaking, 1 warning, 28 info
- **2026-07-11** `0fd1d281f985`: 3 breaking, 2 warning, 32 info
- **2026-03-24** `50ec08f1fdf6`: 2 breaking, 10 info
- **2026-03-10** `ef3add9564c0`: 2 breaking, 4 warning, 2 info
- **2026-03-04** `618db9823ac3`: 2 breaking, 6 info
- **2026-03-04** `46bc88767a37`: 18 breaking, 16 warning, 15 info

## Changes

- **2026-09-29** `2f7a4a0aac8f`: 1 info
  - endpoint added
- **2026-09-29** `da70d9cd1957`: 1 breaking
  - api path removed without deprecation
- **2026-09-21** `5fdbd3614b8c`: 2 info
  - added `#/components/schemas/Usage` to the `usage` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/api__domain__usage__entities__Usage` from the `usage` response property `anyOf` list for the response status `200`
- **2026-08-20** `0db3023472ef`: 21 breaking, 1 warning, 28 info
  - removed `#/components/schemas/ImageURL` from the `document/anyOf[subschema #2: ImageURLChunk]/image_url` request property `anyOf` list
  - the response property `headers` became optional for the status `404`
  - the response property `headers` became optional for the status `422`
  - the response property `headers` became optional for the status `503`
  - the response property `id` became optional for the status `200`
  - the response property `model` became optional for the status `200`
  - the response property `pages/items/dimensions` became optional for the status `200`
  - the response property `pages/items/images/items/bottom_right_x` became optional for the status `200`
  - the response property `pages/items/images/items/bottom_right_y` became optional for the status `200`
  - the response property `pages/items/images/items/top_left_x` became optional for the status `200`
  - the response property `pages/items/images/items/top_left_y` became optional for the status `200`
  - the response property `pages/items/markdown` became optional for the status `200`
  - the response property `usage_info` became optional for the status `200`
  - response property `id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `model` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `pages/items/markdown` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - the `detail` response's property type changed from no type to `string` for status `404`
  - the `detail` response's property type changed from no type to `string` for status `422`
  - the `detail` response's property type changed from no type to `string` for status `503`
  - the `usage_info` response's property type changed from `object` to no type for status `200`
  - removed the required property `usage_info/pages_processed` from the response with the `200` status
  - removed the optional property `usage_info/doc_size_bytes` from the response with the `200` status
  - api operation id `ocr_v1_ocr_post` removed and replaced with `create_ocr_v1_ocr_post`
  - added `#/components/schemas/api__infrastructure__fastapi__schemas__ocr__ImageURL` to the `document/anyOf[subschema #2: ImageURLChunk]/image_url` request property `anyOf` list
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the non-success response with the status `429`
  - added `#/components/schemas/OCRUsage, subschema #2` to the `usage_info` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/api__domain__usage__entities__Usage` to the `usage` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `document_annotation` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/footer` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/header` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/images/items/image_base64` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `document_annotation` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `pages/items/footer` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `pages/items/header` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `pages/items/images/items/image_base64` response property `anyOf` list for the response status `200`
  - …10 more
- **2026-07-11** `0fd1d281f985`: 3 breaking, 2 warning, 32 info
  - added the new required request property `bbox_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema`
  - added the new required request property `document_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema`
  - the `usage_info` response's property type changed from no type to `object` for status `200`
  - removed the request property `bbox_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema_definition`
  - removed the request property `document_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema_definition`
  - added the new optional request property `document_annotation_prompt`
  - added the new optional request property `extract_footer`
  - added the new optional request property `extract_header`
  - added the new optional request property `table_format`
  - added the optional property `pages/items/footer` to the response with the `200` status
  - added the optional property `pages/items/header` to the response with the `200` status
  - added the optional property `pages/items/hyperlinks` to the response with the `200` status
  - added the optional property `pages/items/tables` to the response with the `200` status
  - added the optional property `usage_info/doc_size_bytes` to the response with the `200` status
  - added `#/components/schemas/Nullable_str_, #/components/schemas/Unset` to the `document_annotation` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/Nullable_str_, #/components/schemas/Unset` to the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/Nullable_str_, #/components/schemas/Unset` to the `pages/items/images/items/image_base64` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/OCRUsage, subschema #2` from the `usage_info` response property `anyOf` list for the response status `200`
  - removed `subschema #1` from the `document_annotation` response property `anyOf` list for the response status `200`
  - removed `subschema #1` from the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - removed `subschema #1` from the `pages/items/images/items/image_base64` response property `anyOf` list for the response status `200`
  - the response property `id` became required for the status `200`
  - the response property `model` became required for the status `200`
  - the response property `pages/items/dimensions` became required for the status `200`
  - the response property `pages/items/images/items/bottom_right_x` became required for the status `200`
  - the response property `pages/items/images/items/bottom_right_y` became required for the status `200`
  - the response property `pages/items/images/items/top_left_x` became required for the status `200`
  - the response property `pages/items/images/items/top_left_y` became required for the status `200`
  - the response property `pages/items/markdown` became required for the status `200`
  - the response property `usage_info` became required for the status `200`
  - the `document_annotation` response's property default value `~?~unset~?~sentinel~?~` was added for the status `200`
  - the `image_annotation` response's property default value `~?~unset~?~sentinel~?~` was added for the status `200`
  - the `image_base64` response's property default value `~?~unset~?~sentinel~?~` was added for the status `200`
  - response property `id` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `model` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `pages/items/markdown` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - added the required property `usage_info/pages_processed` to the response with the `200` status
- **2026-03-24** `50ec08f1fdf6`: 2 breaking, 10 info
  - the `usage/anyOf[subschema #1: Usage]/carbon/kWh` response's property type changed from `number` to `object` for status `200`
  - the `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq` response's property type changed from `number` to `object` for status `200`
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/max` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/min` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/max` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/min` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/impacts` to the response with the `200` status
  - the `kWh` response's property default value `0` was removed for the status `200`
  - the `kgCO2eq` response's property default value `0` was removed for the status `200`
  - response property `usage/anyOf[subschema #1: Usage]/carbon` deprecated
  - response property `usage/anyOf[subschema #1: Usage]/carbon/kWh` deprecated
  - response property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq` deprecated
- **2026-03-10** `ef3add9564c0`: 2 breaking, 4 warning, 2 info
  - the `usage/anyOf[subschema #1: Usage]/carbon/kWh` response's property type changed from `object` to `number` for status `200`
  - the `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq` response's property type changed from `object` to `number` for status `200`
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/max` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/min` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/max` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/min` from the response with the `200` status
  - the `kWh` response's property default value `0` was added for the status `200`
  - the `kgCO2eq` response's property default value `0` was added for the status `200`
- **2026-03-04** `618db9823ac3`: 2 breaking, 6 info
  - the `usage/anyOf[subschema #1: Usage]/carbon/kWh` response's property type changed from `number` to `object` for status `200`
  - the `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq` response's property type changed from `number` to `object` for status `200`
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/max` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/min` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/max` to the response with the `200` status
  - added the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/min` to the response with the `200` status
  - the `kWh` response's property default value `0` was removed for the status `200`
  - the `kgCO2eq` response's property default value `0` was removed for the status `200`
- **2026-03-04** `46bc88767a37`: 18 breaking, 16 warning, 15 info
  - added the new required request property `bbox_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema_definition`
  - added the new required request property `document_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema_definition`
  - the response property `id` became optional for the status `200`
  - the response property `model` became optional for the status `200`
  - the response property `pages/items/dimensions` became optional for the status `200`
  - the response property `pages/items/images/items/bottom_right_x` became optional for the status `200`
  - the response property `pages/items/images/items/bottom_right_y` became optional for the status `200`
  - the response property `pages/items/images/items/top_left_x` became optional for the status `200`
  - the response property `pages/items/images/items/top_left_y` became optional for the status `200`
  - the response property `pages/items/markdown` became optional for the status `200`
  - the response property `usage_info` became optional for the status `200`
  - response property `id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `model` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `pages/items/markdown` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - the `usage/anyOf[subschema #1: Usage]/carbon/kWh` response's property type changed from `object` to `number` for status `200`
  - the `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq` response's property type changed from `object` to `number` for status `200`
  - the `usage_info` response's property type changed from `object` to no type for status `200`
  - removed the required property `usage_info/pages_processed` from the response with the `200` status
  - removed the request property `bbox_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema`
  - removed the request property `document_annotation_format/anyOf[subschema #1: ResponseFormat]/json_schema/anyOf[subschema #1: JsonSchema]/schema`
  - removed the request property `document_annotation_prompt`
  - removed the request property `extract_footer`
  - removed the request property `extract_header`
  - removed the request property `table_format`
  - removed the optional property `pages/items/footer` from the response with the `200` status
  - removed the optional property `pages/items/header` from the response with the `200` status
  - removed the optional property `pages/items/hyperlinks` from the response with the `200` status
  - removed the optional property `pages/items/tables` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/max` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kWh/min` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/max` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/carbon/kgCO2eq/min` from the response with the `200` status
  - removed the optional property `usage/anyOf[subschema #1: Usage]/impacts` from the response with the `200` status
  - removed the optional property `usage_info/doc_size_bytes` from the response with the `200` status
  - added `#/components/schemas/OCRUsage, subschema #2` to the `usage_info` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `document_annotation` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - added `subschema #1` to the `pages/items/images/items/image_base64` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `document_annotation` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/Nullable_str_, #/components/schemas/Unset` from the `pages/items/images/items/image_annotation` response property `anyOf` list for the response status `200`
  - …9 more

---

[Operation](https://skmtc.dev/betagouv/apis/opengatellm/docs/v1/ocr/post.md) - [API](https://skmtc.dev/betagouv/apis/opengatellm.md) - [Page](https://skmtc.dev/betagouv/apis/opengatellm/changes/v1/ocr/post)
