Skip to main content
TeamBuilder uses conventional HTTP status codes: 2xx for success, 4xx for a problem with the request, 5xx for a problem on our side. Every error response has the same body:

Error codes

Several validation problems in one request are reported together in message, separated by ; .
New codes may be added within /v1. Treat an unknown code by its HTTP status: an unknown 4xx is a client error, an unknown 5xx a server error.

Roster sync row errors

PUT /v1/employees/sync reports problems with individual rows inside a 200 response, in its errors and warnings arrays, while the valid rows still apply. Those row codes (duplicate_external_id, external_id_mismatch, unknown_department and others) are listed in the roster sync guide.

Retrying safely

  • Retry 429, 409 (after Retry-After), 500 and network errors, with exponential backoff and jitter, for example 1, 2, 4 and 8 seconds. Give up after a few attempts.
  • Do not retry other 4xx responses unchanged: they fail the same way every time.
  • All read endpoints and the roster sync are idempotent, so a retry after a timeout never duplicates anything.

Contacting support

Email contact@teambuilder.ge with:
  • the request_id,
  • the endpoint and the approximate time (with time zone),
  • what you expected and what happened.
The request ID lets us find the exact request in our logs. Never include your API key: we do not need it, and anyone who sees it could use it.