Skip to Content
Teamio

FAQ

Where do I get a Client ID and Client Secret?

Generate them in the Teamio application under Settings → Integrations → Candidate Import. There are separate credentials for the Sandbox (testing) and Production (live) environments.

The Client Secret is shown only once immediately after generation. Store it securely — it cannot be retrieved again. If you lose it, you can generate a new one, which will invalidate the old secret.

What attachment types are supported?

Use the following values in the type field of each attachment object:

  • CV — curriculum vitae
  • MOTIVATION_LETTER — cover letter or motivation letter
  • OTHER — any other document

What is the maximum attachment size?

Each individual attachment file (and each GDPR document) must not exceed 10 MB. This limit applies to the base64-decoded file size.

Can I import the same candidate twice?

Yes, but each import will create a separate candidate record in Teamio. There is no deduplication based on name or email — the same person can be imported multiple times if submitted through the API.

How do I find the recruitment ID?

The recruitment ID corresponds to the internal Teamio recruitment record. It can be obtained from the Teamio application or via the Teamio API. Contact your Teamio administrator if you are unsure which ID to use.

How quickly does the import complete?

Processing is asynchronous and typically completes within a few seconds. Poll the status endpoint (GET /api/v1/candidate-reactions/{requestUuid}) with a short delay (e.g. every 2–5 seconds) until the status changes from PROCESSING to COMPLETED or FAILED.

Is there a sandbox / test environment?

Yes. Use POST /api/v1/candidate-reactions/test with your Sandbox credentials to validate a request payload without saving any data. A 204 No Content response confirms the payload is valid.

What is the rate limit?

The API enforces a per-company rate limit. If you exceed it, you will receive a 429 Too Many Requests response. Implement exponential backoff and retry logic in your integration to handle this gracefully.

Last updated on