Inbox and uploads

intake.inline

Add any file Oatmilk should file in one call, for clients that can't upload to a link: filename, mimeType, contentBase64 (the file's bytes in base64, at most 2 MB), idempotencyKey and optional presetKind. Oatmilk checks the bytes, stores them privately and completes the upload, as intake.prepare, the upload and intake.complete do; a file already added returns duplicate: true. Then call intake.classify and intake.process. Retrying with the same key and file is safe. Contributors add receipts only. Larger files use intake.prepare.

POST/api/v1/accounting/intake.inline

Permissions

accounting:readaccounting:write

Who can call it

admin, finance, contributor

Retries

Idempotency key required

MCP

accounting_intake_inline

Fields

  • filenamestringRequired

    The file's name, including its extension.

    1–255 characters

  • mimeTypeenumRequired

    The file's type, such as image/jpeg or application/pdf.

    application/pdfimage/jpegimage/pngimage/webpimage/heicimage/heifmessage/rfc822text/csvtext/plaintext/markdownapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • contentBase64stringRequired

    The file's exact bytes, encoded as base64.

    4–2796204 characters

  • presetKindenum
    receiptvendor_billissued_invoicebank_statementcontractor_agreementtax_documentcompany_documentother
  • idempotencyKeystringRequired

    Any unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.

    8–200 characters

Example

curl https://app.getoatmilk.com/api/v1/accounting/intake.inline \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "filename": "receipt.pdf",
  "mimeType": "application/pdf",
  "contentBase64": "SGVsbG8sIE9hdG1pbGsh"
}'
Response
{
  "data": { … }
}

Try it

Try it

Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.

POST/api/v1/accounting/intake.inline
curl https://app.getoatmilk.com/api/v1/accounting/intake.inline \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "filename": "receipt.pdf",
  "mimeType": "application/pdf",
  "contentBase64": "SGVsbG8sIE9hdG1pbGsh"
}'

More in Inbox and uploads.