Error codes

Error codes

Every API error response includes a numeric errorcode and a free-text errormessage. There are
two distinct families of codes here — check which one applies to what you're seeing.

Connection/authentication errors (404001-404012)

These come from the single shared connection/auth layer (API_Connection) every request passes
through first, and each has exactly one fixed meaning. The canonical, actively-maintained table is
in Synergist API Authentication § Legacy error codes — refer to that table
rather than a copy here, so there's one place to keep it accurate (this page previously had its own
stale, incomplete copy).

Endpoint/business-rule errors (e.g. 404004, 4009xx, 4041xx-4049xx, 404500, 404998, 404999)

Outside the connection layer, a numeric code is reused across many different specific validation
failures
— it's a rough category, not a 1:1 lookup key. The actual "what went wrong" is always in
errormessage, not the code. A few real examples (verified against source, not exhaustive):

Code (illustrative, not exhaustive)Seen with messages like...
404004"table not recognised (...)", "sync not possible for table ..." (sync/synchronize calls)
404100"No token supplied.", "type parameter not passed" (several unrelated areas)
404122"invalid jobphasestatus.", "invalid contact parameter.", "no input parameter passed."
404153"Invalid Activitytype.", "Invalid Billing plan.", "More than one company in query."
400900-400906Missing/invalid input, action, or model-structure data on create/update calls
404500Assorted "record not found / not uniquely identified" conditions, varying by API area

Do not rely on the numeric code alone to determine what went wrong outside the 404001-404012
range — always read errormessage.
There is no single central registry mapping every code to
every message; the examples above were found by searching the actual source, not from an
exhaustive catalogue.

The numeric range for these codes is wider than 404000-404999 — a separate 4009xx family
(400900 and up) also exists, distinct from both the connection-layer codes above and the general
404xxx range.