Create Records

​

Submit a JSON array of records for the key's entity, in the public record notation. The batch is all-or-nothing: one invalid record rejects the whole request, and a batch may hold each record id only once. A 202 means the records were accepted: they show in the app at once, and the next nightly processing run books them and makes them readable through this API, where the platform_object_id filter of the list endpoints finds a record by your own id. Resubmitting a record with the same id replaces it; resubmitting an identical record is safe and is counted as a duplicate. A link must repeat the target's platformType, platformId and platformDataType when the target was posted with them. Amounts must be finite and fit the currency's decimal places. Refused: exchangeRates, drafted vendor bills, and an invoice whose externalTotal, externalSubtotal or issuedDate differs from its total, subtotal or date. A Customer, Vendor, Product or Employee becomes readable through this API once a transaction links to it. Contractor, Settlement, Disbursement, Reimbursement, Discount, CurrencyReevaluation, RecognitionEvent, Fee and Deposit records are stored as submitted but not processed: they do not appear in the app and are not booked. Needs a key issued with a Custom API connection.

Query Parameters

  • External id of the entity to act for, from GET /v1/entities. Required when signed in with OAuth (an organization can hold several entities; ask the user which one if more than one could apply). Optional with an API key, which is scoped to one entity already.

Body

required
application/json

Responses

  • application/json
  • The credential was refused: none sent (CAPI11), an API key that is not valid (CAPI15), or an OAuth sign-in that has expired (CAPI16), was not issued for this API (CAPI17), names an organization T0 does not hold (CAPI18) or a membership that is no longer usable (CAPI19). detail says what to do.

  • The key has no API connection, so it cannot submit records (CAPI72). Submitting needs a key issued alongside an API connection, which owns the account records land in. OAuth access tokens cannot use this endpoint (CAPI74); signed-in users post journal entries with POST /v1/journal-entries.

  • The entity is being rebuilt, or another submission to the same connection is in progress (CAPI36). Nothing was stored; retry shortly.

Request Example for post/v1/records
curl https://api.t0.ai/v1/records \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '[
  {
    "data": {
      "amount": 1,
      "currencyCode": "",
      "customFields": {
        "additionalProperty": "anything"
      },
      "date": "2026-11-11",
      "description": "",
      "endDate": "2026-11-11",
      "exchangeRates": [],
      "startDate": "2026-11-11"
    },
    "id": {
      "dataType": "Adjustment",
      "externalId": "",
      "platformDataType": "",
      "platformId": "",
      "platformType": ""
    },
    "links": []
  }
]'
{
  "received": 1,
  "inserted": 1,
  "duplicates": 1
}