canonical: https://jentic.com/apis/chameleoni.com/chameleoni

# Chameleon-i API

Jentic publishes the only available OpenAPI specification for Chameleon-i API, keeping it validated and agent-ready. Chameleon-i is a recruitment CRM and applicant-tracking system, and its REST API exposes the core entities - companies, clients, candidates, requirements, contracts, activities, baskets, and user records - with full CRUD plus entity search, phone-number lookup, and combined note creation. Recruiters use it to keep external sourcing tools, job boards, and reporting systems in sync with Chameleon-i without re-keying data.

## For AI agents

Manage candidates, clients, companies, job requirements, activities, and baskets in the Chameleon-i recruitment CRM, including shortlist, search, and combined-note creation.

## Scope

Does not handle payroll, time-tracking, background checks, or job-board posting - use for Chameleon-i CRM and ATS record management only.

## Capabilities

- Create, read, update, and delete candidate records and pull a basic or full profile
- Manage company and client records and look up enumeration values for each entity
- Create and update job requirements and shortlist candidates against them
- Search any supported entity type with structured filters
- List, create, and modify candidate or client baskets used for outreach campaigns
- Find a candidate or contact by phone number and read activity details
- Create combined activity-and-note records and read previously deleted entities

## Use cases

### Job Board Inbound Sync

Keep Chameleon-i in step with applications submitted from job boards or career sites by creating or updating candidate records as each application arrives. POST /candidate/add creates the record, POST /candidate/update/{candidateID} keeps later submissions in sync, and POST /requirement/shortlist links the candidate to the role they applied for. Recruiters then work the candidate inside Chameleon-i without re-keying data from the careers site.

Example prompt: Call POST /candidate/add for each new application, then POST /requirement/shortlist with the candidate id and the requirement id

### Inbound Call Resolution

When a candidate or client calls in, resolve the caller's record before the recruiter answers. POST /miscellaneous/query_entity_by_phone returns the matching candidate, client, or company so the screen pop can show name, requirement context, and recent activity. Used by recruitment teams running softphone integrations on top of Chameleon-i.

Example prompt: Call POST /miscellaneous/query_entity_by_phone with the caller's E.164 number and surface the matching candidate or client record

### Outreach Basket Management

Build, edit, and reuse baskets of candidates for targeted outreach. GET /basket/list shows existing baskets, POST /basket/new creates a new one, and POST /basket/alter adjusts membership. Combined with POST /{entity_type}/search to source candidates by criteria, this turns ad hoc list-building into a repeatable, auditable workflow.

Example prompt: Call POST /candidate/search with skill and location filters, then POST /basket/new with the resulting candidate ids

### AI Agent Recruiter Assistant via Jentic

A recruiter agent receives a request like 'find Python contractors in Manchester available next month and add them to the new fintech requirement'. Through Jentic, the agent searches for a candidate-search operation, loads the input schema, and calls /candidate/search and /requirement/shortlist with credentials drawn from your Jentic One instance. The agent updates Chameleon-i directly, no manual data entry required.

Example prompt: Use Jentic to search 'search candidates by skill', execute it for 'python' in Manchester, then search 'shortlist candidates against a requirement' and call it for the resulting ids

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /candidate/add | Create a candidate record |
| GET | /candidate/read/{candidateID} | Read a full candidate profile |
| POST | /requirement/add | Create a job requirement |
| POST | /requirement/shortlist | Shortlist candidates against a requirement |
| POST | /{entity_type}/search | Search any supported entity type |
| POST | /miscellaneous/query_entity_by_phone | Resolve a caller phone number to a record |
| POST | /basket/new | Create a basket for outreach |
| POST | /miscellaneous/create_combined_note | Create a combined activity and note |

## Key resources

- **Candidates** — Create, read, update, delete candidate profiles and read basic-profile views
- **Clients** — Manage client records with full CRUD and lookup enumerations
- **Companies** — Manage company records with full CRUD and lookup enumerations
- **Requirements** — Create and update job requirements and shortlist candidates against them
- **Contracts** — Read contract details and remove contract records
- **Activities** — Search, retrieve, and delete activity records and create combined notes
- **Baskets** — List, create, and modify candidate or client baskets for outreach
- **Users** — List Chameleon-i workspace users
- **Search** — Run structured searches across supported entity types and by phone number

## Why Jentic

- **Setup:** Wiring Chameleon-i by hand means learning its API-KEY header auth, targeting the chiapi host, and attaching the key to every CRM and ATS request yourself. Through Jentic you install once, import Chameleon-i from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Chameleon-i takes the target for most writes in the request body rather than the URL path, so limit the agent to the operations it needs, such as adding a candidate or searching entities. You choose which operations it may call, so record creation across other entity types is not included unless you add it.
- **Credential handling:** Your Chameleon-i API key is stored once, encrypted, by your own Jentic One instance and injected into the API-KEY header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add a candidate' or 'search candidates by skill', and Jentic returns the matching Chameleon-i operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Bullhorn API** — Recruitment CRM and ATS with similar candidate, client, and requirement entities
- **Lever API** — Modern ATS focused on internal corporate hiring rather than agency recruiting
- **Greenhouse Harvest API** — Corporate ATS often used by Chameleon-i agency clients on the in-house side

## FAQ

### Why is there no official OpenAPI spec for Chameleon-i API?

Chameleon-i does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Chameleon-i API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Chameleon-i API use?

The API uses an API key passed in the API-KEY request header, issued from inside the Chameleon-i workspace. Through Jentic, the key lives in your Jentic One instance and is added to outgoing requests at execution time so it never enters the agent's prompt or context window.

### Can I shortlist candidates against a requirement with the Chameleon-i API?

Yes. POST /requirement/shortlist accepts a requirement id and a list of candidate ids and links them as a shortlist inside the requirement. Pair with POST /candidate/search to source candidates by structured filters before shortlisting.

### What are the rate limits for the Chameleon-i API?

Limits are tied to the Chameleon-i tenant and plan rather than published as a fixed number in the spec. Watch for 429 responses with Retry-After headers, especially when running bulk imports through POST /candidate/add or large POST /{entity_type}/search calls.

### How do I find a candidate by phone number through Jentic?

Search Jentic for 'find a chameleon-i record by phone number', load the operation backed by POST /miscellaneous/query_entity_by_phone, and execute it with the caller's E.164 number. Jentic injects the API-KEY header so the agent receives the matching record back as typed JSON.

### Does the Chameleon-i API support combined activity and note creation?

Yes. POST /miscellaneous/create_combined_note records an activity (call, meeting, email, etc.) and a free-text note in a single request, attached to the relevant candidate, client, or requirement. This avoids the two-call pattern of creating an activity and a note separately.

### Can I limit what my agent is allowed to do with the Chameleon-i API?

Yes. Because Jentic One is self-hosted, you set the rules for which Chameleon-i operations and which credentials your agent may use. You can allow only the operations the agent needs, such as POST /candidate/add or POST /{entity_type}/search, and leave everything else off. Since most writes take their target in the request body rather than the URL path, record creation across other entity types is not available to the agent unless you explicitly add those operations.
