Compliance

compliance.items.create

Add a custom compliance checklist item with title, what to do, why, dueDate, category, optional https citations, an optional in-app link (actionHref, a workspace page path starting with /, /finance, /legal or /people) and an optional owner. Custom items get the same reminders as built-in rules. Requires an idempotencyKey.

POST/api/v1/accounting/compliance.items.create

Permissions

accounting:readaccounting:write

Who can call it

admin, finance

Retries

Idempotency key required

MCP

accounting_compliance_items_create

Fields

  • titlestringRequired

    A short title.

    1–200 characters

  • whatstringRequired

    1–4000 characters

  • whystring

    at most 4000 characters · Default ""

  • dueDatestringRequired

    The date payment is due, as YYYY-MM-DD.

  • categoryenum
    corporate_filingsincome_taxsales_taxpayrollinformation_returnsbookkeepingother

    Default "other"

  • citationsarray of objects

    at most 10 items · Default []

  • actionHrefstring

    at most 500 characters · Matches ^\/(?:(?:accounting|ops|inbox|checklist|calendar|ai|compliance|chief-of-staff|logs|history|developers|settings|finance|legal|people|insights)(\/[A-Za-z0-9_/-]*)?)?(\?[A-Za-z0-9_.=&%:-]*)?$

  • notesstring

    Notes kept with the record.

    at most 4000 characters · Default ""

  • assigneeUserIdstring

    1–200 characters

  • 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/compliance.items.create \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "title": "Synthetic services agreement",
  "what": "example",
  "dueDate": "2026-09-30"
}'
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/compliance.items.create
curl https://app.getoatmilk.com/api/v1/accounting/compliance.items.create \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "title": "Synthetic services agreement",
  "what": "example",
  "dueDate": "2026-09-30"
}'

More in Compliance.