Export ODT via REST API

Available in Start planBetav2.8.0

The ODT export API converts Tiptap JSON documents into OpenDocument Text (.odt) files, compatible with LibreOffice and OpenOffice.

Review the postman collection

You can also experiment with the Document Conversion API by heading over to our Postman Collection.

Export ODT

POST /v2/convert/export/odt

The /v2/convert/export/odt endpoint converts Tiptap JSON documents into ODT format. Send a POST request with your document as a JSON body to receive a downloadable ODT file.

Example (cURL)

curl --output document.odt -X POST "https://api.tiptap.dev/v2/convert/export/odt" \
    -H "Authorization: Bearer YOUR_TOKEN" \
    -H "X-App-Id: YOUR_APP_ID" \
    -H "Content-Type: application/json" \
    -d '{
      "doc": "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Hello World\"}]}]}"
    }'

Subscription required

This endpoint requires a valid Tiptap subscription. For more details review our pricing page.

Required headers

NameDescription
AuthorizationThe JWT token to authenticate the request. Example: Bearer your-jwt-token
X-App-IdThe Convert App-ID from the Convert settings page: https://cloud.tiptap.dev/v2/cloud/convert
Content-TypeMust be application/json

Body

NameTypeDescriptionDefault
docStringTiptap JSON document as a stringN/A
exportTypestringThe expected export typeblob
styleOverridesObjectStyle overrides{}
pageSizeObjectPage size configurationundefined
pageMarginsObjectPage margins configurationundefined
headersObjectPage header configurationundefined
footersObjectPage footer configurationundefined

Page Size Configuration

The pageSize object allows you to customize the dimensions of your exported ODT document:

PropertyTypeDescriptionDefault
widthstringThe width of the page. Must be a positive number followed by a valid unit (cm, in, pt, pc, mm, px)."21.0cm"
heightstringThe height of the page. Must be a positive number followed by a valid unit (cm, in, pt, pc, mm, px)."29.7cm"

Page Margins Configuration

The pageMargins object allows you to customize the margins of your exported ODT document:

PropertyTypeDescriptionDefault
topstringThe top margin of the page. Can be negative. Must be a number followed by a valid unit (cm, in, pt, pc, mm, px)."1.0cm"
bottomstringThe bottom margin of the page. Can be negative. Must be a number followed by a valid unit (cm, in, pt, pc, mm, px)."1.0cm"
leftstringThe left margin of the page. Must be a positive number followed by a valid unit (cm, in, pt, pc, mm, px)."1.0cm"
rightstringThe right margin of the page. Must be a positive number followed by a valid unit (cm, in, pt, pc, mm, px)."1.0cm"

Headers Configuration

The headers object allows you to customize the headers of your exported ODT document:

PropertyTypeDescription
evenAndOddHeadersbooleanWhether to use different headers for odd and even pages
differentFirstPagebooleanWhether to use a different header on the first page. When true, the first value is used on page one instead of default.
defaultstringThe standard default header on every page, or header on odd pages when evenAndOddHeaders is activated. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.
firststringThe header on the first page. Only used when differentFirstPage is set to true. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.
evenstringThe header on even pages when the evenAndOddHeaders option is activated. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.

Plain text vs. Tiptap JSONContent

Each header value can be either a plain text string (produces a simple unstyled header) or a stringified Tiptap JSONContent object (enables rich formatting such as bold, italic, links, etc.). When passing JSONContent, stringify the object with JSON.stringify() before sending it in the request body.

Footers Configuration

The footers object allows you to customize the footers of your exported ODT document:

PropertyTypeDescription
evenAndOddFootersbooleanWhether to use different footers for odd and even pages
differentFirstPagebooleanWhether to use a different footer on the first page. When true, the first value is used on page one instead of default.
defaultstringThe standard default footer on every page, or footer on odd pages when evenAndOddFooters is activated. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.
firststringThe footer on the first page. Only used when differentFirstPage is set to true. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.
evenstringThe footer on even pages when the evenAndOddFooters option is activated. Accepts a plain text string or stringified Tiptap JSONContent for rich formatting.

Plain text vs. Tiptap JSONContent

Each footer value can be either a plain text string (produces a simple unstyled footer) or a stringified Tiptap JSONContent object (enables rich formatting such as bold, italic, links, etc.). When passing JSONContent, stringify the object with JSON.stringify() before sending it in the request body.

Example with custom page layout

curl --output document.odt -X POST "https://api.tiptap.dev/v2/convert/export/odt" \
    -H "Authorization: Bearer YOUR_TOKEN" \
    -H "X-App-Id: YOUR_APP_ID" \
    -H "Content-Type: application/json" \
    -d '{
      "doc": "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Hello World\"}]}]}",
      "pageSize": {
        "width": "210mm",
        "height": "297mm"
      },
      "pageMargins": {
        "top": "20mm",
        "bottom": "20mm",
        "left": "15mm",
        "right": "15mm"
      }
    }'

Response

On success the API returns the ODT file as a binary download:

  • Status: 200 OK
  • Content-Type: application/vnd.oasis.opendocument.text
  • Content-Disposition: attachment; filename=export-{timestamp}.odt

Error responses

StatusCodeDescription
400NO_DOCUMENT_PROVIDEDNo document was provided in the body
422FAILED_TO_PARSE_DOCX_FILEFailed to parse JSON inputs
422FAILED_TO_EXPORT_ODT_FILEFailed to export intermediate format
422FAILED_TO_CONVERT_DOCX_TO_ODTFailed to convert to ODT