Errors

View as Markdown

Errors come back as JSON with a code and a message that says what to fix.

{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "Send start and end (ISO 8601, e.g. 2026-10-05T09:00:00-04:00)."
  }
}
StatusCodeWhen
400INVALID_REQUESTThe body or a parameter is missing or wrong. The message says what to fix.
401UNAUTHORIZEDNo key, a malformed key, or a revoked key.
403API_OFFAPI keys aren't switched on for the business.
403FORBIDDENThe key may not do this: someone else's time or a master-key-only endpoint with a personal key, approved time, time in a pay run, a holder who left the business, or a master key whose holder is no longer the owner.
409NOTHING_TO_BILLNo next service period or no billable invoice lines remain.
409CONFLICTOnly draft invoices can be changed.
404NOT_FOUNDNo such entry, project or task that the key's holder can see.

Messages are written for people, so it's fine to show them to whoever made the request. Someone else's entry reads as not found to a personal key.