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)
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)
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-400906 | Missing/invalid input, action, or model-structure data on create/update calls |
404500 | Assorted "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.
