### Webhooks - Setup
Source: https://100hires.com/api
Use webhook endpoints to register destination URLs for events in your integration.
```APIDOC
## Webhooks - Set up
### Description
Use webhook endpoints to register destination URLs for events in your integration.
```
--------------------------------
### Send Shell Curl Request
Source: https://100hires.com/api
Example of sending a request using curl. This snippet demonstrates a basic API interaction.
```shell
curl
```
--------------------------------
### Get Public Job
Source: https://100hires.com/api
Returns full details for a single public or unlisted job. Returns 404 for draft, archived, or internal jobs.
```APIDOC
## GET /career-site/jobs/{id}
### Description
Returns full details for a single public or unlisted job. Returns 404 for draft, archived, or internal jobs.
### Method
GET
### Endpoint
/career-site/jobs/{id}
### Parameters
#### Path Parameters
- **id** (integer) - Required - Resource ID (numeric).
#### Request Example
```shell
curl https://api.100hires.com/v2/career-site/jobs/1 \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
```
### Response
#### Success Response (200)
Job detail (application/json)
#### Response Example
```json
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "
We are looking for a senior engineer to join our team.
",
"department": {
"id": 1,
"name": "Engineering"
},
"location": {
"city": "San Francisco",
"country": "US",
"state": "CA"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"is_remote": false,
"application_url": "https://acme.100hires.com/jobs/5001/apply",
"created_at": 1711036800,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"education_level": {
"id": 2,
"name": "Bachelor's"
},
"experience_level": {
"id": 3,
"name": "Senior"
}
}
```
```
--------------------------------
### Get Public Job Details
Source: https://100hires.com/api
Retrieves full details for a single public or unlisted job. Use this endpoint when you need comprehensive information about a specific job posting. Ensure you include your company's slug in the header.
```Shell
curl https://api.100hires.com/v2/career-site/jobs/1 \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
```
--------------------------------
### Building UI links from API data
Source: https://100hires.com/api
Instructions on how to construct direct links to the 100Hires UI using candidate and job aliases.
```APIDOC
## Constructing UI Links with Aliases
### Description
Use candidate and job aliases obtained from API responses to create direct links to specific pages within the 100Hires UI.
### Link Formats
- Candidate profile: `https://app.100hires.com/candidate/{candidate_alias}`
- Candidate on a specific job pipeline: `https://app.100hires.com/candidate/{candidate_alias}/{job_alias}`
- Job pipeline: `https://app.100hires.com/job/{job_alias}/candidates/pipeline`
This is useful for generating clickable links in reports, sales pipeline audits, and automation outputs.
```
--------------------------------
### Download OpenAPI Document (YAML)
Source: https://100hires.com/api
Retrieve the machine-readable OpenAPI specification in YAML format for use with various tools.
```bash
GET https://api.100hires.com/v2/openapi.yaml
```
--------------------------------
### Submit Job Application
Source: https://100hires.com/api
Submits a job application on behalf of a candidate. This endpoint creates a candidate record and initiates the career-site pipeline automation. Required fields include job ID, first name, last name, and email. Optional fields like phone, resume, and answers can also be provided.
```Shell
curl https://api.100hires.com/v2/career-site/applications \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN' \
--data '{ \
"job_id": 1, \
"first_name": "", \
"last_name": "", \
"email": "", \
"phone": "", \
"resume": { \
"data": "", \
"file_name": "resume.pdf", \
"mime_type": "application/pdf" \
}, \
"linkedin_url": "", \
"source": "", \
"answers": [ \
{} \
] \
}'
```
--------------------------------
### Webhooks - Receiving
Source: https://100hires.com/api
Always respond quickly with `2xx`, then process asynchronously to avoid retries/timeouts.
```APIDOC
## Webhooks - Receiving webhooks
### Description
Always respond quickly with `2xx`, then process asynchronously to avoid retries/timeouts.
```
--------------------------------
### Pagination
Source: https://100hires.com/api
List endpoints use `page` (1-based) and `size` (1-100, default 20). Paginated responses include resource data and pagination details.
```APIDOC
## Pagination
### Description
List endpoints use `page` (1-based) and `size` (1-100, default 20). Paginated responses follow the format: `{ "": [...], "pagination": { "page_size", "page_count", "page", "total_count" } }`.
```
--------------------------------
### Rate Limits
Source: https://100hires.com/api
New API keys are subject to a hard rate limit of 100 requests per 10 minutes per key. Requests over the limit receive a `429 Too Many Requests` response.
```APIDOC
## Rate Limits
### Description
New API keys are subject to a hard rate limit of 100 requests per 10 minutes per key. Requests over the limit receive a `429 Too Many Requests` response.
### Headers
- `X-RateLimit-Limit`: Maximum requests allowed in the current window
- `X-RateLimit-Remaining`: Requests remaining in the current window
- `X-RateLimit-Reset`: Unix timestamp (seconds) when the window resets
```
--------------------------------
### Download OpenAPI Document (JSON)
Source: https://100hires.com/api
Retrieve the machine-readable OpenAPI specification in JSON format for use with various tools.
```bash
GET https://api.100hires.com/v2/openapi.json
```
--------------------------------
### Using aliases in API requests
Source: https://100hires.com/api
Information on how to use candidate and job aliases interchangeably with their numeric IDs in API requests.
```APIDOC
## Using aliases with Candidate and Job IDs
### Description
For candidates and jobs, the `{id}` path parameter accepts either a numeric ID or an alias. This applies to the main resource endpoints as well as their sub-resources.
### Examples
- `GET /candidates/42` and `GET /candidates/dtGeby2` both return the same candidate.
- `GET /jobs/1` and `GET /jobs/79SZHfT` both return the same job.
- `GET /candidates/dtGeby2/activities`
- `PUT /jobs/79SZHfT`
Note: All other endpoints (applications, notes, interviews, etc.) accept only numeric IDs.
```
--------------------------------
### List Public Jobs with cURL
Source: https://100hires.com/api
Use this cURL command to retrieve a paginated list of publicly visible jobs for a given company. Authentication is handled via the 'X-Company-Slug' header.
```shell
curl https://api.100hires.com/v2/career-site/jobs \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
```
--------------------------------
### Webhooks - Responding
Source: https://100hires.com/api
Use idempotent handlers so duplicate deliveries do not create duplicate side effects.
```APIDOC
## Webhooks - Responding to webhooks
### Description
Use idempotent handlers so duplicate deliveries do not create duplicate side effects.
```
--------------------------------
### Submit Job Application Response Schema
Source: https://100hires.com/api
This is a sample JSON response for a successful job application submission. It confirms the application creation with an ID, job ID, status, and creation timestamp.
```JSON
{
"id": 90001,
"job_id": 5001,
"status": "pending",
"created_at": 1711036800
}
```
--------------------------------
### Authentication
Source: https://100hires.com/api
Send API token in the `Authorization` header for every request.
```APIDOC
## Authentication
### Description
Send API token in the `Authorization` header for every request.
### Header
`Authorization: Bearer `
```
--------------------------------
### Tag and organize candidates
Source: https://100hires.com/api
Endpoints for adding and removing tags from candidates, both individually and in bulk.
```APIDOC
## POST /candidates/{id}/tags
### Description
Add tags to a specific candidate.
### Method
POST
### Endpoint
/candidates/{id}/tags
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
### Request Body
- **tags** (array of strings) - Required - An array of tags to add, e.g., `["senior", "remote"]`.
```
```APIDOC
## POST /candidates/batch/tags
### Description
Bulk add tags to multiple candidates.
### Method
POST
### Endpoint
/candidates/batch/tags
```
```APIDOC
## DELETE /candidates/batch/tags
### Description
Bulk remove tags from multiple candidates.
### Method
DELETE
### Endpoint
/candidates/batch/tags
```
--------------------------------
### Webhooks - Event Configuration
Source: https://100hires.com/api
Event availability can vary by endpoint scope (job/company) and account configuration.
```APIDOC
## Webhooks - Event configuration
### Description
Event availability can vary by endpoint scope (job/company) and account configuration.
```
--------------------------------
### Manage hiring pipeline
Source: https://100hires.com/api
Endpoints for managing the hiring pipeline, including viewing candidates at specific stages and moving them through the process.
```APIDOC
## GET /applications?job_id=123&stage_id=456
### Description
List candidates currently at a specific stage in the hiring pipeline for a given job.
### Method
GET
### Endpoint
/applications
### Query Parameters
- **job_id** (integer) - Required - The ID of the job.
- **stage_id** (integer) - Required - The ID of the stage in the pipeline.
```
```APIDOC
## POST /applications/{id}/move
### Description
Advance a candidate to the next stage in the hiring pipeline.
### Method
POST
### Endpoint
/applications/{id}/move
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the application.
### Request Body
- **stage_id** (integer) - Required - The ID of the next stage.
```
```APIDOC
## POST /applications/{id}/reject
### Description
Reject a candidate from the hiring process. An optional reason can be provided.
### Method
POST
### Endpoint
/applications/{id}/reject
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the application.
```
```APIDOC
## POST /applications/batch/move
### Description
Perform a bulk stage transition for multiple candidates in the hiring pipeline.
### Method
POST
### Endpoint
/applications/batch/move
```
--------------------------------
### Submit Job Application
Source: https://100hires.com/api
Submits a job application on behalf of a candidate. Creates a candidate record and triggers the career-site pipeline automation.
```APIDOC
## POST /career-site/applications
### Description
Submits a job application on behalf of a candidate. Creates a candidate record and triggers the career-site pipeline automation (sets stage to Applied, runs source attribution).
### Method
POST
### Endpoint
/career-site/applications
### Parameters
#### Request Body
- **email** (string) - Required - Applicant email address.
- **first_name** (string) - Required - Applicant first name.
- **job_id** (integer) - Required - Job ID to apply to.
- **last_name** (string) - Required - Applicant last name.
- **answers** (array object[] | null) - Optional - Array of form answer objects. Empty object for answers.
- **linkedin_url** (string) - Optional - Applicant LinkedIn profile URL.
- **phone** (string) - Optional - Applicant phone number.
- **resume** (object · CareerSiteResumeUpload) - Optional - Resume file upload (base64 encoded).
- **source** (string) - Optional - Application source identifier.
### Request Example
```shell
curl https://api.100hires.com/v2/career-site/applications \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN' \
--data '{
"job_id": 1,
"first_name": "",
"last_name": "",
"email": "",
"phone": "",
"resume": {
"data": "",
"file_name": "resume.pdf",
"mime_type": "application/pdf"
},
"linkedin_url": "",
"source": "",
"answers": [
{}
]
}'
```
### Response
#### Success Response (200)
Application created (application/json)
#### Response Example
```json
{
"id": 90001,
"job_id": 5001,
"status": "pending",
"created_at": 1711036800
}
```
```
--------------------------------
### OpenAPI Spec Download
Source: https://100hires.com/api
Download the machine-readable OpenAPI spec for use in MCP servers, Cursor, Claude Code, or any OpenAPI tooling.
```APIDOC
## OpenAPI Spec Download
### Description
Download the machine-readable spec for use in MCP servers, Cursor, Claude Code, or any OpenAPI tooling.
### Method
GET
### Endpoint
`https://api.100hires.com/v2/openapi.json`
```
--------------------------------
### Content-Type
Source: https://100hires.com/api
All request bodies must use `Content-Type: application/json`.
```APIDOC
## Content-Type
### Description
All request bodies must use `Content-Type: application/json`. Sending `application/x-www-form-urlencoded`, `multipart/form-data`, or any other content type will result in a `415 Unsupported Media Type` error.
```
--------------------------------
### List Candidates
Source: https://100hires.com/api
Retrieves a list of candidates with various filtering options.
```APIDOC
## GET /candidates
### Description
List candidates.
### Method
GET
### Endpoint
/candidates
### Authentication
Bearer Token: `Authorization: Bearer `
### Query Parameters
- **company_id** (string) - Optional
- **job_id** (string) - Optional
- **stage_id** (string) - Optional
- **email** (string) - Optional
- **q** (string) - Optional
- **full_name** (string) - Optional
- **linkedin** (string) - Optional
- **created_after** (string) - Optional
- **updated_after** (string) - Optional
- **include** (string) - Optional - e.g., 'applications'
- **page** (integer) - Optional - Default: 1
- **size** (integer) - Optional - Default: 20
### Response
#### Success Response (200)
List of candidates (application/json)
#### Error Responses
- **401** Unauthorized (application/json)
#### Request Example
```shell
curl -X GET \
'https://api.100hires.com/v2/candidates?company_id=123&job_id=456&include=applications&page=1&size=20' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
```
```
--------------------------------
### Search and review a candidate
Source: https://100hires.com/api
Endpoints for finding and retrieving detailed information about candidates, including their profile and activity history.
```APIDOC
## GET /candidates?q=John
### Description
Find a candidate by name or email.
### Method
GET
### Endpoint
/candidates
### Query Parameters
- **q** (string) - Required - Search term for candidate name or email.
```
```APIDOC
## GET /candidates/{id}
### Description
Retrieve the full profile of a candidate, including their application history.
### Method
GET
### Endpoint
/candidates/{id}
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
```
```APIDOC
## GET /candidates/{id}/activities
### Description
Get a timeline of a candidate's activities, including notes, calls, and AI scoring.
### Method
GET
### Endpoint
/candidates/{id}/activities
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
```
```APIDOC
## GET /candidates/{id}/messages
### Description
Retrieve the email conversation history for a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/messages
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
```
--------------------------------
### Applications Operations
Source: https://100hires.com/api
Operations for managing applications, including creation, stage movement, rejection/hire actions, and attachments.
```APIDOC
## GET /applications
### Description
Retrieves a list of applications.
### Method
GET
### Endpoint
/applications
```
```APIDOC
## POST /applications
### Description
Creates a new application.
### Method
POST
### Endpoint
/applications
```
```APIDOC
## GET /applications/{id}
### Description
Retrieves a specific application by ID.
### Method
GET
### Endpoint
/applications/{id}
```
```APIDOC
## PUT /applications/{id}
### Description
Updates a specific application by ID.
### Method
PUT
### Endpoint
/applications/{id}
```
```APIDOC
## DELETE /applications/{id}
### Description
Deletes a specific application by ID.
### Method
DELETE
### Endpoint
/applications/{id}
```
```APIDOC
## GET /applications/{id}/ai-score
### Description
Retrieves the AI score for a specific application.
### Method
GET
### Endpoint
/applications/{id}/ai-score
```
```APIDOC
## GET /applications/{id}/stage-history
### Description
Retrieves the stage history for a specific application.
### Method
GET
### Endpoint
/applications/{id}/stage-history
```
```APIDOC
## POST /applications/{id}/move
### Description
Moves an application to a different stage.
### Method
POST
### Endpoint
/applications/{id}/move
```
```APIDOC
## POST /applications/{id}/hire
### Description
Hires an applicant for a specific application.
### Method
POST
### Endpoint
/applications/{id}/hire
```
```APIDOC
## POST /applications/{id}/reject
### Description
Rejects an applicant for a specific application.
### Method
POST
### Endpoint
/applications/{id}/reject
```
```APIDOC
## POST /applications/{id}/advance
### Description
Advances an application to the next stage.
### Method
POST
### Endpoint
/applications/{id}/advance
```
```APIDOC
## POST /applications/{id}/transfer
### Description
Transfers an application.
### Method
POST
### Endpoint
/applications/{id}/transfer
```
```APIDOC
## POST /applications/{id}/unreject
### Description
Unrejects an application.
### Method
POST
### Endpoint
/applications/{id}/unreject
```
```APIDOC
## GET /applications/{id}/attachments
### Description
Retrieves attachments for a specific application.
### Method
GET
### Endpoint
/applications/{id}/attachments
```
```APIDOC
## POST /applications/{id}/attachments
### Description
Adds an attachment to a specific application.
### Method
POST
### Endpoint
/applications/{id}/attachments
```
```APIDOC
## POST /applications/batch/move
### Description
Moves multiple applications to a different stage in batch.
### Method
POST
### Endpoint
/applications/batch/move
```
```APIDOC
## POST /applications/batch/reject
### Description
Rejects multiple applications in batch.
### Method
POST
### Endpoint
/applications/batch/reject
```
--------------------------------
### File Uploads
Source: https://100hires.com/api
File uploads use base64 payloads with metadata for candidate files, resumes, attachments, and logos.
```APIDOC
## Supported File Formats
### Description
File uploads use base64 payloads with metadata: `data`, `file_name`, `mime_type` (and optionally `size`). This format is used for candidate files, resumes, attachments, and logos.
```
--------------------------------
### Webhooks - Event Payloads
Source: https://100hires.com/api
Parse payloads defensively and keep backward compatibility in your consumer.
```APIDOC
## Webhooks - Event payloads
### Description
Parse payloads defensively and keep backward compatibility in your consumer.
```
--------------------------------
### Publish a job
Source: https://100hires.com/api
Endpoints for creating job drafts, publishing them, and managing their visibility on job boards.
```APIDOC
## POST /jobs
### Description
Create a new job draft.
### Method
POST
### Endpoint
/jobs
```
```APIDOC
## POST /jobs/{id}/status
### Description
Publish a job, making it visible to applicants.
### Method
POST
### Endpoint
/jobs/{id}/status
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the job.
### Request Body
- **status** (string) - Required - The status to set for the job, e.g., "Public".
```
```APIDOC
## GET /jobs/{id}/job-boards
### Description
Retrieve a list of available job boards where the job can be published.
### Method
GET
### Endpoint
/jobs/{id}/job-boards
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the job.
```
```APIDOC
## POST /jobs/batch-job-boards
### Description
Publish a job to multiple job boards simultaneously.
### Method
POST
### Endpoint
/jobs/batch-job-boards
```
--------------------------------
### Schedule an interview
Source: https://100hires.com/api
Endpoints for checking interviewer availability and scheduling interviews for applications.
```APIDOC
## GET /interviews?interviewer_user_id=5
### Description
Check the availability of a specific interviewer.
### Method
GET
### Endpoint
/interviews
### Query Parameters
- **interviewer_user_id** (integer) - Required - The user ID of the interviewer.
```
```APIDOC
## POST /applications/{id}/interviews
### Description
Create an interview for a specific application.
### Method
POST
### Endpoint
/applications/{id}/interviews
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the application for which to schedule the interview.
```
--------------------------------
### Webhooks - Delivery History
Source: https://100hires.com/api
Log incoming webhook IDs and processing results for replay, debugging, and audit.
```APIDOC
## Webhooks - Delivery history
### Description
Log incoming webhook IDs and processing results for replay, debugging, and audit.
```
--------------------------------
### Send an email
Source: https://100hires.com/api
Endpoints for sending emails to candidates, scheduling them, and managing email history.
```APIDOC
## GET /candidates/{id}/messages
### Description
Check the conversation history for emails sent to a candidate.
### Method
GET
### Endpoint
/candidates/{id}/messages
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
```
```APIDOC
## GET /users/{user_id}/mail-accounts
### Description
Find the `mail_account_id` to send an email from a specific user's mailbox. This is an optional step if you need to specify the sender.
### Method
GET
### Endpoint
/users/{user_id}/mail-accounts
### Parameters
#### Path Parameters
- **user_id** (integer) - Required - The ID of the user whose mail accounts to retrieve.
```
```APIDOC
## POST /candidates/{id}/messages
### Description
Schedule an email to be sent to a candidate. You can specify `from_account_id` to send from a particular mailbox. There is a 15-minute cancellation window by default.
### Method
POST
### Endpoint
/candidates/{id}/messages
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
### Request Body
- **from_account_id** (integer) - Optional - The ID of the mail account to send the email from.
```
```APIDOC
## POST /messages/batch/create
### Description
Schedule up to 100 emails in a single request. Each email can have its own `candidate_id`.
### Method
POST
### Endpoint
/messages/batch/create
```
```APIDOC
## DELETE /messages/{id}
### Description
Cancel a scheduled email before it is sent.
### Method
DELETE
### Endpoint
/messages/{id}
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the message to cancel.
```
--------------------------------
### Interviews Operations
Source: https://100hires.com/api
Operations for scheduling, listing, viewing, and creating interviews linked to applications and candidates.
```APIDOC
## GET /candidates/{id}/interviews
### Description
Retrieves interviews for a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/interviews
```
```APIDOC
## POST /applications/{id}/interviews
### Description
Creates a new interview for a specific application.
### Method
POST
### Endpoint
/applications/{id}/interviews
```
```APIDOC
## GET /interviews
### Description
Retrieves a list of all interviews.
### Method
GET
### Endpoint
/interviews
```
```APIDOC
## GET /interviews/{id}
### Description
Retrieves a specific interview by ID.
### Method
GET
### Endpoint
/interviews/{id}
```
--------------------------------
### Job Detail Response Schema
Source: https://100hires.com/api
This is a sample JSON response for a successful job detail retrieval. It includes information about the job title, description, department, location, employment type, and salary.
```JSON
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "We are looking for a senior engineer to join our team.
",
"department": {
"id": 1,
"name": "Engineering"
},
"location": {
"city": "San Francisco",
"country": "US",
"state": "CA"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"is_remote": false,
"application_url": "https://acme.100hires.com/jobs/5001/apply",
"created_at": 1711036800,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"education_level": {
"id": 2,
"name": "Bachelor's"
},
"experience_level": {
"id": 3,
"name": "Senior"
}
}
```
--------------------------------
### Questions Operations
Source: https://100hires.com/api
Operations for managing a reusable question catalog and supported question type discovery.
```APIDOC
## GET /questions
### Description
Retrieves a list of questions.
### Method
GET
### Endpoint
/questions
```
```APIDOC
## POST /questions
### Description
Creates a new question.
### Method
POST
### Endpoint
/questions
```
```APIDOC
## GET /questions/{id}
### Description
Retrieves a specific question by ID.
### Method
GET
### Endpoint
/questions/{id}
```
```APIDOC
## PUT /questions/{id}
### Description
Updates a specific question by ID.
### Method
PUT
### Endpoint
/questions/{id}
```
```APIDOC
## DELETE /questions/{id}
### Description
Deletes a specific question by ID.
### Method
DELETE
### Endpoint
/questions/{id}
```
```APIDOC
## GET /questions/types
### Description
Retrieves a list of supported question types.
### Method
GET
### Endpoint
/questions/types
```
--------------------------------
### Webhooks - Securing
Source: https://100hires.com/api
Verify webhook signatures and only accept trusted requests on your receiver endpoint.
```APIDOC
## Webhooks - Securing webhooks
### Description
Verify webhook signatures and only accept trusted requests on your receiver endpoint.
```
--------------------------------
### Send an email from another team member's mailbox
Source: https://100hires.com/api
Instructions for sending an email using another team member's mailbox by retrieving their user and mail account IDs.
```APIDOC
## GET /users
### Description
Retrieve a list of users to find the `user_id` of the team member.
### Method
GET
### Endpoint
/users
```
```APIDOC
## GET /users/{user_id}/mail-accounts
### Description
Get the `mail_account_id` for the specified team member.
### Method
GET
### Endpoint
/users/{user_id}/mail-accounts
### Parameters
#### Path Parameters
- **user_id** (integer) - Required - The ID of the team member.
```
```APIDOC
## POST /candidates/{id}/messages
### Description
Send an email from the team member's mailbox by specifying their `from_account_id`.
### Method
POST
### Endpoint
/candidates/{id}/messages
### Parameters
#### Path Parameters
- **id** (string or integer) - Required - The unique identifier or alias of the candidate.
### Request Body
- **from_account_id** (integer) - Required - The `mail_account_id` of the team member.
```
--------------------------------
### Candidates Operations
Source: https://100hires.com/api
Operations for managing candidate profiles, including search, deduplication, files, tags, and activity timeline.
```APIDOC
## GET /candidates
### Description
Retrieves a list of candidates.
### Method
GET
### Endpoint
/candidates
```
```APIDOC
## POST /candidates
### Description
Creates a new candidate.
### Method
POST
### Endpoint
/candidates
```
```APIDOC
## GET /candidates/{id}
### Description
Retrieves a specific candidate by ID.
### Method
GET
### Endpoint
/candidates/{id}
```
```APIDOC
## PUT /candidates/{id}
### Description
Updates a specific candidate by ID.
### Method
PUT
### Endpoint
/candidates/{id}
```
```APIDOC
## DELETE /candidates/{id}
### Description
Deletes a specific candidate by ID.
### Method
DELETE
### Endpoint
/candidates/{id}
```
```APIDOC
## GET /candidates/{id}/tags
### Description
Retrieves tags for a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/tags
```
```APIDOC
## POST /candidates/{id}/tags
### Description
Adds a tag to a specific candidate.
### Method
POST
### Endpoint
/candidates/{id}/tags
```
```APIDOC
## DELETE /candidates/{id}/tags/{tag}
### Description
Removes a tag from a specific candidate.
### Method
DELETE
### Endpoint
/candidates/{id}/tags/{tag}
```
```APIDOC
## GET /candidates/{id}/files
### Description
Retrieves files associated with a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/files
```
```APIDOC
## POST /candidates/{id}/files
### Description
Adds a file to a specific candidate.
### Method
POST
### Endpoint
/candidates/{id}/files
```
```APIDOC
## GET /candidates/{id}/resume
### Description
Retrieves the resume for a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/resume
```
```APIDOC
## GET /candidates/{id}/activities
### Description
Retrieves the activity timeline for a specific candidate.
### Method
GET
### Endpoint
/candidates/{id}/activities
```
```APIDOC
## POST /candidates/{id}/disqualify
### Description
Disqualifies a specific candidate.
### Method
POST
### Endpoint
/candidates/{id}/disqualify
```
```APIDOC
## POST /candidates/batch/tags
### Description
Applies tags to multiple candidates in batch.
### Method
POST
### Endpoint
/candidates/batch/tags
```
```APIDOC
## DELETE /candidates/batch/tags
### Description
Removes tags from multiple candidates in batch.
### Method
DELETE
### Endpoint
/candidates/batch/tags
```
--------------------------------
### API Authentication Header
Source: https://100hires.com/api
Include your API token in the Authorization header for all requests. Each key is tied to a specific user and company pair.
```http
Authorization: Bearer
```
--------------------------------
### Error handling
Source: https://100hires.com/api
Information on the structure and types of errors returned by the API.
```APIDOC
## API Error Handling
### Description
All errors returned by the API are wrapped in an `error` object with a consistent format.
### General Error Format
```json
{
"error": {
"name": "Error Name",
"message": "Error message description",
"code": 0,
"status": 404
}
}
```
### Validation Error Format
Validation errors include field-level details within the `validation_errors` object.
```json
{
"error": {
"name": "Validation Error",
"message": "",
"code": 0,
"status": 400,
"validation_errors": {
"field_name": "Error message for the field."
}
}
}
```
### Common Status Codes
- **400 Bad Request**: Invalid request parameters.
- **400 Validation Error**: Model validation failed (includes `validation_errors`).
- **401 Unauthorized**: Missing or invalid API key.
- **403 Forbidden**: No permission for this resource.
- **404 Not Found**: Resource does not exist.
- **415 Unsupported Media Type**: Content-Type is not application/json.
- **429 Too Many Requests**: Rate limit exceeded.
```
--------------------------------
### Notes Operations
Source: https://100hires.com/api
Operations for managing discussion notes linked to candidates for recruiter collaboration and context sharing.
```APIDOC
## GET /notes
### Description
Retrieves a list of notes.
### Method
GET
### Endpoint
/notes
```
```APIDOC
## POST /notes
### Description
Creates a new note.
### Method
POST
### Endpoint
/notes
```
```APIDOC
## GET /notes/{id}
### Description
Retrieves a specific note by ID.
### Method
GET
### Endpoint
/notes/{id}
```
```APIDOC
## PUT /notes/{id}
### Description
Updates a specific note by ID.
### Method
PUT
### Endpoint
/notes/{id}
```
```APIDOC
## DELETE /notes/{id}
### Description
Deletes a specific note by ID.
### Method
DELETE
### Endpoint
/notes/{id}
```
--------------------------------
### Email Templates Operations
Source: https://100hires.com/api
Operations for email template CRUD for automation, nurture campaigns, and manual outreach.
```APIDOC
## GET /email-templates
### Description
Retrieves a list of email templates.
### Method
GET
### Endpoint
/email-templates
```
```APIDOC
## POST /email-templates
### Description
Creates a new email template.
### Method
POST
### Endpoint
/email-templates
```
```APIDOC
## GET /email-templates/{id}
### Description
Retrieves a specific email template by ID.
### Method
GET
### Endpoint
/email-templates/{id}
```
```APIDOC
## PUT /email-templates/{id}
### Description
Updates a specific email template by ID.
### Method
PUT
### Endpoint
/email-templates/{id}
```
```APIDOC
## DELETE /email-templates/{id}
### Description
Deletes a specific email template by ID.
### Method
DELETE
### Endpoint
/email-templates/{id}
```
--------------------------------
### Evaluate a candidate
Source: https://100hires.com/api
Endpoints for retrieving evaluation forms and detailed scores for candidates.
```APIDOC
## GET /applications/{id}/evaluation-forms
### Description
List all evaluation forms that have been filled out for a specific application.
### Method
GET
### Endpoint
/applications/{id}/evaluation-forms
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the application.
```
```APIDOC
## GET /evaluation-forms/{id}
### Description
Retrieve detailed information about a specific evaluation form, including answers and scores.
### Method
GET
### Endpoint
/evaluation-forms/{id}
### Parameters
#### Path Parameters
- **id** (integer) - Required - The ID of the evaluation form.
```
--------------------------------
### Jobs Operations
Source: https://100hires.com/api
Operations for managing job lifecycle and publishing, including CRUD, status transitions, hiring team, boards, and webhooks.
```APIDOC
## GET /jobs
### Description
Retrieves a list of jobs.
### Method
GET
### Endpoint
/jobs
```
```APIDOC
## POST /jobs
### Description
Creates a new job.
### Method
POST
### Endpoint
/jobs
```
```APIDOC
## GET /jobs/{id}
### Description
Retrieves a specific job by ID.
### Method
GET
### Endpoint
/jobs/{id}
```
```APIDOC
## PUT /jobs/{id}
### Description
Updates a specific job by ID.
### Method
PUT
### Endpoint
/jobs/{id}
```
```APIDOC
## DELETE /jobs/{id}
### Description
Deletes a specific job by ID.
### Method
DELETE
### Endpoint
/jobs/{id}
```
```APIDOC
## PATCH /jobs/{id}/status
### Description
Updates the status of a specific job.
### Method
PATCH
### Endpoint
/jobs/{id}/status
```
```APIDOC
## GET /jobs/{id}/hiring-team
### Description
Retrieves the hiring team for a specific job.
### Method
GET
### Endpoint
/jobs/{id}/hiring-team
```
```APIDOC
## POST /jobs/{id}/hiring-team
### Description
Adds a member to the hiring team for a specific job.
### Method
POST
### Endpoint
/jobs/{id}/hiring-team
```
```APIDOC
## GET /jobs/{id}/webhooks
### Description
Retrieves webhooks for a specific job.
### Method
GET
### Endpoint
/jobs/{id}/webhooks
```
```APIDOC
## POST /jobs/{id}/webhooks
### Description
Adds a webhook to a specific job.
### Method
POST
### Endpoint
/jobs/{id}/webhooks
```
```APIDOC
## DELETE /jobs/{id}/webhooks/{webhook_id}
### Description
Deletes a webhook for a specific job.
### Method
DELETE
### Endpoint
/jobs/{id}/webhooks/{webhook_id}
```
```APIDOC
## GET /jobs/{id}/job-boards
### Description
Retrieves job boards for a specific job.
### Method
GET
### Endpoint
/jobs/{id}/job-boards
```
```APIDOC
## POST /jobs/{id}/job-boards
### Description
Adds a job to a job board.
### Method
POST
### Endpoint
/jobs/{id}/job-boards
```
```APIDOC
## DELETE /jobs/{id}/job-boards
### Description
Removes a job from a job board.
### Method
DELETE
### Endpoint
/jobs/{id}/job-boards
```
```APIDOC
## GET /jobs/batch-job-boards
### Description
Retrieves batch job boards.
### Method
GET
### Endpoint
/jobs/batch-job-boards
```
```APIDOC
## POST /jobs/batch-job-boards
### Description
Adds jobs to job boards in batch.
### Method
POST
### Endpoint
/jobs/batch-job-boards
```
```APIDOC
## DELETE /jobs/batch-job-boards
### Description
Removes jobs from job boards in batch.
### Method
DELETE
### Endpoint
/jobs/batch-job-boards
```
--------------------------------
### Responses and Errors
Source: https://100hires.com/api
Standard HTTP status codes are used. Validation errors return `success: false` with field-level `errors`. Exception-based errors return `name`, `message`, `code`, and optional `status`.
```APIDOC
## Responses and Errors
### Description
Standard HTTP status codes are used (`2xx`, `4xx`, `5xx`). Validation errors return `success: false` with field-level `errors`. Exception-based errors return `name`, `message`, `code`, and optional `status`.
```
--------------------------------
### Monitor outreach by mail account
Source: https://100hires.com/api
Endpoints for monitoring emails sent or scheduled from a specific mail account, with filtering options.
```APIDOC
## GET /companies/mail-accounts or GET /users/{user_id}/mail-accounts
### Description
Find the `mail_account_id` for a company or a specific user.
### Method
GET
### Endpoint
/companies/mail-accounts or /users/{user_id}/mail-accounts
### Parameters
#### Path Parameters
- **user_id** (integer) - Optional - The ID of the user whose mail accounts to retrieve.
```
```APIDOC
## GET /messages?from_account_id={id}
### Description
List all messages sent or scheduled from a specific mail account.
### Method
GET
### Endpoint
/messages
### Query Parameters
- **from_account_id** (integer) - Required - The ID of the mail account.
- **status** (string) - Optional - Filter by status, e.g., `scheduled` or `sent`.
- **date_from** (unix timestamp) - Optional - Start of the time range.
- **date_to** (unix timestamp) - Optional - End of the time range.
```
--------------------------------
### Nurture Campaigns Operations
Source: https://100hires.com/api
Operations for nurture campaign CRUD with multi-step sequences (email, SMS, voicemail, move stage, assign tag/task).
```APIDOC
## GET /nurture-campaigns
### Description
Retrieves a list of nurture campaigns.
### Method
GET
### Endpoint
/nurture-campaigns
```
```APIDOC
## POST /nurture-campaigns
### Description
Creates a new nurture campaign.
### Method
POST
### Endpoint
/nurture-campaigns
```
```APIDOC
## GET /nurture-campaigns/{id}
### Description
Retrieves a specific nurture campaign by ID.
### Method
GET
### Endpoint
/nurture-campaigns/{id}
```
```APIDOC
## PUT /nurture-campaigns/{id}
### Description
Updates a specific nurture campaign by ID.
### Method
PUT
### Endpoint
/nurture-campaigns/{id}
```
```APIDOC
## DELETE /nurture-campaigns/{id}
### Description
Deletes a specific nurture campaign by ID.
### Method
DELETE
### Endpoint
/nurture-campaigns/{id}
```
--------------------------------
### List public jobs
Source: https://100hires.com/api
Returns publicly visible jobs for the given company. Supports filtering by department, employment type, city, and country. Use to power a custom careers page.
```APIDOC
## GET /career-site/jobs
### Description
Returns publicly visible jobs for the given company. Supports filtering by department, employment type, city, and country.
### Method
GET
### Endpoint
/career-site/jobs
### Query Parameters
- **company_slug** (string) - Optional - Company slug (alternative to X-Company-Slug header)
- **department_id** (integer) - Optional - Filter by department ID.
- **employment_type_id** (integer) - Optional - Filter by employment type ID (e.g. Full-time, Part-time).
- **city** (string) - Optional - Filter by job city (exact match).
- **country** (string) - Optional - Filter by job country (exact match).
- **page** (integer) - Optional - Page number (1-based). Defaults to 1.
- **size** (integer) - Optional - Number of items per page (1–100). Defaults to 20.
### Request Example
```
curl https://api.100hires.com/v2/career-site/jobs \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
```
### Success Response (200)
Paginated list of public jobs
### Response Example
```json
{
"jobs": [
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "We are looking for a senior engineer...
",
"department": {
"id": 1,
"name": "Engineering"
},
"location": {
"city": "San Francisco",
"country": "US",
"state": "CA"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"is_remote": false,
"application_url": "https://acme.100hires.com/jobs/5001/apply",
"created_at": 1711036800
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}
```
```
--------------------------------
### Public Jobs Response Schema
Source: https://100hires.com/api
This JSON schema represents the structure of the response when listing public jobs. It includes job details, department, location, employment type, and pagination information.
```json
{
"jobs": [
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "We are looking for a senior engineer...
",
"department": {
"id": 1,
"name": "Engineering"
},
"location": {
"city": "San Francisco",
"country": "US",
"state": "CA"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"is_remote": false,
"application_url": "https://acme.100hires.com/jobs/5001/apply",
"created_at": 1711036800
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}
```