§ Office API
Office API. 1 endpoint, $0.001 a call.
One endpoint, and one decision inside it: what you want the document to become. Legacy formats onto modern ones, modern ones into ODF, and documents into something a retrieval index can read. Runs on LibreOffice, and a conversion that will not work is refused before a parser sees the file.
curl -sS --fail-with-body \
-o quarterly.csv \
-H "Authorization: Bearer $OHMYWRAP_KEY" \
-F "file=@quarterly.xlsx" \
-F 'options={"to":"csv"}' \
https://api.ohmywrap.com/office/convertA conversion cannot be priced from its input.
A 2 MB document may be five pages or five hundred, and the only way to find out is to convert it — which is why everyone else bills this by the page, the minute, or the megabyte. We bill the call. Your five-hundred-page migration costs a tenth of a cent, the same as the memo.
- Bytes per file
- 50 MB
- Bytes per request
- 60 MB
- Conversion timeout
- 60s
- Concurrent conversions
- 2
- Input formats
- 6
- Target formats
- 9
- Supported pairs
- 17
- Price per call
- $0.001
Anything over a limit is refused immediately, and refusals are not billed.
§ The inventory
The one office endpoint.
Each is a POST with your file attached, each returns the result on the same connection, and each costs $0.001. Follow any of them for parameters, limits, and a request you can paste.
The input list is an allowlist, not a description of the engine. LibreOffice also opens Visio, Publisher and WordPerfect, and each of those is another parser aimed at a document a stranger uploaded, for demand nobody has expressed. Your extension is your declaration and the container is what gets checked: a file named .docx must begin like a zip, a .doc like an OLE2 compound file, an .rtf with a brace and rtf. A mismatch is refused and never reaches a filter.
Your first office call takes one line of curl.
No plan to choose. No credits to model. No storage to configure.
10,000 calls for $10. No subscription, no expiry.
§ The matrix
Seventeen pairs, not a cross product.
Every pair below either works or is refused with a message naming what your inputcan become. Nothing here guesses.
| From | To | Why |
|---|---|---|
| doc | docx odt | Legacy migration |
| rtf | docx odt | Legacy migration |
| xls | xlsx ods csv | Legacy migration, data extraction |
| ppt | pptx odp | Legacy migration |
| docx | odt txt html | ODF compliance, text for retrieval |
| xlsx | csv ods | The one people actually ask for |
odt, ods, odp, pptx, csv, txt and html are targets only. Sending one as input gets a refusal that says so, rather than one claiming the format is unknown.