Developer Portal
100Hires ATS API Documentation
The 100Hires ATS API lets you build reliable recruiting automations across candidates, applications, jobs, and webhooks.
Machine-readable spec: https://api.100hires.com/v2/openapi.json
MCP server for AI assistants: 100hires.com/mcp
Integrate your recruiting workflow with the 100Hires ATS API. REST API for applicant tracking, hiring automation, and recruiting integrations.
About the 100Hires ATS API
The 100Hires ATS API is a REST API for building recruiting automations, ATS integrations, and custom hiring workflows on top of the 100Hires applicant tracking system. With 100+ endpoints covering candidates, applications, jobs, interviews, evaluations, messages, notes, forms, and webhooks, the API gives developers full programmatic access to the data and actions available in the 100Hires UI.
Who it is for
Recruiting teams that want to sync candidates from sourcing tools (LinkedIn, GitHub, Apollo, internal CRMs) into 100Hires, agencies migrating from another ATS, internal IT teams building Slack/Teams bots, and SaaS vendors offering integrations with 100Hires as a partner ATS.
What you can build
Two-way candidate sync with your CRM, automatic job publishing to your careers page or job boards, Slack notifications when a candidate moves stage, scorecard automation that pushes evaluation results into BI dashboards, sourcing extensions that create a candidate from a LinkedIn profile in one click, and AI agents that triage applications with custom scoring rules.
Authentication
The 100Hires ATS API uses Bearer token authentication. Generate an API key in
Settings → Integrations → API Keys,
pass it in the Authorization: Bearer <key> header on every request.
Keys are scoped to a user and company and can be revoked at any time. Company verification is required before a key becomes active; keys for unverified companies return 401 Unauthorized until verification is complete.
Pricing
API access is included with paid plans at no extra cost. No per-request fees, no separate API tier. Default rate limit is 100 requests per 10 minutes per API key (unapproved keys); contact support to increase.
Quick links: OpenAPI 3.x specification · MCP server for AI assistants · Webhooks setup · Common workflows
100Hires API
Introduction to the 100Hires ATS API
The 100Hires ATS API (v2) helps you automate recruiting workflows end-to-end: candidates, applications, jobs, forms, notes, and partner-company operations. All endpoints return JSON and use bearer authentication.
OpenAPI Spec
The 100Hires ATS API follows the OpenAPI 3.x specification. Download the machine-readable spec for use in MCP servers, Cursor, Claude Code, or any OpenAPI tooling:
GET https://api.100hires.com/v2/openapi.json
Authentication
Send API token in the Authorization header for every request:
Authorization: Bearer <token>
Each API key is tied to a specific user + company pair. If the same user belongs to multiple companies, they need a separate key for each company. All actions performed through the API are attributed to the key owner.
You can generate or view your API key at https://app.100hires.com/settings/integrations
API Key Verification
API keys for unverified companies are created in a disabled state and will return 401 Unauthorized until the company passes verification.
Once your company is verified, API keys start working automatically — no action required.
If your key returns 401 and you believe your company should be verified, contact support@100hires.com.
Rate Limits
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.
Rate limit headers
Unapproved keys include these headers on every response:
| Header | Description |
|---|---|
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 |
Handling 429 responses
When you receive a 429 response, wait until X-RateLimit-Reset before retrying.
Do not retry immediately — repeated 429s may extend the cooldown.
To remove rate limits for your integration, contact support@100hires.com with your use case.
Content-Type
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.
Responses and Errors
Standard HTTP status codes are used (2xx, 4xx, 5xx).
All error responses are wrapped in an error object containing name, message, code, and status.
Validation errors additionally include field-level details in error.validation_errors.
See the Error handling section below for the full format and status table.
Pagination
List endpoints use page (1-based) and size (1-100, default 20).
Paginated responses follow:
{ "<resource>": [...], "pagination": { "page_size", "page_count", "page", "total_count" } }.
Lists
List routes are optimized for synchronization and operational dashboards.
Most list endpoints support tenant scoping through optional company_id (when allowed by API key context).
Confidential Data
Some candidate profile values can be masked by account-level pricing/access rules. Integrations should not assume all profile fields are always fully visible.
Customizing the Response
Use endpoint filters (status, job_id, timestamps, taxonomy IDs, etc.) to minimize payload size and improve sync efficiency.
Build incremental sync flows around timestamp filters where available.
Supported File Formats
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
Webhook subscriptions can be managed per job and per company.
Set up
Use webhook endpoints to register destination URLs for events in your integration.
Securing webhooks
Every delivery is signed with the x-hires-signature-v2 header: base64(HMAC_SHA256(rawBody, secret)),
computed over the raw request body with the webhook's signing secret (returned once when you create or
rotate the webhook). Verify it before trusting a request and reject anything that does not match.
During a secret rotation, x-hires-signature-v2 may carry multiple space-separated signatures (one per
currently-valid secret). Treat the header as a space-separated list and accept the request if any entry matches
a secret you hold.
Verification example for x-hires-signature-v2 (Node.js):
const crypto = require('crypto');
const expected = crypto.createHmac('sha256', signingSecret).update(rawBody).digest('base64');
const provided = (req.headers['x-hires-signature-v2'] || '').split(' ');
const verified = provided.includes(expected);
Signing secrets and rotation
Each webhook owns its own signing secret, independent of your API key. The secret is returned once as
signing_secret when you create the webhook (POST /jobs/{id}/webhooks, POST /companies/{id}/webhooks) — store
it securely, it is never shown again. To rotate with zero downtime, call
POST /jobs/{id}/webhooks/{webhook_id}/rotate-secret (or the company equivalent): the previous secret stays valid
for a grace window while both old and new signatures are sent, so you can switch the secret on your side without
dropping any deliveries.
Receiving webhooks
Always respond quickly with 2xx, then process asynchronously to avoid retries/timeouts.
Event payloads
On each new application, 100hires sends a POST to your registered URL with a JSON body describing the
application. Verify the signature (see "Securing webhooks") before processing, and parse defensively — fields
may be null and new fields may be added over time.
Webhooks registered through this API (v2) receive the payload below. (Webhooks created via the legacy v1 API receive a different, legacy payload — register through v2 to receive this richer shape.)
Example delivery payload:
{
"id": 845112,
"candidate_id": 390217,
"job_id": 4821,
"job_alias": "senior-backend-engineer",
"internal_job_id": 12,
"company_id": 1007,
"stage": { "id": 3, "name": "Applied" },
"status": "active",
"is_disqualified": false,
"url_backoffice": "https://app.100hires.com/candidate/default/view?candidate=390217&application=845112",
"cv": {
"url": "https://api.100hires.com/v2/files/9f1c2e7a-3b4c-4d5e-8f90-1a2b3c4d5e6f/download",
"uuid": "9f1c2e7a-3b4c-4d5e-8f90-1a2b3c4d5e6f",
"relative_time": "2 hours ago",
"file": {
"is_image": false,
"orig_file_name": "jane_doe_resume.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "100kB"
},
"text": "Jane Doe — Senior Backend Engineer\n8 years building distributed systems…"
},
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"created_at": 1781434800,
"updated_at": 1781434800,
"last_message_at": null,
"days_since_last_message": null,
"ai_score": null,
"ai_recommendation": null,
"ai_scoring_updated_at": null,
"candidate": {
"id": 390217,
"alias": "jane-doe",
"company_id": 1007,
"first_name": "Jane",
"last_name": "Doe",
"emails": ["jane.doe@example.com"],
"phones": ["+1 555 123 4567"],
"source": { "id": 5, "name": "LinkedIn" },
"origin": { "id": 2, "name": "Career site" },
"profile": [
{ "question_id": 1, "question_text": "First name", "value": "Jane" },
{ "question_id": 3, "question_text": "Email", "value": "jane.doe@example.com" }
]
}
}
Field reference:
id— application id.candidate_id,job_id,company_id— related entity ids.job_alias— the job's URL slug;internal_job_id— human-facing job number (present when set).stage— current pipeline stage{ id, name }, ornull.status—active,rejected, orhired.is_disqualified—truewhen the application has been rejected/disqualified.url_backoffice— deep link to the application in the 100hires back office.-
cv— résumé{ url, uuid, relative_time, file { … }, text }, ornullwhen there is no résumé.textis the parsed résumé content (can be large). rejected_at/hired_at— Unix timestamps, ornull.rejection_reason— array of{ id, name }, ornull.created_at/updated_at/last_message_at— Unix timestamps (seconds; nullable where noted).ai_score/ai_recommendation/ai_scoring_updated_at— AI scoring fields,nullwhen not scored.-
candidate— the full applicant object (name, emails, phones, source/origin,profileanswers) — same shape asGET /candidates/{id}. Use it to create the lead on your side.
Parse payloads defensively and keep backward compatibility in your consumer.
Event configuration
Event availability can vary by endpoint scope (job/company) and account configuration.
Responding to webhooks
Use idempotent handlers so duplicate deliveries do not create duplicate side effects.
Delivery history
Log incoming webhook IDs and processing results for replay, debugging, and audit.
Common Workflows
Search and review a candidate
Using the 100Hires ATS API you can search for candidates and review their full profile, application history, and communication timeline.
GET /candidates?q=John— find candidate by name or emailGET /candidates/{id}— full profile with application historyGET /candidates/{id}/activities— timeline (notes, calls, AI scoring)GET /candidates/{id}/messages— email conversation history
Manage hiring pipeline
Using the 100Hires ATS API you can manage your hiring pipeline by filtering candidates by stage, advancing or rejecting applications, and performing bulk stage transitions.
GET /applications?job_id=123&stage_id=456— candidates at a specific stagePOST /applications/{id}/movewith{"stage_id": 789}— advance candidatePOST /applications/{id}/reject— reject with optional reasonPOST /applications/batch/move— bulk stage transition
Publish a job
Using the 100Hires ATS API you can create job drafts, publish them, and distribute to multiple job boards in one request.
POST /jobs— create job draftPOST /jobs/{id}/statuswith{"status": "Public"}— publishGET /jobs/{id}/job-boards— available boardsPOST /jobs/batch-job-boards— publish to multiple boards
Schedule an interview
Using the 100Hires ATS API you can check interviewer availability and schedule interviews for application candidates.
GET /interviews?interviewer_user_id=5— check interviewer availabilityPOST /applications/{id}/interviews— create interview for application
Evaluate a candidate
Using the 100Hires ATS API you can retrieve evaluation forms and review candidate scores and feedback.
GET /applications/{id}/evaluation-forms— list filled evaluationsGET /evaluation-forms/{id}— detailed form with answers and scores
Send an email
Using the 100Hires ATS API you can send emails to candidates, schedule bulk messages, and cancel pending deliveries.
GET /candidates/{id}/messages— check conversation history- (Optional)
GET /users/{user_id}/mail-accounts— findmail_account_idto send from a specific user's mailbox POST /candidates/{id}/messages— schedule email (usefrom_account_idto send from a specific mailbox; 15-min cancel window by default)POST /messages/batch/create— schedule up to 100 emails in one request (each with its owncandidate_id)DELETE /messages/{id}— cancel before send
Monitor outreach by mail account
Using the 100Hires ATS API you can monitor outreach by tracking messages sent from specific mail accounts.
GET /companies/mail-accountsorGET /users/{user_id}/mail-accounts— findmail_account_idGET /messages?from_account_id={id}— list all messages sent/scheduled from that account- Filter by
status=scheduledto see pending queue,status=sentfor delivery history - Use
date_from/date_to(unix timestamps) to narrow the time range
Send an email from another team member's mailbox
Using the 100Hires ATS API you can send emails from any team member's connected mailbox.
GET /users— find theuser_idof the team memberGET /users/{user_id}/mail-accounts— get theirmail_account_idPOST /candidates/{id}/messageswithfrom_account_id— send from their mailbox
Tag and organize candidates
Using the 100Hires ATS API you can tag candidates individually or in bulk for better organization.
POST /candidates/{id}/tagswith["senior", "remote"]— add tagsPOST /candidates/batch/tags— bulk add tagsDELETE /candidates/batch/tags— bulk remove tags
IDs, aliases, and building UI links
Every candidate and job has a short alias (e.g. dtGeby2, 79SZHfT) — the same string used in 100Hires UI URLs.
Using aliases in API requests
For candidates and jobs, the {id} path parameter accepts either a numeric ID or an alias:
GET /candidates/42andGET /candidates/dtGeby2both return the same candidate.GET /jobs/1andGET /jobs/79SZHfTboth return the same job.- This also works for their sub-resources:
GET /candidates/dtGeby2/activities,PUT /jobs/79SZHfT, etc. - All other endpoints (applications, notes, interviews, etc.) accept only numeric IDs.
Alias fields in responses
GET /candidatesandGET /candidates/{id}returnaliasfield for each candidate.GET /jobsandGET /jobs/{id}returnaliasfield for each job.GET /applicationsandGET /applications/{id}returnjob_aliasfield alongsidejob_id.
Building UI links from API data
Use aliases to construct direct links to 100Hires UI:
- 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.
Error handling
All errors are wrapped in an error object. The format is consistent across all endpoints:
{"error": {"name": "Not Found", "message": "Candidate not found", "code": 0, "status": 404}}
Validation errors include field-level details in validation_errors:
{"error": {"name": "Validation Error", "message": "", "code": 0, "status": 400, "validation_errors": {"email": "Email cannot be blank."}}}
| Status | Name | When |
|---|---|---|
| 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 |
Production API endpoint
Candidates
Candidate profile lifecycle: search, deduplication, files, tags, and activity timeline.
- get/candidates
- post/candidates
- get/candidates/{id}
- put/candidates/{id}
- delete/candidates/{id}
- get/candidates/{id}/tags
- post/candidates/{id}/tags
- delete/candidates/{id}/tags/{tag}
- get/candidates/{id}/files
- post/candidates/{id}/files
- get/candidates/{id}/resume
- get/candidates/{id}/activities
- post/candidates/{id}/disqualify
- post/candidates/batch/tags
- delete/candidates/batch/tags
List candidates
Returns a paginated candidate list for one company or all companies accessible by the API key. Use filters for deduplication, exports, and incremental synchronization jobs.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
job _id Filter candidates by job ID.
- Type: integer
stage _id Filter candidates by pipeline stage ID. Best used together with job_id.
- Type: string
email Exact candidate email filter.
- Type: string
q Plain-text candidate search by name or email. Supports partial matches. If combined with other filters, all filters must match.
- Type: string
full _name Candidate full-name filter. If combined with email or q, all supplied filters must match.
- Type: string
linkedin Search by LinkedIn profile URL or alias. Accepts full URL (https://linkedin.com/in/johndoe) or just the alias (johndoe). Server normalizes before matching.
created _after Return only candidates created at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
updated _after Return only candidates updated at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds. Use for incremental sync.- Type: integermin:0
Integer numbers.
- enum
include const:applicationsInclude related application summaries in the candidate response.
applications
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Candidate list
Type: object- Type: array object[] · Candidate[]
candidates requiredArray of candidates.
- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/candidates \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"candidates": [
{
"id": 12345,
"company_id": 1,
"first_name": "John",
"last_name": "Doe",
"emails": [
"john.doe@example.com"
],
"phones": [
"+1 5551234567"
],
"source": {
"id": 1,
"name": "LinkedIn"
},
"origin": {
"id": 1,
"name": "Direct"
},
"profile": [
{
"question_id": 1,
"question_text": "Email",
"value": [
"john.doe@example.com"
]
},
{
"question_id": 5,
"question_text": "Current job title",
"value": "Senior Developer"
}
],
"ip": null,
"created_at": 1711036800,
"updated_at": 1711036800,
"last_message_at": null,
"days_since_last_message": null
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Candidate list
Create candidate
Creates a candidate profile and optionally links it to a job/stage on creation. Common entrypoint for imports, inbound forms, and enrichment workflows.
- Type: string
city Candidate city. Used together with state/country to resolve timezone and location display in the profile header. If omitted or empty, taken from the candidate's 'City' profile answer when present.
- Type: integer
company _id Target company ID. Required only when the API key has access to multiple companies.
- Type: string
country Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US'). If omitted or empty, taken from the candidate's 'Country' profile answer when present.
- Type: object · FileData
cv - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: stringFormat: email
email Candidate email address. Used for deduplication.
- Type: string
first _name Candidate first name.
- Type: integer
job _id Job ID to create an application for this candidate. If omitted, candidate is created without an application.
- Type: string
last _name Candidate last name.
- Type: string
phone Candidate phone number.
- Type: object
profile Key-value map of profile field answers. Keys can be either question text (string) or question_id (integer from GET /questions). Library fields (First name, Last name, Email, Phone, etc.) and custom fields both support text-based keys. Example: {"Years of experience": "5"} or {"42": "5"}. Must be a JSON object — a JSON array or a plain string is rejected with 400 Validation Error. Every key must resolve to a question of the target company and every value must be acceptable for that question's type; otherwise the request is rejected with 400 Validation Error listing the offending keys in validation_errors.profile, and nothing is saved. Multi-value fields such as Email accept an array of values, e.g. {"Email": ["a@example.com", "b@example.com"]}. Yes/No questions take 1 or 0, as a number or as a string — send JSON false as 0, since a JSON false is indistinguishable from an empty value and is rejected.
property Name - Type: string
- Type: integer
stage _id Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage.
- Type: string
state Candidate state or region. If omitted or empty, taken from the candidate's 'State' profile answer when present.
- Type: string
timezone IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone.
Created candidate
Type: object- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/candidates \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"first_name": "Alice",
"last_name": "Johnson",
"email": "alice.johnson@example.com",
"job_id": 123,
"stage_id": 456,
"profile": {
"Current job title": "Senior Engineer",
"Current company": "Acme Corp"
}
}'
{
"id": 12346,
"alias": "kFm9Qr3",
"url_backoffice": "https://app.100hires.com/candidate/kFm9Qr3",
"company_id": 1,
"first_name": "Alice",
"last_name": "Johnson",
"emails": [
"alice.johnson@example.com"
],
"phones": [],
"source": {
"id": 2,
"name": "Referral"
},
"origin": {
"id": 1,
"name": "Direct"
},
"profile": [
{
"question_id": 1,
"question_text": "Email",
"value": [
"alice.johnson@example.com"
]
},
{
"question_id": 5,
"question_text": "Current job title",
"value": "Senior Engineer"
},
{
"question_id": 6,
"question_text": "Current company",
"value": "Acme Corp"
}
],
"ip": null,
"applications": [
{
"id": 503,
"job": {
"id": 123,
"title": "Backend Engineer"
},
"stage": {
"id": 456,
"name": "Applied"
}
}
],
"created_at": 1711036800,
"updated_at": 1711036800,
"last_message_at": null,
"days_since_last_message": null
}Created candidate
Get candidate
Returns full candidate data including application summaries.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
Candidate
Type: object- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 12345,
"alias": "dtGeby2",
"url_backoffice": "https://app.100hires.com/candidate/dtGeby2",
"company_id": 1,
"first_name": "John",
"last_name": "Doe",
"emails": [
"john.doe@example.com"
],
"phones": [
"+1 5551234567"
],
"source": {
"id": 1,
"name": "LinkedIn"
},
"origin": {
"id": 1,
"name": "Direct"
},
"profile": [
{
"question_id": 1,
"question_text": "Email",
"value": [
"john.doe@example.com"
]
},
{
"question_id": 5,
"question_text": "Current job title",
"value": "Senior Developer"
}
],
"ip": null,
"applications": [
{
"id": 501,
"job": {
"id": 123,
"title": "Backend Engineer"
},
"stage": {
"id": 10,
"name": "Interview"
}
}
],
"created_at": 1711036800,
"updated_at": 1711036800,
"last_message_at": null,
"days_since_last_message": null
}Candidate
Update candidate
Updates candidate fields, profile answers, and optional CV payload. Designed for bi-directional sync from ATS, CRM, sourcing, or enrichment tools.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: string
city Candidate city. Used together with state/country to resolve timezone and location display in the profile header. If omitted or empty, taken from the candidate's 'City' profile answer when present.
- Type: integer
company _id Target company ID. Required only when the API key has access to multiple companies.
- Type: string
country Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US'). If omitted or empty, taken from the candidate's 'Country' profile answer when present.
- Type: object · FileData
cv - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: stringFormat: email
email Candidate email address. Used for deduplication.
- Type: string
first _name Candidate first name.
- Type: integer
job _id Job ID to create an application for this candidate. If omitted, candidate is created without an application.
- Type: string
last _name Candidate last name.
- Type: string
phone Candidate phone number.
- Type: object
profile Key-value map of profile field answers. Keys can be either question text (string) or question_id (integer from GET /questions). Library fields (First name, Last name, Email, Phone, etc.) and custom fields both support text-based keys. Example: {"Years of experience": "5"} or {"42": "5"}. Must be a JSON object — a JSON array or a plain string is rejected with 400 Validation Error. Every key must resolve to a question of the target company and every value must be acceptable for that question's type; otherwise the request is rejected with 400 Validation Error listing the offending keys in validation_errors.profile, and nothing is saved. Multi-value fields such as Email accept an array of values, e.g. {"Email": ["a@example.com", "b@example.com"]}. Yes/No questions take 1 or 0, as a number or as a string — send JSON false as 0, since a JSON false is indistinguishable from an empty value and is rejected.
property Name - Type: string
- Type: integer
stage _id Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage.
- Type: string
state Candidate state or region. If omitted or empty, taken from the candidate's 'State' profile answer when present.
- Type: string
timezone IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone.
Updated candidate
Type: object- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}' \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"first_name": "",
"last_name": "",
"email": "",
"phone": "",
"profile": {
"additionalProperty": ""
},
"job_id": 1,
"stage_id": 1,
"cv": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
},
"city": "",
"state": "",
"country": "",
"timezone": ""
}'
{
"id": 12345,
"alias": "dtGeby2",
"url_backoffice": "https://app.100hires.com/candidate/dtGeby2",
"company_id": 1,
"first_name": "Alice",
"last_name": "Johnson",
"emails": [
"alice.johnson@example.com"
],
"phones": [
"+1 5559876543"
],
"source": {
"id": 2,
"name": "Referral"
},
"origin": {
"id": 1,
"name": "Direct"
},
"profile": [
{
"question_id": 1,
"question_text": "Email",
"value": [
"alice.johnson@example.com"
]
},
{
"question_id": 5,
"question_text": "Current job title",
"value": "Senior Engineer"
}
],
"ip": null,
"applications": [
{
"id": 502,
"job": {
"id": 123,
"title": "Backend Engineer"
},
"stage": {
"id": 11,
"name": "Offer"
}
}
],
"created_at": 1711036800,
"updated_at": 1711123200,
"last_message_at": null,
"days_since_last_message": null
}Updated candidate
Delete candidate
Deletes a candidate. Use this to keep external systems aligned with candidate lifecycle policies.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
List candidate tags
Returns all tags assigned to a candidate. Useful for segmentation sync and audience-based automations.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
Candidate tags
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array string[]
tags requiredArray of tags.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/tags' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"tags": [
"Senior",
"Engineering",
"Remote"
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 3
}
}Candidate tags
Attach tags to candidate
Adds one or more tags to a candidate in a single request. Typical use case: campaign tagging, qualification labels, and source attribution.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: array string[]
tags requiredArray of tag strings to add.
Updated candidate tags
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array string[]
tags requiredArray of tags.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/tags' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"tags": [
""
]
}'
{
"tags": [
"Senior",
"Engineering",
"Remote",
"Urgent"
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 4
}
}Updated candidate tags
Delete candidate tag
Removes a specific tag from a candidate. Use when external logic recalculates segmentation or lifecycle labels.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: string
tag requiredTag text (case-sensitive, URL-encoded).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/tags/{tag}' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
List candidate files
Lists candidate attachments and metadata (resume/other files). Use for document sync, compliance exports, and recruiter tooling.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Candidate files
Type: object- Type: array · CandidateFile[]
files requiredArray of candidate files.
- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/files' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"files": [
{
"uuid": "7a3c0d5f-8b4e-4a9f-9e1c-2a3b4c5d6e7f",
"url": "https://api.100hires.com/v2/attachments/candidate/7a3c0d5f-8b4e-4a9f-9e1c-2a3b4c5d6e7f/john_doe_resume.pdf",
"relative_time": "2 days ago",
"file": {
"is_image": false,
"orig_file_name": "john_doe_resume.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "240 KB"
}
},
{
"uuid": "9c2b4d6e-1a8f-4d7c-8b5e-3c9a0d2e4f6b",
"url": "https://api.100hires.com/v2/attachments/candidate/9c2b4d6e-1a8f-4d7c-8b5e-3c9a0d2e4f6b/portfolio.pdf",
"relative_time": "1 day ago",
"file": {
"is_image": false,
"orig_file_name": "portfolio.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "1 MB"
}
}
]
}Candidate files
Upload candidate file
Uploads a new file for a candidate using base64 payload. Useful for resume ingestion, portfolio uploads, and post-processing pipelines.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: object · FileData
file required- Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
Uploaded file
Type: object · ApiAttachmentUnified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/files' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"file": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"uuid": "4e8a2f1b-5c7d-4f9e-8a3b-6d1e2f3a4b5c",
"url": "https://api.100hires.com/v2/attachments/candidate/4e8a2f1b-5c7d-4f9e-8a3b-6d1e2f3a4b5c/cover_letter.pdf",
"relative_time": "a few seconds ago",
"file": {
"is_image": false,
"orig_file_name": "cover_letter.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "100 KB"
}
}Uploaded file
Get candidate resume
Returns the primary candidate resume with file metadata. Use ?include=text_content to get the parsed plain-text content without downloading and parsing the file yourself.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: string
include Comma-separated list of optional fields to include. Supported:
text_content— parsed plain-text content of the resume file.
Resume file
Resume file with optional parsed text content (when
?include=text_contentis used, the response includes atextfield with the parsed plain-text content).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text content of the resume. Only included when
?include=text_contentis specified ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested. May be null if the file format is unsupported or parsing fails.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/resume' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"uuid": "7a3c0d5f-8b4e-4a9f-9e1c-2a3b4c5d6e7f",
"url": "https://api.100hires.com/v2/attachments/candidate/7a3c0d5f-8b4e-4a9f-9e1c-2a3b4c5d6e7f/john_doe_resume.pdf",
"relative_time": "2 days ago",
"file": {
"is_image": false,
"orig_file_name": "john_doe_resume.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "240 KB"
},
"text": "John Doe\nSenior Developer\n\nExperience:\n- Acme Corp, 2019-2024\n- Beta Inc, 2016-2019"
}Resume file
List candidate activities
Returns timeline activities for a candidate with pagination. Use ?event_type=comment,copilot_response to filter by specific event types, and ?since=…&until=… (Unix timestamp in seconds) to constrain the time window.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: integer
page min:1Page number (1-based).
- Type: integer
size min:1max:100Page size. Values above 100 are rejected with 400. Default 20, max 100.
- Type: string
event _type Comma-separated list of event types to filter by. Supported:
comment,copilot_response,stage_moved,automation_action_triggered,assign_job,enrichment,call,validate_emails,profile_mutation,qualification,assign_tags,assign_sources,candidate_rate. since Inclusive lower bound on event timestamp. Accepts a Unix timestamp (seconds) or an ISO-8601 string with timezone offset (e.g.
2026-04-01T00:00:00Z,2026-04-01T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
until Inclusive upper bound on event timestamp. Accepts a Unix timestamp (seconds) or an ISO-8601 string with timezone offset (e.g.
2026-04-01T00:00:00Z,2026-04-01T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Candidate activities
Type: object- Type: array object[] · Activity[]
activities requiredArray of activity events.
- Type: integer | null
application _id requiredID of the job application this event is linked to, if any
- Type: integer
candidate _id requiredID of the candidate this event belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
event requiredShared structure for all text-bubble events: assign_job, candidate_rate, assign_sources, assign_tags, qualification, profile_mutation, validate_emails, stage_moved, enrichment, automation_action_triggered.
- Type: object
data requiredEvent data payload.
- Type: string
date requiredShort formatted date (e.g. "Jan 1")
- Type: string
full _time requiredFull formatted datetime string
- Type: string
relative _time requiredHuman-readable relative time (e.g. "2 days ago")
- Type: string
text requiredHTML-formatted description of the event
- Type: integer nullable
from _stage _id Pipeline stage ID the candidate was in before qualification/disqualification. Only present for
qualificationevents. - Type: string nullable
from _stage _name Pipeline stage name the candidate was in before qualification/disqualification. Only present for
qualificationevents.
- enum
is _text _bubble const:truerequiredAlways true for text bubble events.
true
- Type: stringenum
type requiredEvent type identifier.
assign _job candidate _rate assign _sources assign _tags qualification
- Type: integer
event _id requiredUnique ID of the timeline event
- Type: integer | null
user _id requiredID of the user who triggered this event, if applicable
- Type: integer
page _size requiredItems per page. Duplicated at top level for backward compatibility (also available in
pagination.page_size). - Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/activities' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"activities": [
{
"event_id": 80001,
"candidate_id": 12345,
"application_id": 501,
"user_id": 42,
"event": {
"type": "stage_moved",
"is_text_bubble": true,
"data": {
"text": "Moved from <b>Applied</b> to <b>Interview</b>",
"date": "Mar 22",
"relative_time": "2 days ago",
"full_time": "2024-03-22 10:30:00"
}
},
"created_at": 1711100200
},
{
"event_id": 80002,
"candidate_id": 12345,
"application_id": null,
"user_id": 42,
"event": {
"type": "comment",
"comment": {
"id": 3001,
"candidate_id": 12345,
"user_id": 42,
"author": "Jane Smith",
"photo": "https://app.100hires.com/photos/42.jpg",
"text": "Strong technical skills, recommend for next round.",
"date": "Mar 22",
"datetime": "2024-03-22 14:00:00",
"relative_time": "2 days ago",
"visible": "all",
"is_edit": false,
"attachments": []
}
},
"created_at": 1711112400
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 2
}
}Candidate activities
Disqualify candidate from active applications
Disqualifies candidate applications in one action and returns affected application IDs. Typical for policy-driven rejection or bulk automation rules.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: array
reasons Array of rejection reason IDs from GET /taxonomy/rejection-reasons.
- Type: integer
Integer numbers.
Disqualified
Type: object- Type: array integer[]
rejected _applications requiredArray of rejected application IDs.
- Type: boolean
success requiredWhether disqualification succeeded.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/disqualify' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"reasons": [
1
]
}'
{
"success": true,
"rejected_applications": [
501,
502
]
}Disqualified
Batch add tags to candidates
Adds tags to multiple candidates in one request. Accepts candidate IDs or aliases. Returns per-item results with partial success support.
- Type: array integer[] …100
ids requiredCandidate IDs to tag (max 100)
- Type: array string[]
tags requiredTag names to attach
Batch results with per-item success/failure
Type: object- Type: array object[] · BatchResultItem[]
results requiredArray of per-item results.
id required- Type: integer
Entity ID or alias from the request
- Type: object
data Entity payload on success. Present only when the item succeeded.
- Type: object
error Structured error object on failure. Present only when the item failed. Same format as top-level API errors.
- Type: integer
code Integer numbers.
- Type: string
message - Type: string
name - Type: integer
status Integer numbers.
- Type: object
validation _errors - Type: string
property Name
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/candidates/batch/tags \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"ids": [
1
],
"tags": [
""
]
}'
{
"results": [
{
"id": 12345,
"data": {
"tags": [
"Senior",
"Engineering",
"Remote"
]
}
},
{
"id": "dtGeby2",
"error": {
"name": "Not Found",
"message": "Candidate not found",
"status": 404
}
}
]
}Batch results with per-item success/failure
Batch remove tags from candidates
Removes specified tags from multiple candidates in one request. Returns per-item results with partial success support.
- Type: array integer[] …100
ids requiredCandidate IDs to tag (max 100)
- Type: array string[]
tags requiredTag names to attach
Batch results with per-item success/failure
Type: object- Type: array object[] · BatchResultItem[]
results requiredArray of per-item results.
id required- Type: integer
Entity ID or alias from the request
- Type: object
data Entity payload on success. Present only when the item succeeded.
- Type: object
error Structured error object on failure. Present only when the item failed. Same format as top-level API errors.
- Type: integer
code Integer numbers.
- Type: string
message - Type: string
name - Type: integer
status Integer numbers.
- Type: object
validation _errors - Type: string
property Name
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/candidates/batch/tags \
--request DELETE \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"ids": [
1
],
"tags": [
""
]
}'
{
"results": [
{
"id": 12345,
"data": {
"tags": []
}
},
{
"id": "dtGeby2",
"error": {
"name": "Not Found",
"message": "Candidate not found",
"status": 404
}
}
]
}Batch results with per-item success/failure
Applications
Application lifecycle: creation, stage movement, rejection/hire actions, and attachments.
- get/applications
- post/applications
- get/applications/{id}
- put/applications/{id}
- delete/applications/{id}
- get/applications/{id}/ai-score
- get/applications/{id}/stage-history
- post/applications/{id}/move
- post/applications/{id}/hire
- post/applications/{id}/reject
- post/applications/{id}/advance
- post/applications/{id}/transfer
- post/applications/{id}/unreject
- get/applications/{id}/attachments
- post/applications/{id}/attachments
- post/applications/batch/move
- post/applications/batch/reject
List applications
Returns paginated applications across accessible companies or for a target company. Supports filtering by AI score range via ai_score_min and ai_score_max. Core endpoint for pipeline analytics, sync jobs, and ATS dashboards.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
candidate _id Filter applications by candidate ID.
- Type: integer
job _id Filter applications by job ID.
- Type: integer
stage _id Filter applications by pipeline stage ID. Best used together with job_id.
- Type: stringenum
status Filter by application status:
pending(active),hired, orrejected.pending hired rejected
created _after Return only applications created at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
updated _after Return only applications updated at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds. Use for incremental sync.- Type: integermin:0
Integer numbers.
- Type: integer
ai _score _min Return only applications with
ai_scoregreater than or equal to this value. - Type: integer
ai _score _max Return only applications with
ai_scoreless than or equal to this value. - Type: stringenum
sort Sort order. Prefix with
-for descending. Default:-created_at.created _at -created _at ai _score -ai _score last _message _at -last _message _at
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking. - Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Application list
Type: object- Type: array object[] · Application[]
applications requiredArray of applications.
- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"applications": [
{
"id": 10,
"candidate_id": 10,
"job_id": 1,
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 3,
"name": "Phone screen"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": null,
"ai_recommendation": null,
"ai_scoring_updated_at": null,
"created_at": 1606348802,
"updated_at": 1606348802,
"last_message_at": null,
"days_since_last_message": null,
"candidate": {
"id": 10,
"company_id": 1,
"first_name": "",
"last_name": "",
"emails": null,
"phones": null,
"source": null,
"origin": {
"id": 5,
"name": "added_manually"
},
"profile": [],
"created_at": 1606176005,
"updated_at": 1606176005,
"last_message_at": null,
"days_since_last_message": null,
"ip": null
}
}
],
"pagination": {
"page": 1,
"page_count": 1,
"page_size": 25,
"total_count": 10
}
}Application list
Create application
Creates an application by linking an existing candidate to a job, with optional stage/CV. Use for sourcing workflows and manual application ingestion.
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
- Type: string
candidate _id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: integer
job _id requiredJob ID to apply the candidate to.
- Type: object · FileData
cv - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: integer
stage _id Pipeline stage ID. If omitted, defaults to the first stage.
Created application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"candidate_id": "",
"job_id": 1,
"stage_id": 1,
"cv": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 10,
"name": "New"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": null,
"ai_recommendation": null,
"ai_scoring_updated_at": null,
"created_at": 1711036800,
"updated_at": 1711036800,
"last_message_at": null,
"days_since_last_message": null
}Created application
Get application
Returns full application payload with stage/status/rejection context. Recommended before mutating stage transitions in external automations.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
Application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 12,
"name": "Phone screen"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": [
{
"id": 5,
"full_name": "Jane Smith",
"email": "jane@example.com",
"role": "recruiter"
}
],
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711123200,
"last_message_at": null,
"days_since_last_message": null
}Application
Update application
Updates application-level fields such as stage, disqualification flag, and CV. Supports external pipeline management and data correction flows.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
- Type: object · FileData
cv - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: boolean
is _disqualified Set to true to disqualify the candidate on this application.
- Type: integer
stage _id Move application to this pipeline stage.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"stage_id": 1,
"is_disqualified": true,
"cv": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 14,
"name": "Offer"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Delete application
Deletes an application and removes it from default list/view queries.
- Type: integer
id requiredResource ID (numeric).
Application deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Application deleted
Get application AI score
Returns the latest machine-readable AI score for an application. This is separate from candidate timeline copilot_response events and returns the same structured payload shape as ManageEvaluation::toArrayApplicationScore.
- Type: integer
id requiredResource ID (numeric).
Structured AI score payload for the latest application scoring result
Type: object- Type: object · ApplicationAiScorePayload nullable
score required- Type: array object[] · ApplicationAiScoreCriterion[]
criteria requiredArray of scoring criteria with scores.
- Type: string
criterion _text requiredFull criterion description.
- Type: string | null
justification requiredAI explanation for the score.
- Type: integer
score requiredScore for this criterion (0-100).
- Type: string | null
criterion _title Short criterion title.
- Type: array string[] | null nullable
followup _questions
- Type: string | null
date requiredScoring date.
- Type: integer
job _id requiredJob ID.
- Type: string | null
job _title requiredJob title.
- Type: string | null
job _url requiredJob URL.
- Type: integer
rate requiredOverall recommendation (e.g. strong_yes, yes, no).
- Type: string | null
summary requiredAI-generated summary.
- Type: integer | null
total _score requiredTotal score (0-100).
- Type: string | null
uuid requiredUnique scoring session ID.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/ai-score \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"score": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"job_id": 7,
"job_title": "Senior Backend Developer",
"job_url": "https://app.100hires.com/jobs/7",
"summary": "Strong backend experience with relevant tech stack. Could improve on system design depth.",
"total_score": 72,
"criteria": [
{
"criterion_title": "Technical Skills",
"criterion_text": "Proficiency in required programming languages and frameworks",
"score": 80,
"justification": "Demonstrated strong PHP and Python skills with 5+ years of experience.",
"followup_questions": [
"Can you describe your experience with distributed systems?"
]
},
{
"criterion_title": "Experience",
"criterion_text": "Relevant industry and role experience",
"score": 65,
"justification": "Has backend experience but limited exposure to high-scale systems.",
"followup_questions": null
}
],
"rate": 72,
"date": "2024-03-22"
}
}Structured AI score payload for the latest application scoring result
Get application stage history
Returns the ordered list of stage transitions for one application — including the initial stage assignment (where from_stage_id is null) — in a single response.
Use this instead of paginating through /candidates/{id}/activities when you only need stage-transition data (funnel analysis, time-in-stage reports).
moved_by_type is one of:
user— manual move by an authenticated user (moved_by_user_idis set)automation— move driven by an automation rule / form watchersystem— initial assignment or other non-user, non-automation source
- Type: integer
id requiredResource ID (numeric).
Full chronological stage transition history for an application, including the initial assignment.
Type: object- Type: array object[] · ApplicationStageHistoryEntry[]
history requiredChronological list of stage transitions (oldest first), including the initial assignment.
- Type: integer nullable
from _stage _id requiredPrevious stage id.
nullfor the initial assignment. - Type: string nullable
from _stage _name requiredPrevious stage name.
nullfor the initial assignment. - Type: integerFormat: int64
moved _at requiredUnix timestamp (seconds) of the transition.
- Type: stringenum
moved _by _type requiredWho/what initiated the move.
user= manual move,automation= automation rule/form watcher,system= initial assignment or unattributed.user automation system
- Type: integer nullable
moved _by _user _id requiredID of the user that performed the move. Populated only when
moved_by_type = user. - Type: string nullable
source requiredWhat caused the transition. Format:
<assign_type>or<assign_type>:<board_name>. Examples:apply:indeed,form_watcher,user,api_v2.nullfor historical records created before source tracking was added. - Type: integer
to _stage _id requiredStage id the application was moved to.
- Type: string nullable
to _stage _name requiredStage name the application was moved to.
nullif the stage has been hard-deleted.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/stage-history \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"history": [
{
"from_stage_id": null,
"from_stage_name": null,
"to_stage_id": 15941,
"to_stage_name": "Applied",
"moved_at": 1731713700,
"moved_by_type": "system",
"moved_by_user_id": null
},
{
"from_stage_id": 15941,
"from_stage_name": "Applied",
"to_stage_id": 16827,
"to_stage_name": "Send screening email",
"moved_at": 1731713760,
"moved_by_type": "automation",
"moved_by_user_id": null
},
{
"from_stage_id": 16827,
"from_stage_name": "Send screening email",
"to_stage_id": 16828,
"to_stage_name": "Technical interview",
"moved_at": 1731800100,
"moved_by_type": "user",
"moved_by_user_id": 42
}
]
}Full chronological stage transition history for an application, including the initial assignment.
Move application to stage
Moves an application to a specific pipeline stage. This is the explicit stage transition endpoint for workflow orchestration.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
- Type: integer
stage _id requiredTarget pipeline stage ID.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/move \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"stage_id": 456
}'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 456,
"name": "Technical interview"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Mark application as hired
Marks an application as hired using domain rules from the current workflow. Use as the finalization step in hiring automations.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/hire \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 15,
"name": "Hired"
},
"status": "hired",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": 1711296000,
"hiring_team": [
{
"id": 5,
"full_name": "Jane Smith",
"email": "jane@example.com",
"role": "recruiter"
}
],
"custom_fields": null,
"ai_score": 85,
"ai_recommendation": "Strong Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711296000,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Reject application
Rejects an application with optional rejection reason and note context. Standard endpoint for rejection workflows and reporting consistency.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
- Type: integer
rejection _reason _id Rejection reason ID from GET /taxonomy/rejection-reasons.
- Type: boolean
suppress _notification Set to true to skip sending the rejection email to the candidate.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/reject \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"rejection_reason_id": 1,
"suppress_notification": true
}'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 12,
"name": "Phone screen"
},
"status": "rejected",
"is_disqualified": false,
"cv": null,
"rejected_at": 1711209600,
"rejection_reason": [
{
"id": 3,
"name": "Not enough experience"
}
],
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Advance application to next stage
Advances the application to the next stage according to workflow order.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/advance \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 13,
"name": "Technical interview"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Transfer application to another job
Transfers an application to another job with optional target stage.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
- Type: integer
job _id requiredTarget job ID to transfer the application to.
- Type: integer
stage _id Pipeline stage ID on the target job. If omitted, defaults to the first stage.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/transfer \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"job_id": 1,
"stage_id": 1
}'
{
"id": 510,
"candidate_id": 42,
"job_id": 15,
"job_alias": "Kx9mPqW",
"internal_job_id": "ENG-042",
"company_id": 1,
"stage": {
"id": 20,
"name": "New"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": null,
"ai_recommendation": null,
"ai_scoring_updated_at": null,
"created_at": 1711209600,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
Undo application rejection
Reopens a previously rejected application. Use for recovery flows, reconsideration pipelines, and human override operations.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate— full candidate profile,cv.text— parsed plain-text CV content,job— full job payload withurl_backofficefor UI deep-linking.
Updated application
Type: object- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/unreject \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 501,
"candidate_id": 42,
"job_id": 7,
"job_alias": "79SZHfT",
"internal_job_id": "",
"company_id": 1,
"stage": {
"id": 12,
"name": "Phone screen"
},
"status": "active",
"is_disqualified": false,
"cv": null,
"rejected_at": null,
"rejection_reason": null,
"hired_at": null,
"hiring_team": null,
"custom_fields": null,
"ai_score": 72,
"ai_recommendation": "Probably Yes",
"ai_scoring_updated_at": 1711036800,
"created_at": 1711036800,
"updated_at": 1711209600,
"last_message_at": null,
"days_since_last_message": null
}Updated application
List application attachments
Lists attachments linked to an application.
- Type: integer
id requiredResource ID (numeric).
Attachment list
Type: array · ApplicationAttachment[]- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/attachments \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
[
{
"uuid": "55aaaaaa-bbbb-cccc-dddd-555555555555",
"url": "https://api.100hires.com/v2/attachments/application/55aaaaaa-bbbb-cccc-dddd-555555555555/resume_john_doe.pdf",
"relative_time": "2 days ago",
"file": {
"is_image": false,
"orig_file_name": "resume_john_doe.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "100 KB"
}
},
{
"uuid": "56bbbbbb-cccc-dddd-eeee-666666666666",
"url": "https://api.100hires.com/v2/attachments/application/56bbbbbb-cccc-dddd-eeee-666666666666/cover_letter.docx",
"relative_time": "1 day ago",
"file": {
"is_image": false,
"orig_file_name": "cover_letter.docx",
"file_ext": "docx",
"file_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"readable_size": "50 KB"
}
}
]Attachment list
Upload application attachment
Uploads an attachment directly to the application context. Commonly used for signed documents and interviewer artifacts.
- Type: integer
id requiredResource ID (numeric).
- Type: object · FileData
file required- Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
Uploaded attachment
Type: object · ApiAttachmentUnified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/attachments \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"file": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"uuid": "88cccccc-dddd-eeee-ffff-888888888888",
"url": "https://api.100hires.com/v2/attachments/application/88cccccc-dddd-eeee-ffff-888888888888/offer_letter.pdf",
"relative_time": "a few seconds ago",
"file": {
"is_image": false,
"orig_file_name": "offer_letter.pdf",
"file_ext": "pdf",
"file_type": "application/pdf",
"readable_size": "200 KB"
},
"created_at": 1711036800
}Uploaded attachment
Batch move applications to stage
Moves multiple applications to a specified pipeline stage in one request. Returns per-item results with partial success support.
- Type: array integer[] …100
ids requiredApplication IDs to move (max 100)
- Type: integer
stage _id requiredTarget pipeline stage ID
Batch results with per-item success/failure
Type: object- Type: array object[] · BatchResultItem[]
results requiredArray of per-item results.
id required- Type: integer
Entity ID or alias from the request
- Type: object
data Entity payload on success. Present only when the item succeeded.
- Type: object
error Structured error object on failure. Present only when the item failed. Same format as top-level API errors.
- Type: integer
code Integer numbers.
- Type: string
message - Type: string
name - Type: integer
status Integer numbers.
- Type: object
validation _errors - Type: string
property Name
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/batch/move \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"ids": [
101,
102,
103
],
"stage_id": 456
}'
{
"results": [
{
"id": 101,
"data": {
"id": 101,
"candidate_id": 42,
"job_id": 7,
"stage": {
"id": 456,
"name": "Technical interview"
},
"status": "active"
}
},
{
"id": 102,
"data": {
"id": 102,
"candidate_id": 43,
"job_id": 7,
"stage": {
"id": 456,
"name": "Technical interview"
},
"status": "active"
}
},
{
"id": 103,
"error": {
"name": "Application not found",
"message": "",
"code": 0,
"status": 404
}
}
]
}Batch results with per-item success/failure
Batch reject applications
Rejects multiple applications in one request with optional rejection reason. Returns per-item results with partial success support.
- Type: array integer[] …100
ids requiredApplication IDs to reject (max 100)
- Type: integer
rejection _reason _id Optional rejection reason ID
Batch results with per-item success/failure
Type: object- Type: array object[] · BatchResultItem[]
results requiredArray of per-item results.
id required- Type: integer
Entity ID or alias from the request
- Type: object
data Entity payload on success. Present only when the item succeeded.
- Type: object
error Structured error object on failure. Present only when the item failed. Same format as top-level API errors.
- Type: integer
code Integer numbers.
- Type: string
message - Type: string
name - Type: integer
status Integer numbers.
- Type: object
validation _errors - Type: string
property Name
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/batch/reject \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"ids": [
1
],
"rejection_reason_id": 1
}'
{
"results": [
{
"id": 201,
"data": {
"id": 201,
"candidate_id": 42,
"job_id": 7,
"status": "rejected",
"rejected_at": 1711209600,
"rejection_reason": [
{
"id": 3,
"name": "Not enough experience"
}
]
}
},
{
"id": 202,
"data": {
"id": 202,
"candidate_id": 43,
"job_id": 7,
"status": "rejected",
"rejected_at": 1711209600,
"rejection_reason": [
{
"id": 3,
"name": "Not enough experience"
}
]
}
},
{
"id": 203,
"error": {
"name": "Application not found",
"message": "",
"code": 0,
"status": 404
}
}
]
}Batch results with per-item success/failure
Interviews
Interview scheduling: list, view, and create interviews linked to applications and candidates.
List candidate interviews
Returns all interviews linked to a candidate across all their applications. Useful for candidate timeline views and scheduling conflict detection.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Interview list
Type: object- Type: array object[] · Interview[]
interviews requiredArray of interviews.
- Type: integer
application _id requiredID of the related application
- Type: integer
candidate _id requiredID of the related candidate
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integerFormat: int64
end _time requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[]
interviewers requiredList of interviewers participating in this interview
- Type: string
email - Type: string
name - Type: integer
user _id Integer numbers.
- Type: integer
job _id requiredID of the related job
- Type: integerFormat: int64
start _time requiredUnix timestamp (seconds)
- Type: stringenum
status requiredInterview status
scheduled completed
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object · Application
application Embedded application data (included when requested)
- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Candidate
candidate Embedded candidate data (included when requested)
- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Job
job Embedded job data (included when requested)
- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
location Physical location of the interview
- Type: string | null
meeting _url Video conferencing or meeting URL
- Type: object · IdName nullable
stage Pipeline stage at the time the interview was scheduled
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's interviews tab in the 100Hires recruiter app where this interview appears. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/interviews' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"interviews": [
{
"id": 7001,
"application_id": 501,
"job_id": 123,
"candidate_id": 12345,
"start_time": 1711195200,
"end_time": 1711198800,
"status": "scheduled",
"interviewers": [
{
"user_id": 42,
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
],
"location": null,
"meeting_url": "https://meet.google.com/abc-defg-hij",
"stage": {
"id": 10,
"name": "Interview"
},
"created_at": 1711036800,
"updated_at": 1711036800,
"last_message_at": null,
"days_since_last_message": null
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Interview list
Create interview
Schedules a new interview for an application. Creates a session if none exists for the given date. Location string is resolved to an existing location record or created automatically.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate,application,job.
- Type: integerFormat: int64
end _time requiredUnix timestamp (seconds, must be greater than start_time)
- Type: array integer[]
interviewer _ids requiredList of user IDs who will conduct the interview
- Type: integerFormat: int64
start _time requiredUnix timestamp (seconds)
- Type: string
location max length:255Location string; resolved to existing record or created automatically
Created interview
Type: object- Type: integer
application _id requiredID of the related application
- Type: integer
candidate _id requiredID of the related candidate
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integerFormat: int64
end _time requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[]
interviewers requiredList of interviewers participating in this interview
- Type: string
email - Type: string
name - Type: integer
user _id Integer numbers.
- Type: integer
job _id requiredID of the related job
- Type: integerFormat: int64
start _time requiredUnix timestamp (seconds)
- Type: stringenum
status requiredInterview status
scheduled completed
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object · Application
application Embedded application data (included when requested)
- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Candidate
candidate Embedded candidate data (included when requested)
- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Job
job Embedded job data (included when requested)
- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
location Physical location of the interview
- Type: string | null
meeting _url Video conferencing or meeting URL
- Type: object · IdName nullable
stage Pipeline stage at the time the interview was scheduled
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's interviews tab in the 100Hires recruiter app where this interview appears. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/interviews \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"start_time": 1,
"end_time": 1,
"interviewer_ids": [
1
],
"location": ""
}'
{
"id": 501,
"application_id": 100,
"job_id": 10,
"candidate_id": 12345,
"start_time": 1711180800,
"end_time": 1711184400,
"status": "scheduled",
"interviewers": [
{
"user_id": 5,
"name": "Sarah Connor",
"email": "sarah@example.com"
}
],
"location": "Conference Room A",
"meeting_url": "https://zoom.us/j/123456789",
"stage": {
"id": 3,
"name": "Technical interview"
},
"created_at": 1711036800,
"updated_at": 1711036800
}Created interview
List interviews
Returns a paginated list of interviews. Supports filtering by job, application, candidate, date, and timestamp for incremental sync.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
job _id Filter interviews by job ID.
- Type: integer
application _id Filter interviews by application ID.
- Type: integer
candidate _id Filter interviews by candidate ID.
- Type: integer
interviewer _user _id Filter interviews by interviewer user ID. Can be combined with other interview list filters.
- Type: stringFormat: date
date Filter by interview date (YYYY-MM-DD, UTC).
created _after Return only interviews created at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
updated _after Return only interviews updated at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate,application,job. - Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Interview list
Type: object- Type: array object[] · Interview[]
interviews requiredArray of interviews.
- Type: integer
application _id requiredID of the related application
- Type: integer
candidate _id requiredID of the related candidate
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integerFormat: int64
end _time requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[]
interviewers requiredList of interviewers participating in this interview
- Type: string
email - Type: string
name - Type: integer
user _id Integer numbers.
- Type: integer
job _id requiredID of the related job
- Type: integerFormat: int64
start _time requiredUnix timestamp (seconds)
- Type: stringenum
status requiredInterview status
scheduled completed
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object · Application
application Embedded application data (included when requested)
- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Candidate
candidate Embedded candidate data (included when requested)
- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Job
job Embedded job data (included when requested)
- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
location Physical location of the interview
- Type: string | null
meeting _url Video conferencing or meeting URL
- Type: object · IdName nullable
stage Pipeline stage at the time the interview was scheduled
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's interviews tab in the 100Hires recruiter app where this interview appears. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/interviews \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"interviews": [
{
"id": 501,
"application_id": 100,
"job_id": 10,
"candidate_id": 12345,
"start_time": 1711180800,
"end_time": 1711184400,
"status": "scheduled",
"interviewers": [
{
"user_id": 5,
"name": "Sarah Connor",
"email": "sarah@example.com"
}
],
"location": "Conference Room A",
"meeting_url": "https://zoom.us/j/123456789",
"stage": {
"id": 3,
"name": "Technical interview"
},
"created_at": 1711036800,
"updated_at": 1711036800
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Interview list
Get interview
Returns full interview details. Use include to load related candidate, application, or job payloads.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
candidate,application,job.
Interview
Type: object- Type: integer
application _id requiredID of the related application
- Type: integer
candidate _id requiredID of the related candidate
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integerFormat: int64
end _time requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[]
interviewers requiredList of interviewers participating in this interview
- Type: string
email - Type: string
name - Type: integer
user _id Integer numbers.
- Type: integer
job _id requiredID of the related job
- Type: integerFormat: int64
start _time requiredUnix timestamp (seconds)
- Type: stringenum
status requiredInterview status
scheduled completed
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object · Application
application Embedded application data (included when requested)
- Type: integer
candidate _id requiredID of the candidate
- Type: integer
company _id requiredID of the company
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _disqualified requiredWhether the candidate is disqualified for this application
- Type: integer
job _id requiredID of the job
- Type: stringenum
status requiredApplication status. Changes via hire/reject/unreject actions.
active hired rejected
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
ai _recommendation AI-generated recommendation label (e.g. Strong, Good, Weak)
- Type: integer | null
ai _score AI-generated candidate fit score (0-100)
- Type: integer | nullFormat: int64
ai _scoring _updated _at Unix timestamp (seconds) of the latest completed AI scoring result
- Type: object · ApplicationCandidate nullable
candidate Embedded candidate data (included when requested via
include=candidate)- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: array object[] · ProfileAnswer[]
profile requiredCandidate profile field answers
- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: object · IdName nullable
source How the candidate was sourced
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object nullable
custom _fields Custom field values as key-value pairs
- Type: anything
property Name
- nullable
cv Application CV. Returns standard attachment metadata + download URL. When
?include=cv.textis requested, atextfield with parsed plain-text content is added.- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string nullable
text Parsed plain-text CV content. Included only when
?include=cv.textis requested ANDview=full(the default). Suppressed whenview=summaryeven if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: integer | nullFormat: int64
hired _at Unix timestamp (seconds)
- Type: array object[] | null · JobHiringTeamMember[] nullable
hiring _team Team members assigned to this application's job
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: string | null
internal _job _id Company's internal job identifier
- Type: object · Job nullable
job Embedded job payload (included when requested via
include=job). Usejob.url_backofficeto deep-link UI widgets to the job's pipeline view in the recruiter app.- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
job _alias Short alias of the job, usable in URLs (e.g. 79SZHfT)
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
- Type: integer | nullFormat: int64
rejected _at Unix timestamp (seconds)
- Type: array object[] | null · IdName[] nullable
rejection _reason Reasons for rejection. Null if not rejected.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
stage Current pipeline stage of the application
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Candidate
candidate Embedded candidate data (included when requested)
- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Job
job Embedded job data (included when requested)
- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: string | null
location Physical location of the interview
- Type: string | null
meeting _url Video conferencing or meeting URL
- Type: object · IdName nullable
stage Pipeline stage at the time the interview was scheduled
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's interviews tab in the 100Hires recruiter app where this interview appears. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/interviews/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 501,
"application_id": 100,
"job_id": 10,
"candidate_id": 12345,
"start_time": 1711180800,
"end_time": 1711184400,
"status": "scheduled",
"interviewers": [
{
"user_id": 5,
"name": "Sarah Connor",
"email": "sarah@example.com"
}
],
"location": "Conference Room A",
"meeting_url": "https://zoom.us/j/123456789",
"stage": {
"id": 3,
"name": "Technical interview"
},
"created_at": 1711036800,
"updated_at": 1711036800
}Interview
Jobs
Job lifecycle and publishing: CRUD, status transitions, hiring team, boards, and webhooks.
- get/jobs
- post/jobs
- get/jobs/{id}
- put/jobs/{id}
- delete/jobs/{id}
- patch/jobs/{id}/status
- get/jobs/{id}/hiring-team
- post/jobs/{id}/hiring-team
- get/jobs/{id}/webhooks
- post/jobs/{id}/webhooks
- post/jobs/{id}/webhooks/{webhook_id}/rotate-secret
- delete/jobs/{id}/webhooks/{webhook_id}
- get/jobs/{id}/job-boards
- post/jobs/{id}/job-boards
- delete/jobs/{id}/job-boards
- get/jobs/batch-job-boards
- post/jobs/batch-job-boards
- delete/jobs/batch-job-boards
List jobs
Returns paginated jobs with status/date filters. Use for career-site sync, reporting, and external system indexing.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: string
status Filter by job status name (from GET /taxonomy/statuses, e.g.
Public,Draft,Archived). created _at _start Return only jobs created at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
created _at _end Return only jobs created at or before this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
updated _after Return only jobs updated at or after this time. Accepts a Unix timestamp in seconds (not milliseconds) or an ISO-8601 string with timezone offset (e.g.
2026-05-11T00:00:00Z,2026-05-11T00:00:00.123+03:00). Fractional seconds are accepted but truncated to whole seconds. Use for incremental sync.- Type: integermin:0
Integer numbers.
- Type: integer
department _id Filter jobs by department ID (from GET /taxonomy/departments).
- Type: string
q Search by job title or internal title (partial match)
- Type: string
include Comma-separated list of related resources to include. Supported:
workflow,hiring_team,pipeline_stages. - Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Job list
Type: object- Type: array object[] · Job[]
jobs requiredArray of jobs.
- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"jobs": [
{
"id": 10,
"alias": "79SZHfT",
"company_id": 1,
"title": "Senior Software Engineer",
"internal_title": null,
"internal_job_id": null,
"description": "<p>We are looking for a senior engineer...</p>",
"resume_field_status": "optional",
"location": {
"city": "San Francisco",
"country": "United States",
"state": "California",
"street_address": null,
"full_address": "San Francisco, California, United States",
"postal_code": null
},
"url": "https://100hires.com/career/job/79SZHfT",
"is_remote": false,
"status": "Public",
"department": {
"id": 1,
"name": "Engineering"
},
"category": {
"id": 2,
"name": "Software Development"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"education_level": null,
"experience_level": {
"id": 3,
"name": "Senior"
},
"workflow_id": 1,
"workflow": null,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"hours_per_week_min": null,
"hours_per_week_max": null,
"indeed_posting_data": {},
"hiring_team": [],
"pipeline_stages": null,
"is_satellite": false,
"parent_job_id": null,
"created_at": 1711036800,
"updated_at": 1711036800
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Job list
Create job
Creates a job with taxonomy, location, salary, and workflow configuration. Primary endpoint for programmatic job publishing workflows.
- Type: string
include Comma-separated list of related resources to include. Supported:
workflow,hiring_team,pipeline_stages.
- Type: string
description requiredJob description (HTML allowed).
- Type: string
location _city requiredJob city.
- Type: string
location _country requiredJob country.
- Type: string
status requiredJob status (e.g. Draft, Public). See GET /taxonomy/statuses.
- Type: string
title requiredPublic job title.
- Type: array object[] · AiScoringCriterionInput[]
ai _scoring _criteria AI scoring criteria for evaluating candidates against this job. Providing this field is a full replace: existing criteria are detached (preserved if used in past evaluations, soft-deleted otherwise) and the supplied list becomes the current set. Omit the field to leave defaults untouched. Pass an empty array to detach all criteria.
- Type: string
text requiredPrompt text describing what to evaluate. Required.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: integer
id ID of an existing criterion attached to this job. When present, the corresponding criterion is updated in place (or, if it has scores, detached and replaced —
ManageCriteria::createOrUpdatesemantics). Omitidto create a new criterion. Items existing on the job that are not present in the request (matched byid) are removed (soft-deleted if unscored, detached if used in past evaluations). - Type: string
title Optional short label for the criterion.
- Type: integer
category _id Job category ID from GET /taxonomy/categories.
- Type: integer
company _id Target company ID. Required only when the API key has access to multiple companies.
- Type: integer
department _id Department ID from GET /taxonomy/departments.
- Type: integer
education _level _id Education level ID from GET /taxonomy/education-levels.
- Type: integer
employment _type _id Employment type ID from GET /taxonomy/employment-types.
- Type: integer
experience _level _id Experience level ID from GET /taxonomy/experience-levels.
- Type: integer
form _id Application form ID. If omitted, a new form named after the job title is created with default questions (First name, Last name, Email, Phone).
- Type: string
internal _job _id External reference ID from your ATS or HR system.
- Type: string
internal _title Internal-only title visible to the hiring team.
- Type: boolean
is _remote Whether this is a remote position.
- Type: array object[]
knockout _questions Boolean knockout questions added to the application form. Each question with
disqualify_on_wrong_answer=truecreates an auto-disqualify rule on the Applied stage.- Type: boolean
disqualify _on _wrong _answer requiredIf true, applicants who answer incorrectly are automatically disqualified.
- Type: stringenum
expected _answer requiredThe correct/desired answer.
Yes No
- Type: string
text requiredQuestion text shown to the applicant.
- Type: string
location _full _address Full formatted address.
- Type: string
location _postal _code Postal or ZIP code.
- Type: string
location _state Job state or region.
- Type: string
location _street _address Street address.
- Type: integer
parent _job _id Canonical parent job ID. If provided, the created job becomes a satellite job.
- Type: stringenum
resume _field _status Resume field behavior on the application form.
required optional hidden
- Type: string
salary _currency Salary currency code (e.g. USD, EUR).
- Type: number
salary _max Maximum salary.
- Type: number
salary _min Minimum salary.
- Type: stringenum
salary _period Salary period.
annually monthly daily hourly
- Type: integer
workflow _id Workflow ID. If omitted, a new workflow named after the job title is created with default stages.
Created job
Type: object- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"form_id": 1,
"status": "",
"title": "",
"internal_title": "",
"internal_job_id": "",
"description": "",
"resume_field_status": "required",
"location_city": "",
"location_country": "",
"location_state": "",
"location_street_address": "",
"location_full_address": "",
"location_postal_code": "",
"salary_min": 1,
"salary_max": 1,
"salary_currency": "",
"salary_period": "annually",
"is_remote": true,
"employment_type_id": 1,
"department_id": 1,
"category_id": 1,
"education_level_id": 1,
"experience_level_id": 1,
"workflow_id": 1,
"parent_job_id": 1,
"knockout_questions": [
{
"text": "",
"expected_answer": "Yes",
"disqualify_on_wrong_answer": true
}
],
"ai_scoring_criteria": [
{
"id": 1,
"title": "",
"text": "",
"weight": 1
}
]
}'
{
"id": 10,
"alias": "79SZHfT",
"company_id": 1,
"title": "Senior Software Engineer",
"internal_title": null,
"internal_job_id": null,
"description": "<p>We are looking for a senior engineer...</p>",
"resume_field_status": "optional",
"location": {
"city": "San Francisco",
"country": "United States",
"state": "California",
"street_address": null,
"full_address": "San Francisco, California, United States",
"postal_code": null
},
"url": "https://100hires.com/career/job/79SZHfT",
"is_remote": false,
"status": "Public",
"department": {
"id": 1,
"name": "Engineering"
},
"category": {
"id": 2,
"name": "Software Development"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"education_level": null,
"experience_level": {
"id": 3,
"name": "Senior"
},
"workflow_id": 1,
"workflow": null,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"hours_per_week_min": null,
"hours_per_week_max": null,
"indeed_posting_data": {},
"hiring_team": [],
"pipeline_stages": null,
"is_satellite": false,
"parent_job_id": null,
"created_at": 1711036800,
"updated_at": 1711036800
}Created job
Get job
Returns the full job payload. Use include to load related workflow or hiring team data.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: string
include Comma-separated list of related resources to include. Supported:
workflow,hiring_team,pipeline_stages.
Job
Type: object- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 10,
"alias": "79SZHfT",
"company_id": 1,
"title": "Senior Software Engineer",
"internal_title": null,
"internal_job_id": null,
"description": "<p>We are looking for a senior engineer...</p>",
"resume_field_status": "optional",
"location": {
"city": "San Francisco",
"country": "United States",
"state": "California",
"street_address": null,
"full_address": "San Francisco, California, United States",
"postal_code": null
},
"url": "https://100hires.com/career/job/79SZHfT",
"is_remote": false,
"status": "Public",
"department": {
"id": 1,
"name": "Engineering"
},
"category": {
"id": 2,
"name": "Software Development"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"education_level": null,
"experience_level": {
"id": 3,
"name": "Senior"
},
"workflow_id": 1,
"workflow": null,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"hours_per_week_min": null,
"hours_per_week_max": null,
"indeed_posting_data": {},
"hiring_team": [],
"pipeline_stages": null,
"is_satellite": false,
"parent_job_id": null,
"created_at": 1711036800,
"updated_at": 1711036800
}Job
Update job
Updates mutable job attributes. Preserves domain-level validation rules.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: string
include Comma-separated list of related resources to include. Supported:
workflow,hiring_team,pipeline_stages.
- Type: array object[] · AiScoringCriterionInput[]
ai _scoring _criteria AI scoring criteria for evaluating candidates against this job. Diff-replace by
id: items withidupdate the matching existing criterion (preserving identity), items withoutidcreate new criteria, and existing criteria not referenced in the payload are removed. Omit the field to leave existing criteria untouched. Pass an empty array to detach all criteria. Each item's order in the array becomes itsposition.- Type: string
text requiredPrompt text describing what to evaluate. Required.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: integer
id ID of an existing criterion attached to this job. When present, the corresponding criterion is updated in place (or, if it has scores, detached and replaced —
ManageCriteria::createOrUpdatesemantics). Omitidto create a new criterion. Items existing on the job that are not present in the request (matched byid) are removed (soft-deleted if unscored, detached if used in past evaluations). - Type: string
title Optional short label for the criterion.
- Type: integer
category _id Job category ID from GET /taxonomy/categories.
- Type: integer
department _id Department ID from GET /taxonomy/departments.
- Type: string
description Job description (HTML allowed).
- Type: integer
education _level _id Education level ID from GET /taxonomy/education-levels.
- Type: integer
employment _type _id Employment type ID from GET /taxonomy/employment-types.
- Type: integer
experience _level _id Experience level ID from GET /taxonomy/experience-levels.
- Type: integer
form _id Application form ID to assign to this job.
- Type: string
internal _job _id External reference ID from your ATS or HR system.
- Type: string
internal _title Internal-only title visible to the hiring team.
- Type: boolean
is _remote Whether this is a remote position.
- Type: array object[]
knockout _questions Boolean knockout questions added to the application form. Each question with
disqualify_on_wrong_answer=truecreates an auto-disqualify rule on the Applied stage.- Type: boolean
disqualify _on _wrong _answer requiredIf true, applicants who answer incorrectly are automatically disqualified.
- Type: stringenum
expected _answer requiredThe correct/desired answer.
Yes No
- Type: string
text requiredQuestion text shown to the applicant.
- Type: string
location _city Job city.
- Type: string
location _country Job country.
- Type: string
location _full _address Full formatted address.
- Type: string
location _postal _code Postal or ZIP code.
- Type: string
location _state Job state or region.
- Type: string
location _street _address Street address.
- Type: integer
parent _job _id Canonical parent job ID. If provided, the job becomes a satellite job.
- Type: stringenum
resume _field _status Resume field behavior on the application form.
required optional hidden
- Type: string
salary _currency Salary currency code (e.g. USD, EUR).
- Type: number
salary _max Maximum salary.
- Type: number
salary _min Minimum salary.
- Type: stringenum
salary _period Salary period.
annually monthly daily hourly
- Type: string
status Job status (e.g. Draft, Public). See GET /taxonomy/statuses.
- Type: string
title Public job title.
- Type: integer
workflow _id Workflow ID to assign to this job.
Updated job
Type: object- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}' \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"form_id": 1,
"status": "",
"title": "",
"internal_title": "",
"internal_job_id": "",
"description": "",
"resume_field_status": "required",
"location_city": "",
"location_country": "",
"location_state": "",
"location_street_address": "",
"location_full_address": "",
"location_postal_code": "",
"salary_min": 1,
"salary_max": 1,
"salary_currency": "",
"salary_period": "annually",
"is_remote": true,
"employment_type_id": 1,
"department_id": 1,
"category_id": 1,
"education_level_id": 1,
"experience_level_id": 1,
"workflow_id": 1,
"parent_job_id": 1,
"knockout_questions": [
{
"text": "",
"expected_answer": "Yes",
"disqualify_on_wrong_answer": true
}
],
"ai_scoring_criteria": [
{
"id": 1,
"title": "",
"text": "",
"weight": 1
}
]
}'
{
"id": 10,
"alias": "79SZHfT",
"company_id": 1,
"title": "Senior Software Engineer",
"internal_title": null,
"internal_job_id": null,
"description": "<p>We are looking for a senior engineer...</p>",
"resume_field_status": "optional",
"location": {
"city": "San Francisco",
"country": "United States",
"state": "California",
"street_address": null,
"full_address": "San Francisco, California, United States",
"postal_code": null
},
"url": "https://100hires.com/career/job/79SZHfT",
"is_remote": false,
"status": "Public",
"department": {
"id": 1,
"name": "Engineering"
},
"category": {
"id": 2,
"name": "Software Development"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"education_level": null,
"experience_level": {
"id": 3,
"name": "Senior"
},
"workflow_id": 1,
"workflow": null,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"hours_per_week_min": null,
"hours_per_week_max": null,
"indeed_posting_data": {},
"hiring_team": [],
"pipeline_stages": null,
"is_satellite": false,
"parent_job_id": null,
"created_at": 1711036800,
"updated_at": 1711036800
}Updated job
Delete job
Deletes a job. Use to align archived/removed positions across integrated platforms.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Update job status
Changes job status via dedicated endpoint for status automation. Recommended for publish/unpublish/archive transitions.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: string
include Comma-separated list of related resources to include. Supported:
workflow,hiring_team,pipeline_stages.
- Type: string
status requiredNew job status (e.g. Draft, Public, Archived). See GET /taxonomy/statuses.
Updated job
Type: object- Type: integer
company _id requiredID of the company this job belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: boolean
is _remote requiredWhether this is a remote position
- Type: string
status requiredJob status: open, closed, draft, or archived
- Type: string
title requiredPublic job title shown to candidates
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string
url requiredPublic URL of the job posting page
- Type: array object[] · AiScoringCriterion[]
ai _scoring _criteria AI scoring criteria configured for this job, ordered by
positionASC. Returned as an empty array when none are configured. Present only whenview=full(default); omitted entirely whenview=summary.- Type: integer
id requiredUnique identifier of the criterion.
- Type: integer
position required0-based ordinal of the criterion in the job's list.
- Type: string
text requiredPrompt text describing what to evaluate.
- Type: integer
weight min:1max:10requiredRelative importance of this criterion in the total score (1–10).
- Type: string | null
title Optional short label for the criterion.
- Type: string | null
alias Short alphanumeric alias used in UI URLs. Use this to build job links —
https://app.100hires.com/job/{alias}/candidates/pipeline. Also accepted as{id}in API requests. - Type: object · IdName nullable
category Job category (e.g. Engineering, Marketing)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
department Department this job belongs to
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string
description Job description (HTML). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget. UseGET /jobs/{id}orview=fullto retrieve. - Type: object · IdName nullable
education _level Required education level
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type Employment type (e.g. Full-time, Part-time, Contract)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level Required experience level (e.g. Entry, Mid, Senior)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array object[] · JobHiringTeamMember[]
hiring _team Team members assigned to this job. Embedded via
include=hiring_team. Suppressed whenview=summaryeven if the include was requested.- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
- Type: integer | null
hours _per _week _max Maximum hours per week
- Type: integer | null
hours _per _week _min Minimum hours per week
- Type: object
indeed _posting _data Indeed job board posting metadata. Present only when
view=full(default); omitted entirely whenview=summary.- Type: anything
property Name
- Type: string | null
internal _job _id Company's internal job identifier (e.g. requisition number)
- Type: string | null
internal _title Internal job title visible only to the hiring team
- Type: boolean
is _satellite Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
- Type: object · JobLocation nullable
location Job location details
- Type: string
city City.
- Type: string
country Country.
- Type: string
full _address Full formatted address.
- Type: string
postal _code Postal code.
- Type: string
state State or region.
- Type: string
street _address Street address.
- Type: integer | null
parent _job _id ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
- Type: array object[] | null nullable
pipeline _stages Pipeline stages for this job's workflow. Only included when
include=pipeline_stagesis specified. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id Integer numbers.
- Type: string
name
- Type: string | nullenum
resume _field _status Whether resume upload is required, optional, or hidden on the application form
required optional hidden
- Type: string | null
salary _currency Salary currency code (e.g. USD, EUR)
- Type: number | null
salary _max Maximum salary
- Type: number | null
salary _min Minimum salary
- Type: string | nullenum
salary _period Salary period
annually monthly daily hourly
- Type: string
url _backoffice Backoffice URL — opens the job's pipeline view inside the recruiter app (
https://app.100hires.com/job/{alias}/candidates/pipeline). Use this to link agent widgets / UI to the in-app job page rather than the public career page. - Type: object · IdName nullable
workflow Hiring workflow (pipeline) assigned to this job. Embedded via
include=workflow. Suppressed whenview=summaryeven if the include was requested.- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
workflow _id ID of the hiring workflow (pipeline) assigned to this job
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/status' \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"status": ""
}'
{
"id": 10,
"alias": "79SZHfT",
"company_id": 1,
"title": "Senior Software Engineer",
"internal_title": null,
"internal_job_id": null,
"description": "<p>We are looking for a senior engineer...</p>",
"resume_field_status": "optional",
"location": {
"city": "San Francisco",
"country": "United States",
"state": "California",
"street_address": null,
"full_address": "San Francisco, California, United States",
"postal_code": null
},
"url": "https://100hires.com/career/job/79SZHfT",
"is_remote": false,
"status": "Draft",
"department": {
"id": 1,
"name": "Engineering"
},
"category": {
"id": 2,
"name": "Software Development"
},
"employment_type": {
"id": 1,
"name": "Full-time"
},
"education_level": null,
"experience_level": {
"id": 3,
"name": "Senior"
},
"workflow_id": 1,
"workflow": null,
"salary_min": 120000,
"salary_max": 180000,
"salary_currency": "USD",
"salary_period": "annually",
"hours_per_week_min": null,
"hours_per_week_max": null,
"indeed_posting_data": {},
"hiring_team": [],
"pipeline_stages": null,
"is_satellite": false,
"parent_job_id": null,
"created_at": 1711036800,
"updated_at": 1711036800
}Updated job
List job hiring team
Returns users currently assigned to the job hiring team. Useful for notification routing and collaboration tooling.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
Hiring team
Type: object- Type: array object[] · JobHiringTeamMember[]
hiring _team requiredArray of hiring team members.
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/hiring-team' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"hiring_team": [
{
"id": 5,
"full_name": "Sarah Connor",
"email": "sarah@example.com",
"role": "hiring_manager"
}
]
}Hiring team
Add hiring team member
Adds a company member to job hiring team assignments. Use in workflow setup and ownership automation.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: integer
user _id requiredUser ID to add to the hiring team.
Hiring team
Type: object- Type: array object[] · JobHiringTeamMember[]
hiring _team requiredArray of hiring team members.
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
email User email.
- Type: string | null
role Role on hiring team (e.g. hiring_manager, recruiter).
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/hiring-team' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"user_id": 1
}'
{
"hiring_team": [
{
"id": 5,
"full_name": "Sarah Connor",
"email": "sarah@example.com",
"role": "hiring_manager"
}
]
}Hiring team
List job webhooks
Lists webhooks configured for a job-level event stream. Use to audit subscriptions and deployment state.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
Job webhooks
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · Webhook[]
webhooks requiredArray of webhooks.
- Type: integer
id Unique identifier
- Type: string
url Endpoint URL that receives webhook event payloads
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/webhooks' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"webhooks": [
{
"id": 1,
"url": "https://example.com/webhook"
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Job webhooks
Create job webhook
Registers a webhook URL for job-related events. Core step for outbound integration setup.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: string
url max length:2048requiredWebhook destination URL. Must be HTTPS.
Created webhook.
signing_secretis returned only here — store it securely.Type: object- Type: integer
id Unique identifier
- Type: string
signing _secret HMAC-SHA256 signing secret for this webhook, used to verify the
x-hires-signature-v2header. Returned ONLY in create and rotate-secret responses — store it securely, it is never shown again. - Type: string
url Endpoint URL that receives webhook event payloads
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/webhooks' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"url": ""
}'
{
"id": 1,
"url": "https://example.com/webhook",
"signing_secret": "3f9a8b7c6d5e4f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a"
}Created webhook. signing_secret is returned only here — store it securely.
Rotate job webhook signing secret
Rotates the webhook's signing secret with zero downtime. The previous secret remains valid for a grace window so both old and new x-hires-signature-v2 signatures are accepted while you switch over.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: integer
webhook _id requiredWebhook subscription ID.
New signing secret (the previous one stays valid for a grace window).
Type: object- Type: integer
id Unique identifier
- Type: string
signing _secret HMAC-SHA256 signing secret for this webhook, used to verify the
x-hires-signature-v2header. Returned ONLY in create and rotate-secret responses — store it securely, it is never shown again. - Type: string
url Endpoint URL that receives webhook event payloads
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/webhooks/1/rotate-secret' \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 1,
"url": "https://example.com/webhook",
"signing_secret": "9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c"
}New signing secret (the previous one stays valid for a grace window).
Delete job webhook
Disables a job webhook subscription by ID. Use for cleanup, rotation, and endpoint migration.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: integer
webhook _id requiredWebhook subscription ID.
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/webhooks/1' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Get job boards state for job
Returns current board publication state for a specific job. Useful for distribution dashboards and posting audits.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
Job boards
Type: object- Type: array object[] · JobBoardItem[]
boards requiredArray of job boards for this job.
- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/job-boards' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}Job boards
Activate boards for job
Sets selected job boards to activation queue state. Use for controlled multi-board publishing workflows.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredJob ID (numeric) or alias
- Type: array string[]
boards Array of board IDs to activate or deactivate.
Job boards
Type: object- Type: array object[] · JobBoardItem[]
boards requiredArray of job boards for this job.
- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/jobs/{id}/job-boards' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"boards": [
""
]
}'
{
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}Job boards
Deactivate boards for job
Stops selected board publications for a job.
- Type: integer
id requiredResource ID (numeric).
- Type: array string[]
boards Array of board IDs to activate or deactivate.
Job boards
Type: object- Type: array object[] · JobBoardItem[]
boards requiredArray of job boards for this job.
- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs/1/job-boards \
--request DELETE \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"boards": [
""
]
}'
{
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}Job boards
Get boards state for multiple jobs
Returns board states for multiple jobs in one request. Optimized for batch monitoring and management UIs.
- Type: array integer[]
jobs Array of job IDs to filter or batch-operate on.
Job boards by jobs
Type: object- Type: array object[]
jobs requiredArray of per-job board results.
- Type: array object[] · JobBoardItem[]
boards required- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
- Type: integer
job _id requiredInteger numbers.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs/batch-job-boards \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"jobs": [
{
"job_id": 10,
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}
]
}Job boards by jobs
Activate boards for multiple jobs
Activates board publication for multiple jobs in one request.
- Type: array integer[]
jobs requiredArray of job IDs.
- Type: array string[]
boards Array of board IDs.
Job boards by jobs
Type: object- Type: array object[]
jobs requiredArray of per-job board results.
- Type: array object[] · JobBoardItem[]
boards required- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
- Type: integer
job _id requiredInteger numbers.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs/batch-job-boards \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"jobs": [
1
],
"boards": [
""
]
}'
{
"jobs": [
{
"job_id": 10,
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}
]
}Job boards by jobs
Deactivate boards for multiple jobs
Deactivates board publication for multiple jobs in one request.
- Type: array integer[]
jobs requiredArray of job IDs.
- Type: array string[]
boards Array of board IDs.
Job boards by jobs
Type: object- Type: array object[]
jobs requiredArray of per-job board results.
- Type: array object[] · JobBoardItem[]
boards required- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
- Type: integer
job _id requiredInteger numbers.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/jobs/batch-job-boards \
--request DELETE \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"jobs": [
1
],
"boards": [
""
]
}'
{
"jobs": [
{
"job_id": 10,
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}
]
}Job boards by jobs
Evaluations
Filled evaluation forms with scores and answers submitted by interviewers for applications.
List filled evaluation forms for application
Returns all filled evaluation forms for an application. Each evaluation includes the evaluator, score, and summary text.
- Type: integer
id requiredResource ID (numeric).
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
List of filled evaluations
Type: object- Type: array object[] · EvaluationSummary[]
evaluations requiredArray of evaluation summaries.
- Type: integer
application _id requiredApplication ID.
- Type: integer | nullFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
form _id requiredSource form template ID.
- Type: string
form _name requiredForm name.
- Type: integer
id requiredEvaluation form ID.
- Type: stringenum
summary _score requiredAverage score.
strong -yes probably -yes neutral probably -no strong -no
- Type: integer | nullFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object
user requiredEvaluator details.
- Type: string
full _name - Type: integer
id Integer numbers.
- Type: stringFormat: uri
form _url _backoffice Absolute backoffice URL to edit the source evaluation form template in the 100Hires recruiter app.
- Type: string | null
summary _text Evaluator summary. Present only when
view=full(default); replaced withsummary_text_previewwhenview=summary. - Type: string | null
summary _text _preview First 200 UTF-8 characters of the evaluator summary with a
...suffix when truncated. Present only whenview=summary; replacessummary_textto keep list responses inside the agent context budget. - Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's evaluations tab in the 100Hires recruiter app where this evaluation appears. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/applications/1/evaluation-forms \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"evaluations": [
{
"id": 301,
"application_id": 501,
"form_id": 5,
"form_name": "Technical Interview",
"user": {
"id": 12,
"full_name": "Alice Johnson"
},
"summary_score": "strong-yes",
"summary_text": "Excellent problem-solving skills and strong system design knowledge.",
"created_at": 1711209600,
"updated_at": 1711209600
},
{
"id": 302,
"application_id": 501,
"form_id": 6,
"form_name": "Culture Fit",
"user": {
"id": 15,
"full_name": "Bob Williams"
},
"summary_score": "probably-yes",
"summary_text": "Good team player, aligns well with company values.",
"created_at": 1711296000,
"updated_at": 1711296000
}
]
}List of filled evaluations
Get filled evaluation form with answers
Returns a single filled evaluation form with all answers. Use for detailed review of evaluator feedback.
- Type: integer
id requiredResource ID (numeric).
Evaluation with answers
- Type: array object[] · EvaluationAnswer[]
answers required- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion text.
- Type: string | null
value requiredAnswer value. Null if unanswered.
- Type: integer
application _id requiredApplication ID.
- Type: integer | nullFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
form _id requiredSource form template ID.
- Type: string
form _name requiredForm name.
- Type: integer
id requiredEvaluation form ID.
- Type: stringenum
summary _score requiredAverage score.
strong -yes probably -yes neutral probably -no strong -no
- Type: integer | nullFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: object
user requiredEvaluator details.
- Type: string
full _name - Type: integer
id Integer numbers.
- Type: stringFormat: uri
form _url _backoffice Absolute backoffice URL to edit the source evaluation form template in the 100Hires recruiter app.
- Type: string | null
summary _text Evaluator summary. Present only when
view=full(default); replaced withsummary_text_previewwhenview=summary. - Type: string | null
summary _text _preview First 200 UTF-8 characters of the evaluator summary with a
...suffix when truncated. Present only whenview=summary; replacessummary_textto keep list responses inside the agent context budget. - Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate's evaluations tab in the 100Hires recruiter app where this evaluation appears. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/evaluation-forms/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 301,
"application_id": 501,
"form_id": 5,
"form_name": "Technical Interview",
"user": {
"id": 12,
"full_name": "Alice Johnson"
},
"summary_score": "strong-yes",
"summary_text": "Excellent problem-solving skills and strong system design knowledge.",
"created_at": 1711209600,
"updated_at": 1711209600,
"answers": [
{
"question_id": 1,
"question_text": "How would you rate the candidate's coding skills?",
"value": "5"
},
{
"question_id": 2,
"question_text": "How well does the candidate communicate technical concepts?",
"value": "4"
},
{
"question_id": 3,
"question_text": "Additional comments",
"value": "Strong candidate with deep backend expertise."
}
]
}Evaluation with answers
Notes
Discussion notes linked to candidates for recruiter collaboration and context sharing.
List notes by candidate
Returns paginated discussion notes for a candidate. Use for shared recruiter context and timeline synchronization.
- Type: string
candidate _id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: string
include Comma-separated list of related resources to include. Supported:
user— author details,candidate— full candidate payload withurl_backofficefor UI deep-linking. - Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Note list
Type: object- Type: array object[] · Note[]
notes requiredArray of notes.
- Type: integer
candidate _id requiredID of the candidate this note belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer
user _id requiredAuthor user ID (always present)
- Type: string
visibility requiredVisibility: 'all' (visible to team) or 'private' (author only)
- Type: string
body Note content (may contain HTML). Mentioned users are wrapped in
<span class="mention-area">markup. Present only whenview=full(default); replaced withbody_previewwhenview=summary. - Type: string
body _preview First 200 UTF-8 characters of the note content with a
...suffix when truncated. Present only whenview=summary; replacesbodyto keep list responses inside the agent context budget. - Type: object · Candidate nullable
candidate Embedded candidate payload (included when requested via
include=candidate). Usecandidate.url_backofficeto deep-link UI widgets to the candidate profile in the recruiter app.- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to the candidate's discussion tab where this note appears in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · NoteUser
user Author details (only with include=user)
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
photo Profile photo URL.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/notes?candidate_id=' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"notes": [
{
"id": 67890,
"candidate_id": 12345,
"user_id": 1,
"body": "Strong technical background, moving to next round.",
"visibility": "all",
"created_at": 1711036800,
"updated_at": 1711036800
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Note list
Create note
Creates a new discussion note for a candidate. Supports visibility control (all or private) and @mentions with email notifications.
- Type: string
include Comma-separated list of related resources to include. Supported:
user— author details,candidate— full candidate payload withurl_backofficefor UI deep-linking.
- Type: string
body requiredNote content. Supports HTML.
- Type: string
candidate _id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: array integer[]
mention _user _ids Array of user IDs to mention. Mentioned users receive email notifications and their
@nameor@loginreferences in the body are replaced with HTML mention markup. - Type: integer
user _id Author user ID. If omitted, the authenticated user is used
- Type: string
visibility Visibility: 'all' (default) or 'private'
Created note
Type: object- Type: integer
candidate _id requiredID of the candidate this note belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer
user _id requiredAuthor user ID (always present)
- Type: string
visibility requiredVisibility: 'all' (visible to team) or 'private' (author only)
- Type: string
body Note content (may contain HTML). Mentioned users are wrapped in
<span class="mention-area">markup. Present only whenview=full(default); replaced withbody_previewwhenview=summary. - Type: string
body _preview First 200 UTF-8 characters of the note content with a
...suffix when truncated. Present only whenview=summary; replacesbodyto keep list responses inside the agent context budget. - Type: object · Candidate nullable
candidate Embedded candidate payload (included when requested via
include=candidate). Usecandidate.url_backofficeto deep-link UI widgets to the candidate profile in the recruiter app.- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to the candidate's discussion tab where this note appears in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · NoteUser
user Author details (only with include=user)
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
photo Profile photo URL.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notes \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"candidate_id": 12345,
"body": "Hey @Alice Smith, please review this candidate.",
"visibility": "all",
"mention_user_ids": [
42
]
}'
{
"id": 67890,
"candidate_id": 12345,
"user_id": 1,
"body": "Hey <span class=\"mention-area\" contenteditable=\"false\"><span class=\"highlight\"><span class=\"mentiony-link\">Alice Smith</span></span></span>, please review this candidate.",
"visibility": "all",
"created_at": 1711036800,
"updated_at": 1711036800
}Created note
Get note
Returns a single note with author and visibility metadata. Use include=user to load author details, include=candidate to embed the full candidate payload (with url_backoffice).
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
user— author details,candidate— full candidate payload withurl_backofficefor UI deep-linking.
Note
Type: object- Type: integer
candidate _id requiredID of the candidate this note belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer
user _id requiredAuthor user ID (always present)
- Type: string
visibility requiredVisibility: 'all' (visible to team) or 'private' (author only)
- Type: string
body Note content (may contain HTML). Mentioned users are wrapped in
<span class="mention-area">markup. Present only whenview=full(default); replaced withbody_previewwhenview=summary. - Type: string
body _preview First 200 UTF-8 characters of the note content with a
...suffix when truncated. Present only whenview=summary; replacesbodyto keep list responses inside the agent context budget. - Type: object · Candidate nullable
candidate Embedded candidate payload (included when requested via
include=candidate). Usecandidate.url_backofficeto deep-link UI widgets to the candidate profile in the recruiter app.- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to the candidate's discussion tab where this note appears in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · NoteUser
user Author details (only with include=user)
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
photo Profile photo URL.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notes/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 67890,
"candidate_id": 12345,
"user_id": 1,
"body": "Strong technical background, moving to next round.",
"visibility": "all",
"created_at": 1711036800,
"updated_at": 1711036800,
"user": {
"id": 1,
"full_name": "Alice Smith",
"photo": "https://cdn.100hires.com/photos/alice.jpg"
}
}Note
Update note
Updates note body and/or visibility without creating a new timeline item. Use for corrections and moderation workflows.
- Type: integer
id requiredResource ID (numeric).
- Type: string
include Comma-separated list of related resources to include. Supported:
user— author details,candidate— full candidate payload withurl_backofficefor UI deep-linking.
- Type: string
body Note content. Supports HTML.
- Type: string
visibility Visibility: 'all' (default) or 'private'.
Updated note
Type: object- Type: integer
candidate _id requiredID of the candidate this note belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: integer
user _id requiredAuthor user ID (always present)
- Type: string
visibility requiredVisibility: 'all' (visible to team) or 'private' (author only)
- Type: string
body Note content (may contain HTML). Mentioned users are wrapped in
<span class="mention-area">markup. Present only whenview=full(default); replaced withbody_previewwhenview=summary. - Type: string
body _preview First 200 UTF-8 characters of the note content with a
...suffix when truncated. Present only whenview=summary; replacesbodyto keep list responses inside the agent context budget. - Type: object · Candidate nullable
candidate Embedded candidate payload (included when requested via
include=candidate). Usecandidate.url_backofficeto deep-link UI widgets to the candidate profile in the recruiter app.- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to the candidate's discussion tab where this note appears in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · NoteUser
user Author details (only with include=user)
- Type: string
full _name requiredUser full name.
- Type: integer
id requiredUser ID.
- Type: string | null
photo Profile photo URL.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notes/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"body": "",
"visibility": ""
}'
{
"id": 67890,
"candidate_id": 12345,
"user_id": 1,
"body": "Updated: Strong technical background, scheduled final interview.",
"visibility": "all",
"created_at": 1711036800,
"updated_at": 1711123200
}Updated note
Delete note
Deletes a note from active collaboration views. Use for moderation policies and data cleanup operations.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notes/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Messages
Candidate communication history and scheduler-backed email delivery endpoints.
List candidate messages
Returns paginated email and messaging history for a candidate. Useful for communication timeline and audit trails. Use is_scheduled=1 to filter only scheduled (pending) messages.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
- enum
is _scheduled const:1When set to
1, returns only scheduled (not yet sent) messages. Useful for auditing pending outreach.1
Message list
Type: object- Type: array · CandidateMessage[]
messages requiredArray of messages.
type Discriminatorenumconst:mailboxrequiredMessage type discriminator.
mailbox
- Type: boolean
is _sent _by _candidate requiredWhether the candidate sent this message.
- Type: object · MailboxMessage
message requiredauto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/messages' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"messages": [
{
"type": "mailbox",
"is_sent_by_candidate": false,
"message": {
"id": 60001,
"from": "recruiter@example.com",
"to": "john.doe@example.com",
"cc": "",
"subject": "Exciting opportunity at Acme Corp",
"body": "<p>Hi John, I came across your profile and wanted to reach out...</p>",
"date": "2024-03-22 09:00:00",
"attachments": [],
"schedule": "",
"opensCount": 2,
"opens": [],
"autoJobId": 123,
"isNurtured": false
}
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Message list
Create scheduled message for candidate
Creates a candidate message through mailbox scheduler. If scheduled_at is omitted, the message is scheduled for 15 minutes after creation instead of being sent immediately.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
- Type: string
body requiredEmail body as HTML.
- Type: string
subject requiredEmail subject line.
- Type: array string[]
to requiredPrimary recipient email addresses.
- Type: integer nullable
application _id Optional application ID linked to this message.
- Type: array string[]
bcc Blind carbon-copy recipient email addresses.
- Type: array string[]
cc Carbon-copy recipient email addresses.
- Type: integer nullable
from _account _id Optional sending mail account ID. Use
GET /users/{user_id}/mail-accountsto list available accounts for a user, orGET /companies/mail-accountsto list all accounts. If omitted, the API key owner's default mail account is used. - Type: integer nullable
reply _to _email _id Optional mailbox message ID to reply to.
- Type: integerFormat: int64 nullable
scheduled _at Unix timestamp (seconds). If omitted, defaults to created time plus 900 seconds.
- Type: boolean
send _in _new _thread Whether to send the message as a new thread instead of replying in an existing thread.
Created scheduled message
Type: object- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/messages' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"to": [
"alice@example.com"
],
"subject": "Interview invitation — Senior Engineer",
"body": "<p>Hi Alice, we'\''d like to invite you for an interview.</p>",
"from_account_id": 1,
"application_id": 789
}'
{
"type": "mailbox",
"message": {
"id": 60010,
"from": "recruiter@example.com",
"to": "alice@example.com",
"cc": "",
"subject": "Interview invitation — Senior Engineer",
"body": "<p>Hi Alice, we'd like to invite you for an interview.</p>",
"date": "Mar 22, 2024 09:00 AM",
"attachments": [],
"schedule": {
"senderId": 1,
"isForceSend": false,
"isFailed": false,
"scheduleSendError": null,
"isScheduled": true,
"scheduledDay": "Mar 22, 2024",
"sendAt": 1711098000,
"humanDatetime": "Mar 22, 2024 09:00 AM",
"systemDatetime": "2024-03-22 09:00:00"
},
"opensCount": 0,
"opens": [],
"autoJobId": "",
"isNurtured": false
}
}Created scheduled message
List messages by mail account
Returns messages sent or scheduled from a specific mail account. Useful for monitoring cold outreach campaigns — check pending queue, delivery history, and plan next sends. Only returns outbound messages (sent and scheduled), not received.
- Type: integer
from _account _id requiredID of the mail account (from
GET /companies/mail-accountsorGET /users/{user_id}/mail-accounts). - Type: stringenum
status Filter by message status:
scheduled(pending send),sent(delivered),all(both). Default:all.scheduled sent all
- Type: integer
date _from Start of period (unix timestamp, seconds). Filters on scheduled/sent time.
- Type: integer
date _to End of period (unix timestamp, seconds). Filters on scheduled/sent time.
- Type: integer
page min:1Page number (1-based).
- Type: integer
size min:1max:100Number of items per page (1–100).
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Paginated list of messages for the specified mail account.
Type: object- Type: array object[] · ScheduledEmail[]
messages requiredArray of messages for the specified mail account. Each item uses the same format as
GET /messages/{id}.- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/messages?from_account_id=1' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"messages": [
{
"type": "mailbox",
"message": {
"id": 12345,
"from": "sender@example.com",
"to": "prospect@company.com",
"cc": "",
"subject": "Exciting opportunity",
"body": "<p>Hi, I found your profile...</p>",
"date": "Apr 09, 2026 10:00 AM",
"attachments": [],
"schedule": "",
"opensCount": 2,
"opens": [],
"autoJobId": "",
"isNurtured": false
}
}
],
"pagination": {
"page_size": 20,
"page_count": 7,
"page": 1,
"total_count": 134
}
}Paginated list of messages for the specified mail account.
Get scheduled message
Returns scheduler-backed message details, including sender account, schedule timestamps, and cancelability.
- Type: integer
id requiredResource ID (numeric).
Scheduled message
Type: object- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/messages/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"type": "mailbox",
"message": {
"id": 60010,
"from": "recruiter@example.com",
"to": "alice@example.com",
"cc": "",
"subject": "Interview invitation — Senior Engineer",
"body": "<p>Hi Alice, we'd like to invite you for an interview.</p>",
"date": "Mar 22, 2024 09:00 AM",
"attachments": [],
"schedule": {
"senderId": 1,
"isForceSend": false,
"isFailed": false,
"scheduleSendError": null,
"isScheduled": true,
"scheduledDay": "Mar 22, 2024",
"sendAt": 1711098000,
"humanDatetime": "Mar 22, 2024 09:00 AM",
"systemDatetime": "2024-03-22 09:00:00"
},
"opensCount": 0,
"opens": [],
"autoJobId": "",
"isNurtured": false
}
}Scheduled message
Update scheduled message
Rewrites a scheduled message before send time. The same endpoint also accepts PATCH for partial updates.
- Type: integer
id requiredResource ID (numeric).
- Type: string
body requiredUpdated email body as HTML.
- Type: string
subject requiredUpdated email subject line.
- Type: array string[]
to requiredPrimary recipient email addresses.
- Type: array string[]
bcc Blind carbon-copy recipient email addresses.
- Type: array string[]
cc Carbon-copy recipient email addresses.
- Type: integer nullable
from _account _id Optional sending mail account ID. Use
GET /users/{user_id}/mail-accountsto list available accounts for a user, orGET /companies/mail-accountsto list all accounts. If omitted, the API key owner's default mail account is used. - Type: integer nullable
reply _to _email _id Optional mailbox message ID to reply to.
- Type: integerFormat: int64 nullable
scheduled _at Updated send time as a Unix timestamp in seconds.
- Type: boolean
send _in _new _thread Whether to send the updated message as a new thread.
Updated scheduled message
Type: object- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/messages/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"from_account_id": 1,
"to": [
""
],
"cc": [
""
],
"bcc": [
""
],
"subject": "",
"body": "",
"scheduled_at": 1,
"reply_to_email_id": 1,
"send_in_new_thread": true
}'
{
"type": "mailbox",
"message": {
"id": 60010,
"from": "recruiter@example.com",
"to": "alice@example.com",
"cc": "",
"subject": "Interview invitation — Senior Engineer (updated)",
"body": "<p>Hi Alice, we've moved your interview to Friday.</p>",
"date": "Mar 22, 2024 09:00 AM",
"attachments": [],
"schedule": {
"senderId": 1,
"isForceSend": false,
"isFailed": false,
"scheduleSendError": null,
"isScheduled": true,
"scheduledDay": "Mar 24, 2024",
"sendAt": 1711270800,
"humanDatetime": "Mar 24, 2024 09:00 AM",
"systemDatetime": "2024-03-24 09:00:00"
},
"opensCount": 0,
"opens": [],
"autoJobId": "",
"isNurtured": false
}
}Updated scheduled message
Partially update scheduled message
Partially updates a scheduled message before send time.
- Type: integer
id requiredResource ID (numeric).
- Type: string
body requiredUpdated email body as HTML.
- Type: string
subject requiredUpdated email subject line.
- Type: array string[]
to requiredPrimary recipient email addresses.
- Type: array string[]
bcc Blind carbon-copy recipient email addresses.
- Type: array string[]
cc Carbon-copy recipient email addresses.
- Type: integer nullable
from _account _id Optional sending mail account ID. Use
GET /users/{user_id}/mail-accountsto list available accounts for a user, orGET /companies/mail-accountsto list all accounts. If omitted, the API key owner's default mail account is used. - Type: integer nullable
reply _to _email _id Optional mailbox message ID to reply to.
- Type: integerFormat: int64 nullable
scheduled _at Updated send time as a Unix timestamp in seconds.
- Type: boolean
send _in _new _thread Whether to send the updated message as a new thread.
Updated scheduled message
Type: object- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/messages/1 \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"from_account_id": 1,
"to": [
""
],
"cc": [
""
],
"bcc": [
""
],
"subject": "",
"body": "",
"scheduled_at": 1,
"reply_to_email_id": 1,
"send_in_new_thread": true
}'
{
"type": "mailbox",
"message": {
"id": 60010,
"from": "recruiter@example.com",
"to": "alice@example.com",
"cc": "",
"subject": "Interview invitation — Senior Engineer (updated)",
"body": "<p>Hi Alice, we've moved your interview to Friday.</p>",
"date": "Mar 22, 2024 09:00 AM",
"attachments": [],
"schedule": {
"senderId": 1,
"isForceSend": false,
"isFailed": false,
"scheduleSendError": null,
"isScheduled": true,
"scheduledDay": "Mar 24, 2024",
"sendAt": 1711270800,
"humanDatetime": "Mar 24, 2024 09:00 AM",
"systemDatetime": "2024-03-24 09:00:00"
},
"opensCount": 0,
"opens": [],
"autoJobId": "",
"isNurtured": false
}
}Updated scheduled message
Cancel scheduled message
Cancels a scheduled message before it is processed by mailbox scheduler.
- Type: integer
id requiredResource ID (numeric).
Message canceled
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/messages/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Message canceled
Batch create scheduled messages
Creates up to 100 scheduled messages in one request. Each item specifies its own candidate_id and message payload. Items are processed independently — one failure does not stop others. Per-candidate RBAC is enforced for each item.
- Type: array …100
messages requiredArray of message payloads to create (max 100).
- Type: string
body requiredEmail body as HTML.
- Type: integer
candidate _id requiredTarget candidate ID for this message.
- Type: string
subject requiredEmail subject line.
- Type: array string[]
to requiredPrimary recipient email addresses.
- Type: integer nullable
application _id Optional application ID linked to this message.
- Type: array string[]
bcc Blind carbon-copy recipient email addresses.
- Type: array string[]
cc Carbon-copy recipient email addresses.
- Type: integer nullable
from _account _id Optional sending mail account ID. Use
GET /users/{user_id}/mail-accountsto list available accounts for a user, orGET /companies/mail-accountsto list all accounts. If omitted, the API key owner's default mail account is used. - Type: integer nullable
reply _to _email _id Optional mailbox message ID to reply to.
- Type: integerFormat: int64 nullable
scheduled _at Unix timestamp (seconds). If omitted, defaults to created time plus 900 seconds.
- Type: boolean
send _in _new _thread Whether to send the message as a new thread instead of replying in an existing thread.
Batch results with per-item success or error
Type: object- Type: array object[] · BatchCreateMessagesResultItem[]
results requiredArray of per-message results with success or error details.
- Type: integer nullable
candidate _id requiredCandidate ID from the request. Null if not provided.
- Type: integer
index requiredZero-based index of this item in the request array.
- Type: object · ScheduledEmail
data Created message payload on success. Present only when the item succeeded.
- Type: object · MailboxMessage
message requiredMailbox message payload, including envelope, body, attachments, and schedule metadata.
auto Job Id required- Type: integer
Integer numbers.
- Type: string
cc requiredCC recipients.
- Type: string
date requiredMessage date.
- Type: string nullable
from requiredSender address.
- Type: integer
id requiredMessage ID.
- Type: boolean
is Nurtured requiredWhether sent via nurture campaign.
- Type: array object[] · MailboxOpenEvent[]
opens requiredArray of open tracking events.
- Type: string
label requiredOpen event label.
- Type: integer
opens Count requiredNumber of times opened.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
- Type: array · Attachment[]
attachments Message attachments. Present only when
view=full(default); omitted entirely whenview=summary.- Type: object · ApiAttachment
Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
- Type: string
body Message body content. Present only when
view=full(default); omitted entirely whenview=summary— message bodies can run into tens of KB.
- enum
type const:mailboxrequiredMessage channel type for scheduler-backed message endpoints.
mailbox
- Type: object
error Structured error object on failure. Present only when the item failed. Same format as top-level API errors.
- Type: integer
code Integer numbers.
- Type: string
message - Type: string
name - Type: integer
status Integer numbers.
- Type: object
validation _errors - Type: string
property Name
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/messages/batch/create \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"messages": [
{
"candidate_id": 1,
"to": [
"alice@example.com"
],
"subject": "Interview invitation",
"body": "<p>Hi Alice, we'\''d like to invite you.</p>",
"from_account_id": 1,
"scheduled_at": 1700003600
},
{
"candidate_id": 2,
"to": [
"bob@example.com"
],
"subject": "Follow-up",
"body": "<p>Hi Bob, following up on our chat.</p>",
"from_account_id": 1
}
]
}'
{
"results": [
{
"index": 0,
"candidate_id": 1,
"data": {
"type": "mailbox",
"message": {
"id": 501,
"from": "user@company.com",
"to": "alice@example.com",
"subject": "Interview invitation"
}
}
},
{
"index": 1,
"candidate_id": 2,
"error": {
"name": "Not Found",
"message": "Candidate not found",
"status": 404
}
}
]
}Batch results with per-item success or error
Notification Messages
Manage notification emails (rejection, interview reminders, etc.) auto-created by the system: view, edit, cancel, or bulk-cancel before delivery.
Get notification message
Returns a notification email message (e.g. rejection email) by its ID, including subject, body, sender, recipient, and schedule metadata.
- Type: integer
id requiredResource ID (numeric).
Notification message
Type: object- Type: string
body requiredMessage body content.
- Type: string
date requiredMessage date.
- Type: string
from requiredSender address.
- Type: integer
id requiredMessage ID.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notification-messages/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 70001,
"from": "notifications@example.com",
"to": "john.doe@example.com",
"subject": "Update on your application",
"body": "<p>Thank you for applying. Unfortunately we have decided to move forward with other candidates.</p>",
"date": "Mar 22, 2024 09:00 AM",
"schedule": {
"id": 8801,
"isScheduled": true,
"isFailed": false,
"humanDatetime": "Mar 22, 2024 09:00 AM",
"isNotificationMessage": true
}
}Notification message
Update notification message
Updates subject, body, and optionally reschedules a notification email before it is sent. Only scheduled (not yet sent) messages can be updated.
- Type: integer
id requiredResource ID (numeric).
- Type: string
body requiredEmail body as HTML.
- Type: string
subject max length:500requiredEmail subject line.
- Type: integerFormat: int64 nullable
scheduled _at Unix timestamp (seconds) to reschedule send time. If omitted, the existing schedule is preserved.
Updated notification message
Type: object- Type: string
body requiredMessage body content.
- Type: string
date requiredMessage date.
- Type: string
from requiredSender address.
- Type: integer
id requiredMessage ID.
schedule required- Type: stringenumconst:''
- Type: string
subject requiredMessage subject.
- Type: string
to requiredRecipient address.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notification-messages/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"subject": "",
"body": "",
"scheduled_at": 1
}'
{
"id": 70001,
"from": "notifications@example.com",
"to": "john.doe@example.com",
"subject": "Update on your application (revised)",
"body": "<p>Thank you for your interest. We'd like to keep your profile on file for future roles.</p>",
"date": "Mar 22, 2024 09:00 AM",
"schedule": {
"id": 8801,
"isScheduled": true,
"isFailed": false,
"humanDatetime": "Mar 24, 2024 09:00 AM",
"isNotificationMessage": true
}
}Updated notification message
Cancel notification message
Cancels a scheduled notification email before it is sent. Already sent messages cannot be canceled.
- Type: integer
id requiredResource ID (numeric).
Message canceled
Type: object- Type: boolean
success requiredAlways true on success.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/notification-messages/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Message canceled
Cancel all notification messages for candidate
Cancels all scheduled notification emails for a candidate. Already sent notifications are not affected. Returns success even if no scheduled notifications exist.
- Type: string
id Pattern: ^[A-Za-z0-9_-]+$requiredCandidate ID (numeric) or alias
All scheduled notifications canceled
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/candidates/{id}/notification-messages' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}All scheduled notifications canceled
Forms
Application forms and per-question required/optional/hidden status control.
List forms
Returns paginated application forms for the target company. Use to bootstrap questionnaire builders and sync form catalogs.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Form list
Type: object- Type: array object[] · Form[]
forms requiredArray of forms.
- Type: integer
id requiredForm ID.
- Type: string
name requiredForm name.
- Type: array object[] · Question[]
questions Array of questions on this form. Present only when
view=full(default); omitted entirely whenview=summary— forms can embed dozens of question definitions.- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"forms": [
{
"id": 10,
"name": "Software Engineer Application",
"questions": [
{
"id": 201,
"text": "Years of experience?",
"type": "short_text",
"options": [],
"status": "required"
}
]
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Form list
Create form
Creates a new form and optionally attaches existing questions. Useful for standardized intake process setup.
- Type: string
name requiredForm name.
- Type: integer
company _id Target company ID.
- Type: array integer[]
questions Array of question IDs to attach to this form.
Created form
Type: object- Type: integer
id requiredForm ID.
- Type: string
name requiredForm name.
- Type: array object[] · Question[]
questions Array of questions on this form. Present only when
view=full(default); omitted entirely whenview=summary— forms can embed dozens of question definitions.- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"name": "",
"questions": [
1
]
}'
{
"id": 11,
"name": "Designer Application",
"questions": []
}Created form
Get form
Returns form details with included question statuses. Use as canonical read endpoint for form rendering.
- Type: integer
id requiredResource ID (numeric).
Form
Type: object- Type: integer
id requiredForm ID.
- Type: string
name requiredForm name.
- Type: array object[] · Question[]
questions Array of questions on this form. Present only when
view=full(default); omitted entirely whenview=summary— forms can embed dozens of question definitions.- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 10,
"name": "Software Engineer Application",
"url_backoffice": "https://app.100hires.com/settings/forms/10/edit",
"questions": [
{
"id": 201,
"text": "Years of experience?",
"type": "short_text",
"status": "required"
},
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript"
],
"status": "optional"
}
]
}Form
Update form
Updates form metadata and question composition. Supports iterative form design and rollout workflows.
- Type: integer
id requiredResource ID (numeric).
- Type: string
name requiredForm name.
- Type: array integer[]
questions Array of question IDs to attach to this form.
Updated form
Type: object- Type: integer
id requiredForm ID.
- Type: string
name requiredForm name.
- Type: array object[] · Question[]
questions Array of questions on this form. Present only when
view=full(default); omitted entirely whenview=summary— forms can embed dozens of question definitions.- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "",
"questions": [
1
]
}'
{
"id": 10,
"name": "Software Engineer Application",
"url_backoffice": "https://app.100hires.com/settings/forms/10/edit",
"questions": [
{
"id": 201,
"text": "Years of experience?",
"type": "short_text",
"status": "required"
},
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript"
],
"status": "optional"
}
]
}Updated form
Delete form
Deletes a form from active usage. Use when retiring obsolete intake flows.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Update question status inside form
Changes the status (required/optional/hidden) of a form-question relation. Use for fine-grained validation control.
- Type: integer
form _id requiredApplication form ID.
- Type: integer
question _id requiredQuestion ID.
- Type: stringenum
status requiredQuestion visibility on this form: required, optional, or hidden.
required optional hidden
Updated form
Type: object- Type: integer
id requiredForm ID.
- Type: string
name requiredForm name.
- Type: array object[] · Question[]
questions Array of questions on this form. Present only when
view=full(default); omitted entirely whenview=summary— forms can embed dozens of question definitions.- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/forms/1/questions/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"status": "required"
}'
{
"id": 10,
"name": "Software Engineer Application",
"url_backoffice": "https://app.100hires.com/settings/forms/10/edit",
"questions": [
{
"id": 201,
"text": "Years of experience?",
"type": "short_text",
"status": "required"
},
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript"
],
"status": "optional"
}
]
}Updated form
Questions
Reusable question catalog and supported question type discovery.
List questions
Returns paginated question catalog for the target company.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Question list
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · Question[]
questions requiredArray of questions.
- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"questions": [
{
"id": 201,
"text": "Years of experience?",
"type": "short_text"
},
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript"
]
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 2
}
}Question list
Create question
Creates a reusable question definition with optional options for dropdown types. Used by forms and questionnaires.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type (from GET /questions/types).
- Type: integer
company _id Target company ID.
- Type: array string[]
options Answer options (for select/multiselect question types).
Created question
Type: object- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"text": "",
"type": "",
"options": [
""
]
}'
{
"id": 203,
"text": "Years of experience?",
"type": "short_text"
}Created question
Get question
Returns question definition including type and options. Use for editors, validators, and sync clients.
- Type: integer
id requiredResource ID (numeric).
Question
Type: object- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript"
]
}Question
Update question
Updates text/type/options of an existing question definition. Supports schema evolution of assessment content.
- Type: integer
id requiredResource ID (numeric).
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type (from GET /questions/types).
- Type: array string[]
options Answer options (for select/multiselect question types).
Updated question
Type: object- Type: integer
id requiredQuestion ID.
- Type: string
text requiredQuestion text.
- Type: string
type requiredQuestion type.
- Type: array string[]
options Answer options for select/multiselect types.
- Type: stringenum
status Visibility status on the form.
required optional hidden
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"text": "",
"type": "",
"options": [
""
]
}'
{
"id": 202,
"text": "Preferred programming language?",
"type": "single_choice",
"options": [
"Python",
"Java",
"Go",
"TypeScript",
"Rust"
]
}Updated question
Delete question
Deletes a reusable question from the catalog. Use cautiously when deprecating question banks.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
List available question types
Returns available question types supported by the platform. Use this endpoint to drive dynamic form builders.
Question types
Type: object- Type: array string[]
types requiredArray of supported question types.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/questions/types \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"types": [
"short_text",
"long_text",
"single_choice",
"multiple_choice",
"file_upload",
"score_card",
"number",
"boolean",
"date",
"time",
"email",
"phone"
]
}Question types
Email Templates
Email template CRUD for automation, nurture campaigns, and manual outreach.
List email templates
Returns paginated email templates for the target company.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
Email template list
Type: object- Type: array object[] · EmailTemplate[]
email _templates requiredArray of email templates.
- Type: string
body Email body HTML as stored. Placeholders are stored as
<tag>HTML produced byPOST /template-placeholders/prepareand rendered at send time. Present only whenview=full(default); omitted entirely whenview=summary— template bodies can be tens of KB each. - Type: integer
created _at Unix timestamp
- Type: integer
id Email template ID
- Type: string
name Template name
- Type: string
subject Email subject line as stored. Placeholders, when present, are stored as
<tag>HTML produced byPOST /template-placeholders/prepare; they are rendered to real values only at send time, not on read. - Type: integer
updated _at Unix timestamp
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this email template in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/email-templates \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"email_templates": [
{
"id": 401,
"name": "Interview Invitation",
"subject": "Interview invitation",
"body": "<p>Hi <tag contenteditable=\"false\" data-type=\"system\" data-identifier=\"first_name\">First Name</tag>, we'd like to invite you for an interview.</p>",
"created_at": 1711036800,
"updated_at": 1711036800
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Email template list
Create email template
Creates a new email template with subject and body.
Placeholder workflow:
GET /template-placeholders— list available placeholdersPOST /template-placeholders/prepare— convert chosen placeholder to an HTML<tag>element- Insert the returned HTML tag into the template body
POST /email-templates— save the template with embedded placeholder tags
- Type: string
body requiredEmail body HTML.
Placeholders: literal
{{first_name}}tokens are NOT substituted — the recipient will see the raw text. To embed a placeholder, callPOST /template-placeholders/prepareand insert the returned<tag contenteditable="false" data-type="…" data-identifier="…">…</tag>element into the HTML at the position where the value should appear. - Type: string
name requiredTemplate name
- Type: string
subject requiredEmail subject line. Plain text.
Placeholders: literal
{{first_name}}/{{job_title}}tokens are NOT substituted — they will be delivered to the recipient verbatim. To embed a placeholder, callPOST /template-placeholders/prepareand paste the returned HTML<tag>…</tag>string into this field. - Type: integer
company _id Target company ID.
Created email template
Type: object- Type: string
body Email body HTML as stored. Placeholders are stored as
<tag>HTML produced byPOST /template-placeholders/prepareand rendered at send time. Present only whenview=full(default); omitted entirely whenview=summary— template bodies can be tens of KB each. - Type: integer
created _at Unix timestamp
- Type: integer
id Email template ID
- Type: string
name Template name
- Type: string
subject Email subject line as stored. Placeholders, when present, are stored as
<tag>HTML produced byPOST /template-placeholders/prepare; they are rendered to real values only at send time, not on read. - Type: integer
updated _at Unix timestamp
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this email template in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/email-templates \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"name": "",
"subject": "",
"body": ""
}'
{
"id": 402,
"name": "Rejection Letter",
"subject": "Update on your application",
"body": "<p>Dear <tag contenteditable=\"false\" data-type=\"system\" data-identifier=\"first_name\">First Name</tag>, thank you for your interest.</p>",
"created_at": 1711036800,
"updated_at": 1711036800
}Created email template
Get email template
Returns a single email template by ID with subject and body content.
- Type: integer
id requiredResource ID (numeric).
Email template
Type: object- Type: string
body Email body HTML as stored. Placeholders are stored as
<tag>HTML produced byPOST /template-placeholders/prepareand rendered at send time. Present only whenview=full(default); omitted entirely whenview=summary— template bodies can be tens of KB each. - Type: integer
created _at Unix timestamp
- Type: integer
id Email template ID
- Type: string
name Template name
- Type: string
subject Email subject line as stored. Placeholders, when present, are stored as
<tag>HTML produced byPOST /template-placeholders/prepare; they are rendered to real values only at send time, not on read. - Type: integer
updated _at Unix timestamp
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this email template in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/email-templates/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 401,
"name": "Interview Invitation",
"subject": "Interview invitation",
"body": "<p>Hi <tag contenteditable=\"false\" data-type=\"system\" data-identifier=\"first_name\">First Name</tag>, we'd like to invite you for an interview.</p>",
"created_at": 1711036800,
"updated_at": 1711036800
}Email template
Update email template
Updates an existing email template. Only provided fields are overwritten; omitted fields keep their current values.
To add placeholders to the body, use the same workflow as for creation:
GET /template-placeholders— list available placeholdersPOST /template-placeholders/prepare— get HTML tag for the chosen placeholder- Insert the tag into the body and
PUT /email-templates/{id}
- Type: integer
id requiredResource ID (numeric).
- Type: string
body Email body HTML.
Placeholders: literal
{{first_name}}tokens are NOT substituted — the recipient will see the raw text. To embed a placeholder, callPOST /template-placeholders/prepareand insert the returned<tag contenteditable="false" data-type="…" data-identifier="…">…</tag>element into the HTML at the position where the value should appear. - Type: string
name Template name
- Type: string
subject Email subject line. Plain text.
Placeholders: literal
{{first_name}}/{{job_title}}tokens are NOT substituted — they will be delivered to the recipient verbatim. To embed a placeholder, callPOST /template-placeholders/prepareand paste the returned HTML<tag>…</tag>string into this field.
Updated email template
Type: object- Type: string
body Email body HTML as stored. Placeholders are stored as
<tag>HTML produced byPOST /template-placeholders/prepareand rendered at send time. Present only whenview=full(default); omitted entirely whenview=summary— template bodies can be tens of KB each. - Type: integer
created _at Unix timestamp
- Type: integer
id Email template ID
- Type: string
name Template name
- Type: string
subject Email subject line as stored. Placeholders, when present, are stored as
<tag>HTML produced byPOST /template-placeholders/prepare; they are rendered to real values only at send time, not on read. - Type: integer
updated _at Unix timestamp
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this email template in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/email-templates/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "",
"subject": "",
"body": ""
}'
{
"id": 401,
"name": "Interview Invitation v2",
"subject": "Interview invitation",
"body": "<p>Hi <tag contenteditable=\"false\" data-type=\"system\" data-identifier=\"first_name\">First Name</tag>, we'd love to schedule an interview with you.</p>",
"created_at": 1711036800,
"updated_at": 1711123200
}Updated email template
Delete email template
Soft-deletes an email template. Templates already used in automations will stop being available for new actions.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/email-templates/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Nurture Campaigns
Nurture campaign CRUD with multi-step sequences (email, SMS, voicemail, move stage, assign tag/task).
List nurture campaigns
Returns paginated nurture campaigns for the target company.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Nurture campaign list
Type: object- Type: array object[] · NurtureCampaign[]
nurture _campaigns requiredArray of nurture campaigns.
- Type: integer
id Campaign ID
- Type: integer nullable
response _move _to _stage _id Stage ID to move candidate when they reply
- Type: object
schedule Campaign schedule configuration
- Type: string
formatted Human-readable schedule description
- Type: boolean
send _to _all Whether to send to all candidates or only new ones
- Type: array · NurtureCampaignStep[]
steps Ordered list of campaign steps
Campaign step. The shape depends on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: integer
id requiredStep ID
- Type: stringenum
send _condition requiredCondition to check before executing step
if _no _reply if _no _reply _but _opened
- Type: object
sender requiredMail sender
- Type: integer
id Integer numbers.
- Type: string
type
- Type: integer
template _id requiredEmail template ID
- Type: integer
campaign _id Parent campaign ID
- Type: boolean
is _new _thread Send as new email thread
- Type: integer nullable
schedule _id Sending schedule ID
- Type: string
title Campaign name
- Type: string
type Always "nurture_campaign"
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this nurture campaign in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/nurture-campaigns \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"nurture_campaigns": [
{
"id": 601,
"type": "nurture_campaign",
"title": "Follow-up Sequence",
"send_to_all": false,
"response_move_to_stage_id": null,
"schedule": {
"formatted": "Mon-Fri, 9am-5pm"
},
"steps": [
{
"id": 1001,
"type": "email",
"campaign_id": 601,
"delay_days": 0,
"send_condition": "if_no_reply",
"sender": {
"type": "user",
"id": 1
},
"template_id": 401,
"is_new_thread": true,
"schedule_id": null
}
]
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Nurture campaign list
Create nurture campaign
Creates a new nurture campaign with steps. Optionally bind to a workflow stage via workflow_id and stage_id.
- Type: array · NurtureCampaignStepInput[]
steps requiredCampaign steps (at least one required)
Step input. The required fields depend on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: stringenum
send _condition requiredCondition for sending this step.
if _no _reply if _no _reply _but _opened
- Type: object
sender required- Type: integer
id requiredSender ID
- Type: string
type requiredSender type (e.g. "account", "user")
- Type: integer
template _id requiredEmail template ID
- Type: integer
id Step ID (required for updating existing steps)
- Type: boolean
is _deleted Set to true to remove this step during update
- Type: boolean
is _new _thread Send as new email thread
- Type: boolean
is _send _by _carousel Send by carousel rotation
- Type: integer
schedule _id Sending schedule ID
- Type: string
title requiredCampaign name
- Type: integer
company _id Target company ID (optional if API key is scoped to one company)
- Type: integer
delay _time Delay time in seconds
- Type: integer
relative _days Relative days for schedule
- Type: integer
relative _time Relative time for schedule (seconds from midnight)
- Type: integer
response _move _to _stage _id Stage to move candidate to when they reply
- Type: boolean
send _to _all Send to all candidates or only new ones
- Type: integer
stage _id Stage ID that triggers the campaign
- Type: string
timezone IANA timezone, e.g. "America/New_York"
- Type: integer
workflow _id Workflow ID to bind the campaign to
Created nurture campaign
Type: object- Type: integer
id Campaign ID
- Type: integer nullable
response _move _to _stage _id Stage ID to move candidate when they reply
- Type: object
schedule Campaign schedule configuration
- Type: string
formatted Human-readable schedule description
- Type: boolean
send _to _all Whether to send to all candidates or only new ones
- Type: array · NurtureCampaignStep[]
steps Ordered list of campaign steps
Campaign step. The shape depends on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: integer
id requiredStep ID
- Type: stringenum
send _condition requiredCondition to check before executing step
if _no _reply if _no _reply _but _opened
- Type: object
sender requiredMail sender
- Type: integer
id Integer numbers.
- Type: string
type
- Type: integer
template _id requiredEmail template ID
- Type: integer
campaign _id Parent campaign ID
- Type: boolean
is _new _thread Send as new email thread
- Type: integer nullable
schedule _id Sending schedule ID
- Type: string
title Campaign name
- Type: string
type Always "nurture_campaign"
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this nurture campaign in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/nurture-campaigns \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"company_id": 1,
"title": "",
"workflow_id": 1,
"stage_id": 1,
"delay_time": 1,
"relative_days": 1,
"relative_time": 1,
"timezone": "",
"send_to_all": false,
"response_move_to_stage_id": 1,
"steps": [
{
"id": 1,
"type": "email",
"delay_days": 0,
"send_condition": "if_no_reply",
"is_deleted": true,
"sender": {
"type": "",
"id": 1
},
"template_id": 1,
"is_new_thread": true,
"schedule_id": 1,
"is_send_by_carousel": true
}
]
}'
{
"id": 602,
"type": "nurture_campaign",
"title": "New Candidate Outreach",
"send_to_all": true,
"response_move_to_stage_id": 50,
"schedule": {
"formatted": "Mon-Fri, 9am-5pm"
},
"steps": [
{
"id": 1002,
"type": "email",
"campaign_id": 602,
"delay_days": 0,
"send_condition": "if_no_reply",
"sender": {
"type": "user",
"id": 1
},
"template_id": 401,
"is_new_thread": true,
"schedule_id": null
},
{
"id": 1003,
"type": "email",
"campaign_id": 602,
"delay_days": 3,
"send_condition": "if_no_reply",
"sender": {
"type": "user",
"id": 1
},
"template_id": 402,
"is_new_thread": false,
"schedule_id": null
}
]
}Created nurture campaign
Get nurture campaign
Returns a single nurture campaign by ID with all steps.
- Type: integer
id requiredResource ID (numeric).
Nurture campaign
Type: object- Type: integer
id Campaign ID
- Type: integer nullable
response _move _to _stage _id Stage ID to move candidate when they reply
- Type: object
schedule Campaign schedule configuration
- Type: string
formatted Human-readable schedule description
- Type: boolean
send _to _all Whether to send to all candidates or only new ones
- Type: array · NurtureCampaignStep[]
steps Ordered list of campaign steps
Campaign step. The shape depends on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: integer
id requiredStep ID
- Type: stringenum
send _condition requiredCondition to check before executing step
if _no _reply if _no _reply _but _opened
- Type: object
sender requiredMail sender
- Type: integer
id Integer numbers.
- Type: string
type
- Type: integer
template _id requiredEmail template ID
- Type: integer
campaign _id Parent campaign ID
- Type: boolean
is _new _thread Send as new email thread
- Type: integer nullable
schedule _id Sending schedule ID
- Type: string
title Campaign name
- Type: string
type Always "nurture_campaign"
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this nurture campaign in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/nurture-campaigns/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 601,
"type": "nurture_campaign",
"title": "Follow-up Sequence",
"send_to_all": false,
"response_move_to_stage_id": null,
"schedule": {
"formatted": "Mon-Fri, 9am-5pm"
},
"steps": [
{
"id": 1001,
"type": "email",
"campaign_id": 601,
"delay_days": 0,
"send_condition": "if_no_reply",
"sender": {
"type": "user",
"id": 1
},
"template_id": 401,
"is_new_thread": true,
"schedule_id": null
}
]
}Nurture campaign
Update nurture campaign
Updates an existing nurture campaign. Pass all steps — mark removed steps with is_deleted=true.
- Type: integer
id requiredResource ID (numeric).
- Type: array · NurtureCampaignStepInput[]
steps requiredAll steps — mark removed steps with is_deleted=true
Step input. The required fields depend on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: stringenum
send _condition requiredCondition for sending this step.
if _no _reply if _no _reply _but _opened
- Type: object
sender required- Type: integer
id requiredSender ID
- Type: string
type requiredSender type (e.g. "account", "user")
- Type: integer
template _id requiredEmail template ID
- Type: integer
id Step ID (required for updating existing steps)
- Type: boolean
is _deleted Set to true to remove this step during update
- Type: boolean
is _new _thread Send as new email thread
- Type: boolean
is _send _by _carousel Send by carousel rotation
- Type: integer
schedule _id Sending schedule ID
- Type: string
title requiredCampaign name
- Type: integer
delay _time Delay in minutes before the first step.
- Type: integer
relative _days Number of days offset for scheduling.
- Type: integer
relative _time Time of day for scheduled sends (HH:MM format).
- Type: integer
response _move _to _stage _id Stage ID to move candidates to when they respond.
- Type: boolean
send _to _all Whether to send to all candidates or only new ones.
- Type: integer
stage _id Pipeline stage ID that triggers the campaign.
- Type: string
timezone Timezone for scheduled sends (e.g. America/New_York).
- Type: integer
workflow _id Workflow ID this campaign is associated with.
Updated nurture campaign
Type: object- Type: integer
id Campaign ID
- Type: integer nullable
response _move _to _stage _id Stage ID to move candidate when they reply
- Type: object
schedule Campaign schedule configuration
- Type: string
formatted Human-readable schedule description
- Type: boolean
send _to _all Whether to send to all candidates or only new ones
- Type: array · NurtureCampaignStep[]
steps Ordered list of campaign steps
Campaign step. The shape depends on the step
type.type Discriminatorenumconst:emailrequiredStep type discriminator.
email
- Type: integer
delay _days min:0requiredDays to wait before executing this step
- Type: integer
id requiredStep ID
- Type: stringenum
send _condition requiredCondition to check before executing step
if _no _reply if _no _reply _but _opened
- Type: object
sender requiredMail sender
- Type: integer
id Integer numbers.
- Type: string
type
- Type: integer
template _id requiredEmail template ID
- Type: integer
campaign _id Parent campaign ID
- Type: boolean
is _new _thread Send as new email thread
- Type: integer nullable
schedule _id Sending schedule ID
- Type: string
title Campaign name
- Type: string
type Always "nurture_campaign"
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL to edit this nurture campaign in the 100Hires recruiter app. Use to render deep-links in agent UIs.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/nurture-campaigns/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"title": "",
"workflow_id": 1,
"stage_id": 1,
"delay_time": 1,
"relative_days": 1,
"relative_time": 1,
"timezone": "",
"send_to_all": true,
"response_move_to_stage_id": 1,
"steps": [
{
"id": 1,
"type": "email",
"delay_days": 0,
"send_condition": "if_no_reply",
"is_deleted": true,
"sender": {
"type": "",
"id": 1
},
"template_id": 1,
"is_new_thread": true,
"schedule_id": 1,
"is_send_by_carousel": true
}
]
}'
{
"id": 601,
"type": "nurture_campaign",
"title": "Follow-up Sequence v2",
"send_to_all": true,
"response_move_to_stage_id": 50,
"schedule": {
"formatted": "Mon-Fri, 9am-5pm"
},
"steps": [
{
"id": 1001,
"type": "email",
"campaign_id": 601,
"delay_days": 0,
"send_condition": "if_no_reply",
"sender": {
"type": "user",
"id": 1
},
"template_id": 401,
"is_new_thread": true,
"schedule_id": null
}
]
}Updated nurture campaign
Delete nurture campaign
Soft-deletes a nurture campaign. Active campaign executions will be stopped.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/nurture-campaigns/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Template Placeholders
Discover and prepare dynamic placeholders (e.g. first name, job title) for use in email templates. Placeholders are inserted as HTML <tag> elements returned by POST /template-placeholders/prepare; raw {{…}} tokens are not substituted.
List available placeholders
Returns available placeholders for email templates with pagination.
Workflow: Use this endpoint to discover placeholders, then call POST /template-placeholders/prepare with the chosen placeholder to get an HTML tag. Insert that tag into the email template body.
Use type to filter by category, q to search by label.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: stringenum
type Filter by placeholder type: profile_field, job_variable, questionnaire_link, self_scheduling_link
profile _field job _variable questionnaire _link self _scheduling _link
- Type: integerenum
is _notification Include notification-specific system placeholders
0 1
- Type: string
q Filter placeholders by label (case-insensitive substring match)
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Placeholder list
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · TemplatePlaceholder[]
placeholders requiredArray of placeholders.
- Type: string
form _name Form name (for form question placeholders)
- Type: integer
form _question _id Form question ID (for candidate_column type)
identifier Placeholder identifier (string or integer depending on type)
- Type: boolean
is _job _variable Whether this is a job variable placeholder
- Type: boolean
is _link Whether this placeholder renders as a link
- Type: integer
job _variable _id Job variable ID (for job_variable type)
- Type: string
label Human-readable label
- Type: integer
qas _profile _question _id Profile question ID (for candidate_column type)
- Type: string
system _column _title System column title (for candidate_column type)
- Type: string
type Placeholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/template-placeholders \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"placeholders": [
{
"type": "system",
"identifier": "first_name",
"label": "First Name",
"is_link": false,
"is_job_variable": false
},
{
"type": "job_variable",
"identifier": "job_title",
"label": "Job Title",
"is_link": false,
"is_job_variable": true,
"job_variable_id": 5
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 2
}
}Placeholder list
Prepare placeholder tag
Converts a placeholder reference into an HTML tag that can be inserted into an email template body.
- Type: string
type requiredPlaceholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)
- Type: integer
form _question _id Form question ID
- Type: string
identifier Placeholder identifier
- Type: integer
job _variable _id Job variable ID
- Type: integer
qas _profile _question _id Profile question ID
- Type: string
system _column _title System column title
Prepared placeholder HTML tag
Type: object- Type: string
html HTML tag string for embedding in template body
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/template-placeholders/prepare \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"type": "",
"identifier": "",
"qas_profile_question_id": 1,
"form_question_id": 1,
"system_column_title": "",
"job_variable_id": 1
}'
{
"html": "<tag contenteditable=\"false\" data-type=\"system\" data-identifier=\"first_name\">First Name</tag>"
}Prepared placeholder HTML tag
Users
Company user directory and role-aware identity lookups.
List users
Returns paginated users for the target company with role context. Useful for access reviews and hiring-team management.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
User list
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · User[]
users requiredArray of users.
- Type: string
full _name requiredUser's full name
- Type: integer
id requiredUnique identifier
- Type: integer | nullFormat: int64
created _at Unix timestamp (seconds)
- Type: integer | null
default _mail _account _id ID of the user's default mail account. Use this as
from_account_idwhen sending emails viaPOST /candidates/{id}/messages. Null if the user has no configured mailbox. - Type: string | null
email User's email address
- Type: string | null
role User's role in the company (e.g. admin, member)
- Type: integer | nullFormat: int64
updated _at Unix timestamp (seconds)
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/users \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"users": [
{
"id": 1,
"full_name": "Alice Smith",
"email": "alice@acme.com",
"role": "admin",
"default_mail_account_id": 301,
"created_at": 1711036800,
"updated_at": 1711036800
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}User list
Get user
Returns a single user accessible in current tenant scope. Use for identity resolution in automation flows.
- Type: integer
id requiredResource ID (numeric).
User
Type: object- Type: string
full _name requiredUser's full name
- Type: integer
id requiredUnique identifier
- Type: integer | nullFormat: int64
created _at Unix timestamp (seconds)
- Type: integer | null
default _mail _account _id ID of the user's default mail account. Use this as
from_account_idwhen sending emails viaPOST /candidates/{id}/messages. Null if the user has no configured mailbox. - Type: string | null
email User's email address
- Type: string | null
role User's role in the company (e.g. admin, member)
- Type: integer | nullFormat: int64
updated _at Unix timestamp (seconds)
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/users/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 1,
"full_name": "Alice Smith",
"email": "alice@acme.com",
"role": "admin",
"default_mail_account_id": 301,
"created_at": 1711036800,
"updated_at": 1711036800
}User
List user's mail accounts
Returns mail accounts connected to the specified user within the current tenant scope. Use this endpoint to resolve from_account_id before creating scheduled emails.
- Type: integer
id requiredResource ID (numeric).
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
User mail accounts
Type: object- Type: array object[] · MailAccount[]
mail _accounts requiredArray of mail accounts.
- Type: stringFormat: email
email requiredEmail address.
- Type: integer
id requiredMail account ID.
- Type: boolean
is _configured requiredWhether the account is fully configured.
- Type: boolean
is _default requiredWhether this is the default send-from account.
- Type: integer
mailbox _id requiredInternal mailbox ID.
- Type: object · MailAccountProvider nullable
provider required- Type: string
label requiredProvider display name.
- Type: stringenum
name requiredProvider identifier.
gmail outlook
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/users/1/mail-accounts \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"mail_accounts": [
{
"id": 301,
"email": "alice@acme.com",
"provider": {
"name": "gmail",
"label": "Gmail"
},
"mailbox_id": 10,
"is_default": true,
"is_configured": true
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}User mail accounts
Get user's activity feed
Chronological feed (newest first) of the actions the user PERFORMED over a period — created candidates/jobs, notes (full body), stage moves (from/to stage names), disqualifications (reason), manually sent emails (subject + full body), manually sent SMS (full body) and logged Twilio calls (duration, status, transcription when available). Bodies and names are embedded — no follow-up requests needed for a full audit. Automation-originated emails/SMS (nurture campaigns, scheduled sends) are excluded: the feed reflects manual work only. Interviews the user HELD are NOT part of this feed (the event store carries no interviewer attribution) — use GET /interviews?interviewer_user_id={id}&date=... for those; a weekly audit is exactly these two requests. Requires the companyManageSettings permission (Administrator/Recruiter roles) — the same audience as the in-app Activity Log report. company_id disambiguates multi-company API keys; without it the first accessible company the user belongs to is used. Content referencing hard-deleted source records degrades to null with content: missed — the activity row itself always stays. New activity reaches the feed with a few minutes' ingestion lag.
- Type: integer
id requiredResource ID (numeric).
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
since requiredInclusive lower bound on activity timestamp. REQUIRED — the feed is period-scoped. Must be less than or equal to
until(or the current time whenuntilis omitted), otherwise the request fails validation. Accepts a Unix timestamp (seconds) or an ISO-8601 string with timezone offset (e.g.2026-04-01T00:00:00Z). Fractional seconds are accepted but truncated to whole seconds.- Type: integermin:0
Integer numbers.
until Inclusive upper bound on activity timestamp; defaults to now. Accepts a Unix timestamp (seconds) or an ISO-8601 string with timezone offset.
- Type: integermin:0
Integer numbers.
- Type: string
event _type Comma-separated list of activity types to filter by. Supported:
candidate_added,job_created,stage_moved,hired,disqualified,email_sent,sms_sent,call_logged,note_added. - Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
- Type: stringenum
view Response shape selector for list endpoints.
full(default) returns every field — backward-compatible with pre-existing clients.summaryreturns a thinned payload designed for agent-friendly list browsing: heavy fields (description HTML, embedded profile answers, full message bodies, embedded relations, etc.) are omitted or replaced with*_previewtruncations. Usesummarywhen paging through large result sets and fetch a single record with the correspondingGET /{resource}/{id}endpoint when full data is needed.full summary
User activity feed
Type: object- Type: array · UserActivity[]
activities requiredActivity feed items, newest first.
One user-activity feed item (#3980).
event_id/type/occurred_atare always present; the rest of the object is the per-type payload.candidate/jobreferences are the STANDARD summary payloads (the same objects /candidates and /jobs return). Withview=summarythe heavy bodies (email body, SMS body, note text, call transcription text) are replaced by 200-character*_previewtwins. When the source record behindemail/sms/note/callwas hard-deleted, that key isnullandcontent: missedmarks the degradation — the item itself is never dropped.- nullable
candidate requiredThe STANDARD candidate object in summary view — the same shape /candidates returns (the Candidate schema without
profile). An {id}-only stub when the candidate is hard-deleted; null when the event carries no candidate.- Type: integer
company _id requiredID of the company this candidate belongs to
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredUnique identifier
- Type: integerFormat: int64
updated _at requiredUnix timestamp (seconds)
- Type: string | null
alias Short alphanumeric alias used in profile URLs. Use this to build candidate profile links —
https://app.100hires.com/candidate/{alias}. Also accepted as{id}in API requests. - Type: array object[] · CandidateApplicationSummary[]
applications Summary of all applications this candidate has across jobs
- Type: integer
id requiredApplication ID.
- Type: object
job requiredJob summary (id, title, status).
- Type: integer
id requiredInteger numbers.
- Type: string
title required
- Type: object · IdName nullable
stage - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: integer | null
days _since _last _message Number of whole days since the last message. Computed at request time. Null if no messages exist.
- Type: array string[] | null nullable
emails List of candidate email addresses
- Type: string | null
first _name Candidate's first name
- Type: string | null
ip IP address from which the candidate applied
- Type: integer | nullFormat: int64
last _message _at Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
- Type: string | null
last _name Candidate's last name
- Type: object · IdName nullable
origin Where the candidate originally came from (e.g. job board name)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: array string[] | null nullable
phones List of candidate phone numbers
- Type: array object[] · ProfileAnswer[]
profile Candidate profile field answers (application form responses). Present only when
view=full(default); omitted entirely whenview=summaryto keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.- Type: integer
question _id requiredQuestion ID.
- Type: string
question _text requiredQuestion label.
value requiredAnswer value (string, array, or null).
- Type: object · IdName nullable
source How the candidate was sourced (e.g. LinkedIn, Referral)
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: stringFormat: uri
url _backoffice Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
- Type: string
event _id requiredDeterministic event UUID from the reporting event store.
- Type: integerFormat: int64
occurred _at requiredUnix timestamp (seconds, UTC) of when the action happened.
- enum
type const:candidate_addedrequiredActivity type identifier.
candidate _added
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/users/1/activities?since=1751328000' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"activities": [
{
"event_id": "1ce65710-9ac7-3519-b086-e478adbce719",
"type": "sms_sent",
"occurred_at": 1751450400,
"candidate": {
"id": 15,
"alias": "john-doe",
"first_name": "John",
"last_name": "Doe"
},
"message_id": 6101,
"sms": {
"body": "Hi John, are you available for a quick call tomorrow?"
}
}
],
"pagination": {
"page_size": 20,
"page_count": 1,
"page": 1,
"total_count": 1
}
}User activity feed
Attachments
Download attachment bytes by category and UUID.
URLs in this format are returned in other API responses — resumes (/candidates/{id}/resume), candidate files (/candidates/{id}/files), application attachments (/applications/{id}/attachments), message attachments (inside /candidates/{id}/messages), call recordings (inside activity events).
Authentication is the same Bearer token used for the rest of the API. The response is a binary stream with Content-Type from the stored MIME type, Content-Length, and Content-Disposition: attachment; filename="..." (original filename).
Download attachment bytes
Streams the raw file bytes for an attachment identified by category + uuid.
The full URL is pre-built and returned in other API responses (resume, candidate files, application attachments, message attachments, call recordings). Clients should follow the URL as-is with the same Authorization: Bearer header used elsewhere.
Visibility rules: the attachment must belong to a company accessible by the authenticated API key (partner + clients, or the authenticated company itself). Shadowed candidates return 404.
The response sets Content-Disposition: attachment; filename="..." with the original filename (not the internal hashed name in the URL).
- Type: stringenum
category requiredAttachment category (matches the segment in the returned URL).
application candidate candidate _comment call _recording company _favicon
- Type: stringFormat: uuid
uuid requiredAttachment UUID.
- Type: string
file _name requiredInternal storage filename segment from the URL. Required for the route to match; the
Content-Dispositionheader on the response carries the human-readable original filename.
Raw file bytes.
Type: stringContent - Type MIME type of the file (e.g.
application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document).Type: integerContent - Length File size in bytes.
Type: stringContent - Disposition Always
attachment; filename="..."with the original filename.Type: stringFormat: binarybinary data, used to describe files
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl 'https://api.100hires.com/v2/attachments/application/123e4567-e89b-12d3-a456-426614174000/{file_name}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
@filenameRaw file bytes.
Upload attachment
Uploads a file and creates an attachment in the authenticated company.
Supported categories. The attachment is stored under company_id (if provided — must be accessible by the API key) or the authenticated company by default. The referenced object_id must belong to that same company (strict company_id match, no cross-company uploads).
voicemail— audio file (wav/mp3, ≤20 MB). Noobject_idrequired. Returneduuidcan be referenced asattachment_uuidin nurture-campaign voicemail steps.candidate— generic candidate file.object_id= candidate ID.application— application attachment (signed docs, offer letters, etc.).object_id= application ID.candidate_comment— attachment for a candidate comment.object_id= comment ID.job_note— attachment for a job note.object_id= job note ID.company_favicon,company_header,company_link_preview— company branding assets.object_id= company ID (must match the authenticated company or a client company the API key can access).
Returns ApiAttachment. Follow url with the same Bearer token to download the file later.
- Type: stringenum
category requiredAttachment category. Determines file-type validation rules and
object_idrequirements.voicemail candidate application candidate _comment job _note company _favicon company _header company _link _preview
- Type: object · FileData
file required- Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: integer nullable
company _id Target company ID. Required only for partner API keys that manage multiple client companies — pick the company the attachment belongs to. If omitted, defaults to the authenticated company. The attachment is stored under this company, and the referenced
object_id(when present) MUST belong to this same company — mismatch returns 404. - Type: integer nullable
object _id Target object ID. Required for every category except
voicemail. Resolves to candidate/application/comment/job-note/company per category. The object's company is strictly matched againstcompany_id(or authenticated company whencompany_idomitted); no cross-company uploads.
Uploaded attachment
Type: objectUnified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).
urlis an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes withAuthorization: Bearer <API_KEY>. The response onurlsetsContent-Disposition: attachment; filename="..."with the human-readable filename.Use
uuidto reference the attachment in other endpoints (e.g. nurture voicemail step).- Type: object · AttachmentFile
file required- Type: string
file _ext requiredFile extension.
- Type: string
file _type requiredFile type category.
- Type: boolean nullable
is _image requiredWhether the file is an image.
- Type: string
orig _file _name requiredOriginal file name.
- Type: string
readable _size requiredHuman-readable file size.
- Type: string
relative _time requiredHuman-readable time since upload (e.g.
"2 days ago"). - Type: stringFormat: uri nullable
url requiredAbsolute download URL (e.g.
https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit withAuthorization: Bearer <API_KEY>. - Type: stringFormat: uuid
uuid requiredUnique attachment identifier. Stable across API calls; use in referencing endpoints.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/attachments \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"category": "voicemail",
"company_id": 1,
"object_id": 1,
"file": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"uuid": "9f8e7d6c-5b4a-3210-9f8e-7d6c5b4a3210",
"url": "https://api.100hires.com/v2/attachments/voicemail/9f8e7d6c-5b4a-3210-9f8e-7d6c5b4a3210/welcome_message.mp3",
"relative_time": "just now",
"file": {
"is_image": false,
"orig_file_name": "welcome_message.mp3",
"file_ext": "mp3",
"file_type": "audio/mpeg",
"readable_size": "512 KB"
}
}Uploaded attachment
Companies
Partner multi-tenant company management, including restore and webhook registration.
- get/companies
- post/companies
- get/companies/{id}
- put/companies/{id}
- delete/companies/{id}
- patch/companies/{id}/restore
- get/companies/{id}/webhooks
- post/companies/{id}/webhooks
- post/companies/{id}/webhooks/{webhook_id}/rotate-secret
- delete/companies/{id}/webhooks/{webhook_id}
- get/companies/mail-accounts
- get/companies/{id}/mail-accounts
List partner companies
Returns partner-accessible companies with pagination metadata. Use for tenant discovery and management panels.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Company list
Type: object- Type: array object[] · Company[]
companies requiredArray of companies.
- Type: integer
id requiredUnique identifier
- Type: string
name requiredCompany name
- Type: string | null
company _owner _email Email of the company owner
- Type: string | null
company _owner _name Full name of the company owner
- Type: string | null
company _owner _phone Phone number of the company owner
- Type: boolean
is _staffing _agency Whether this company is a staffing agency
- Type: string | null
logo URL of the company logo image
- Type: string | null
url Company careers page URL
- Type: string | null
website Company website URL
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"companies": [
{
"id": 101,
"name": "Acme Corp",
"website": "https://acme.com",
"url": "https://app.100hires.com/acme",
"is_staffing_agency": false,
"logo": "https://cdn.100hires.com/logos/acme.png",
"company_owner_email": "owner@acme.com",
"company_owner_phone": "+1-555-0100",
"company_owner_name": "John Doe"
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Company list
Create company
Creates a client company and links ownership context according to partner rules. Typical entrypoint for multi-tenant onboarding.
- Type: stringFormat: email
company _owner _email requiredCompany owner email address.
- Type: string
company _owner _name requiredCompany owner full name.
- Type: string
name requiredCompany name.
- Type: string
company _owner _phone Company owner phone number.
- Type: boolean
is _staffing _agency Whether this company is a staffing agency.
- Type: object · FileData
logo - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: string
url Company profile URL.
- Type: string
website Company website URL.
Created company
Type: object- Type: integer
id requiredUnique identifier
- Type: string
name requiredCompany name
- Type: string | null
company _owner _email Email of the company owner
- Type: string | null
company _owner _name Full name of the company owner
- Type: string | null
company _owner _phone Phone number of the company owner
- Type: boolean
is _staffing _agency Whether this company is a staffing agency
- Type: string | null
logo URL of the company logo image
- Type: string | null
url Company careers page URL
- Type: string | null
website Company website URL
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "",
"website": "",
"url": "",
"company_owner_email": "",
"company_owner_name": "",
"company_owner_phone": "",
"is_staffing_agency": true,
"logo": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"id": 102,
"name": "Acme Corp",
"website": "https://acme.com",
"url": "https://app.100hires.com/acme",
"is_staffing_agency": false,
"logo": null,
"company_owner_email": "owner@acme.com",
"company_owner_phone": "+1-555-0100",
"company_owner_name": "John Doe"
}Created company
Get company
Returns company profile and owner metadata used by partner APIs. Use before updates or ownership-sensitive actions.
- Type: integer
id requiredResource ID (numeric).
Company
Type: object- Type: integer
id requiredUnique identifier
- Type: string
name requiredCompany name
- Type: string | null
company _owner _email Email of the company owner
- Type: string | null
company _owner _name Full name of the company owner
- Type: string | null
company _owner _phone Phone number of the company owner
- Type: boolean
is _staffing _agency Whether this company is a staffing agency
- Type: string | null
logo URL of the company logo image
- Type: string | null
url Company careers page URL
- Type: string | null
website Company website URL
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1 \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 101,
"name": "Acme Corp",
"website": "https://acme.com",
"url": "https://app.100hires.com/acme",
"is_staffing_agency": false,
"logo": "https://cdn.100hires.com/logos/acme.png",
"company_owner_email": "owner@acme.com",
"company_owner_phone": "+1-555-0100",
"company_owner_name": "John Doe"
}Company
Update company
Updates company profile, owner contact data, and optional logo payload. Supports partner-operated account management flows.
- Type: integer
id requiredResource ID (numeric).
- Type: stringFormat: email
company _owner _email Company owner email address.
- Type: string
company _owner _name Company owner full name.
- Type: string
company _owner _phone Company owner phone number.
- Type: boolean
is _staffing _agency Whether this company is a staffing agency.
- Type: object · FileData
logo - Type: string
data requiredBase64 content
- Type: string
file _name requiredOriginal file name.
- Type: string
mime _type requiredMIME type (e.g. application/pdf).
- Type: integer
size Optional for uploads, returned in responses
- Type: string
name Company name.
- Type: string
url Company profile URL.
- Type: string
website Company website URL.
Updated company
Type: object- Type: integer
id requiredUnique identifier
- Type: string
name requiredCompany name
- Type: string | null
company _owner _email Email of the company owner
- Type: string | null
company _owner _name Full name of the company owner
- Type: string | null
company _owner _phone Phone number of the company owner
- Type: boolean
is _staffing _agency Whether this company is a staffing agency
- Type: string | null
logo URL of the company logo image
- Type: string | null
url Company careers page URL
- Type: string | null
website Company website URL
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1 \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "",
"website": "",
"url": "",
"company_owner_email": "",
"company_owner_name": "",
"company_owner_phone": "",
"is_staffing_agency": true,
"logo": {
"data": "",
"file_name": "",
"mime_type": "",
"size": 1
}
}'
{
"id": 101,
"name": "Acme Corp Updated",
"website": "https://acme.com",
"url": "https://app.100hires.com/acme",
"is_staffing_agency": false,
"logo": "https://cdn.100hires.com/logos/acme.png",
"company_owner_email": "owner@acme.com",
"company_owner_phone": "+1-555-0200",
"company_owner_name": "John Doe"
}Updated company
Delete company
Deletes a company. Use for lifecycle control in partner tenancy management.
- Type: integer
id requiredResource ID (numeric).
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
Restore company
Restores a previously deleted company and re-enables it for active use. Use for recovery and rollback scenarios.
- Type: integer
id requiredResource ID (numeric).
Restored company
Type: object- Type: integer
id requiredUnique identifier
- Type: string
name requiredCompany name
- Type: string | null
company _owner _email Email of the company owner
- Type: string | null
company _owner _name Full name of the company owner
- Type: string | null
company _owner _phone Phone number of the company owner
- Type: boolean
is _staffing _agency Whether this company is a staffing agency
- Type: string | null
logo URL of the company logo image
- Type: string | null
url Company careers page URL
- Type: string | null
website Company website URL
Bad request
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/restore \
--request PATCH \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 101,
"name": "Acme Corp",
"website": "https://acme.com",
"url": "https://app.100hires.com/acme",
"is_staffing_agency": false,
"logo": "https://cdn.100hires.com/logos/acme.png",
"company_owner_email": "owner@acme.com",
"company_owner_phone": "+1-555-0100",
"company_owner_name": "John Doe"
}Restored company
List company webhooks
Lists webhook subscriptions configured at company scope.
- Type: integer
id requiredResource ID (numeric).
Company webhooks
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · Webhook[]
webhooks requiredArray of webhooks.
- Type: integer
id Unique identifier
- Type: string
url Endpoint URL that receives webhook event payloads
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/webhooks \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"webhooks": [
{
"id": 501,
"url": "https://hooks.example.com/100hires"
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Company webhooks
Create company webhook
Creates a company-scoped webhook subscription. Use for outbound company-level event integrations.
- Type: integer
id requiredResource ID (numeric).
- Type: string
url max length:2048requiredWebhook destination URL. Must be HTTPS.
Created webhook.
signing_secretis returned only here — store it securely.Type: object- Type: integer
id Unique identifier
- Type: string
signing _secret HMAC-SHA256 signing secret for this webhook, used to verify the
x-hires-signature-v2header. Returned ONLY in create and rotate-secret responses — store it securely, it is never shown again. - Type: string
url Endpoint URL that receives webhook event payloads
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/webhooks \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"url": ""
}'
{
"id": 502,
"url": "https://hooks.example.com/100hires",
"signing_secret": "3f9a8b7c6d5e4f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a"
}Created webhook. signing_secret is returned only here — store it securely.
Rotate company webhook signing secret
Rotates the webhook's signing secret with zero downtime. The previous secret remains valid for a grace window so both old and new x-hires-signature-v2 signatures are accepted while you switch over.
- Type: integer
id requiredResource ID (numeric).
- Type: integer
webhook _id requiredWebhook subscription ID.
New signing secret (the previous one stays valid for a grace window).
Type: object- Type: integer
id Unique identifier
- Type: string
signing _secret HMAC-SHA256 signing secret for this webhook, used to verify the
x-hires-signature-v2header. Returned ONLY in create and rotate-secret responses — store it securely, it is never shown again. - Type: string
url Endpoint URL that receives webhook event payloads
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/webhooks/1/rotate-secret \
--request POST \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": 502,
"url": "https://hooks.example.com/100hires",
"signing_secret": "9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c"
}New signing secret (the previous one stays valid for a grace window).
Delete company webhook
Deletes a company-scoped webhook subscription by ID. Use for endpoint retirement and security rotation.
- Type: integer
id requiredResource ID (numeric).
- Type: integer
webhook _id requiredWebhook subscription ID.
Deleted
Type: object- Type: boolean
success requiredAlways true on success.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/webhooks/1 \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true
}Deleted
List all mail accounts for current company
Returns all mail accounts for all users in the current company. Use this to resolve from_account_id before creating scheduled emails.
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Company mail accounts
Type: object- Type: array object[] · CompanyMailAccount[]
mail _accounts requiredArray of mail accounts.
- Type: integer
company _id requiredCompany ID.
- Type: stringFormat: email
email requiredEmail address.
- Type: integer
id requiredMail account ID.
- Type: boolean
is _configured requiredWhether the account is fully configured.
- Type: boolean
is _default requiredWhether this is the user's default send-from account.
- Type: integer
mailbox _id requiredInternal mailbox ID.
- Type: object · MailAccountProvider nullable
provider required- Type: string
label requiredProvider display name.
- Type: stringenum
name requiredProvider identifier.
gmail outlook
- Type: stringFormat: email nullable
user _email requiredOwner user email.
- Type: integer
user _id requiredOwner user ID.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/mail-accounts \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"mail_accounts": [
{
"id": 301,
"company_id": 101,
"user_id": 1,
"user_email": "recruiter@acme.com",
"email": "hiring@acme.com",
"provider": {
"name": "gmail",
"label": "Gmail"
},
"mailbox_id": 10,
"is_default": true,
"is_configured": true
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Company mail accounts
List all mail accounts for a company
Returns all mail accounts for all users in the specified company. The company must be accessible (own company or a client).
- Type: integer
id requiredResource ID (numeric).
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Company mail accounts
Type: object- Type: array object[] · CompanyMailAccount[]
mail _accounts requiredArray of mail accounts.
- Type: integer
company _id requiredCompany ID.
- Type: stringFormat: email
email requiredEmail address.
- Type: integer
id requiredMail account ID.
- Type: boolean
is _configured requiredWhether the account is fully configured.
- Type: boolean
is _default requiredWhether this is the user's default send-from account.
- Type: integer
mailbox _id requiredInternal mailbox ID.
- Type: object · MailAccountProvider nullable
provider required- Type: string
label requiredProvider display name.
- Type: stringenum
name requiredProvider identifier.
gmail outlook
- Type: stringFormat: email nullable
user _email requiredOwner user email.
- Type: integer
user _id requiredOwner user ID.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/companies/1/mail-accounts \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"mail_accounts": [
{
"id": 301,
"company_id": 101,
"user_id": 1,
"user_email": "recruiter@acme.com",
"email": "hiring@acme.com",
"provider": {
"name": "gmail",
"label": "Gmail"
},
"mailbox_id": 10,
"is_default": true,
"is_configured": true
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Company mail accounts
Taxonomy
Reference dictionaries used across jobs, candidates, and workflow orchestration.
List company tags
Returns all tags available for the target company. Recommended to cache for fast tagging UX and validation.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Tags
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array string[]
tags requiredArray of tags.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/tags \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"tags": [
"Senior",
"Remote",
"Urgent"
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 3
}
}Tags
List workflows
Returns workflows and embedded stages for the target company. Use to build stage-aware integrations and routing rules.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Workflows
Type: object- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
- Type: array object[] · Workflow[]
workflows requiredArray of workflows.
- Type: integer
id requiredWorkflow ID.
- Type: string
name requiredWorkflow name.
- Type: array object[] · WorkflowStage[]
stages requiredArray of stages in this workflow.
- Type: integer
id requiredStage ID.
- Type: string
name requiredStage name.
- Type: integer | null
order Stage position in the pipeline.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/workflows \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"workflows": [
{
"id": 1,
"name": "Default Pipeline",
"stages": [
{
"id": 10,
"name": "Applied",
"order": 1
},
{
"id": 11,
"name": "Interview",
"order": 2
},
{
"id": 12,
"name": "Offer",
"order": 3
}
]
}
],
"pagination": {
"page_size": 25,
"page_count": 1,
"page": 1,
"total_count": 1
}
}Workflows
List workflow stages
Returns pipeline stages filtered by workflow or job when provided. Useful for transition UIs and workflow validation.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
- Type: integer
workflow _id Filter stages by workflow ID (from GET /taxonomy/workflows).
- Type: integer
job _id Filter stages by job ID (returns stages from the job's assigned workflow).
Stages
Type: object- Type: array object[] · WorkflowStage[]
stages requiredArray of pipeline stages.
- Type: integer
id requiredStage ID.
- Type: string
name requiredStage name.
- Type: integer | null
order Stage position in the pipeline.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/workflows/stages \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"stages": [
{
"id": 10,
"name": "Applied",
"order": 1
},
{
"id": 11,
"name": "Interview",
"order": 2
},
{
"id": 12,
"name": "Offer",
"order": 3
}
]
}Stages
List stages for a specific workflow
Returns stages for a specific workflow by ID. Equivalent to GET /workflows/stages?workflow_id={id}.
- Type: integer
id requiredWorkflow ID
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Stages for the specified workflow
Type: object- Type: array object[] · WorkflowStage[]
stages requiredArray of pipeline stages.
- Type: integer
id requiredStage ID.
- Type: string
name requiredStage name.
- Type: integer | null
order Stage position in the pipeline.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/workflows/1/stages \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"stages": [
{
"id": 10,
"name": "Applied",
"order": 1
},
{
"id": 11,
"name": "Interview",
"order": 2
},
{
"id": 12,
"name": "Offer",
"order": 3
}
]
}Stages for the specified workflow
List statuses
Returns job status labels used by the platform. Cache this taxonomy to validate job status updates.
Statuses
Type: object- Type: array string[]
statuses requiredArray of job statuses.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/statuses \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"statuses": [
"draft",
"published",
"on_hold",
"closed",
"archived"
]
}Statuses
List categories
Returns global job categories. Use for job classification and consistent taxonomy mapping.
Categories
Type: object- Type: array object[] · IdName[]
categories requiredArray of job categories.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/categories \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"categories": [
{
"id": 1,
"name": "Engineering"
},
{
"id": 2,
"name": "Design"
},
{
"id": 3,
"name": "Marketing"
}
]
}Categories
List employment types
Returns supported employment types. Use for validation and external system normalization.
Employment types
Type: object- Type: array object[] · IdName[]
employment _types requiredArray of employment types.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/employment-types \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"employment_types": [
{
"id": 1,
"name": "Full-time"
},
{
"id": 2,
"name": "Part-time"
},
{
"id": 3,
"name": "Contract"
}
]
}Employment types
List education levels
Returns education level taxonomy values. Useful for job requirements and structured matching.
Education levels
Type: object- Type: array object[] · IdName[]
education _levels requiredArray of education levels.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/education-levels \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"education_levels": [
{
"id": 1,
"name": "High School"
},
{
"id": 2,
"name": "Bachelor's"
},
{
"id": 3,
"name": "Master's"
}
]
}Education levels
List experience levels
Returns experience level taxonomy values for role seniority modeling.
Experience levels
Type: object- Type: array object[] · IdName[]
experience _levels requiredArray of experience levels.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/experience-levels \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"experience_levels": [
{
"id": 1,
"name": "Entry Level"
},
{
"id": 2,
"name": "Mid Level"
},
{
"id": 3,
"name": "Senior"
}
]
}Experience levels
List origins
Returns candidate origin taxonomy values. Use for attribution analytics and source normalization.
Origins
Type: object- Type: array object[] · IdName[]
origins requiredArray of candidate origins.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/origins \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"origins": [
{
"id": 1,
"name": "Applied"
},
{
"id": 2,
"name": "Sourced"
},
{
"id": 3,
"name": "Referred"
}
]
}Origins
List sources
Returns company-specific source list. Recommended for attribution sync and reporting consistency.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Sources
Type: object- Type: array object[] · IdName[]
sources requiredArray of candidate sources.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/sources \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"sources": [
{
"id": 1,
"name": "LinkedIn"
},
{
"id": 2,
"name": "Indeed"
},
{
"id": 3,
"name": "Company Website"
}
]
}Sources
List boards
Returns available publishing boards with board metadata. Use for distribution setup and board selection UIs.
Boards
Type: object- Type: array object[] · JobBoardItem[]
boards requiredArray of job boards.
- Type: string nullable
indeed _posting _url Public Indeed posting URL when the job has been sourced/posted to Indeed; null otherwise. Populated only for the Indeed board.
- Type: string
name Board identifier.
- Type: string
title Board display name.
- Type: string nullable
ziprecruiter _posting _url Public ZipRecruiter posting URL (the API
preview_url) when the job has been posted to ZipRecruiter; null otherwise. Populated only for the ZipRecruiter board.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/boards \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"boards": [
{
"name": "indeed",
"title": "Indeed"
},
{
"name": "linkedin",
"title": "LinkedIn"
}
]
}Boards
List rejection reasons
Returns configured rejection reasons for the target company. Use to validate rejection actions and analytics.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Rejection reasons
Type: object- Type: array object[] · IdName[]
rejection _reasons requiredArray of rejection reasons.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/rejection-reasons \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"rejection_reasons": [
{
"id": 1,
"name": "Not enough experience"
},
{
"id": 2,
"name": "Position filled"
},
{
"id": 3,
"name": "Salary expectations too high"
}
]
}Rejection reasons
List departments
Returns departments for the target company. Use for job organization filters and reporting dimensions.
- Type: integer
company _id Optional target company ID. Since each API key is already bound to one company, this is only needed when the key owner has access to multiple companies.
Departments
Type: object- Type: array object[] · IdName[]
departments requiredArray of departments.
- Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/departments \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"departments": [
{
"id": 1,
"name": "Engineering"
},
{
"id": 2,
"name": "Product"
},
{
"id": 3,
"name": "Sales"
}
]
}Departments
Billing
Pricing state checks to gate paid-only API capabilities.
Billing/pricing flags for current company
Returns pricing/billing capability flags for the current company context. Use before invoking paid-only API behaviors.
Billing state
Type: object- Type: boolean
is _paid requiredWhether the company has an active paid plan.
- Type: boolean
is _pricing _enabled requiredWhether pricing features are enabled.
- Type: boolean
success requiredWhether the request succeeded.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Forbidden
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/billing \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"success": true,
"is_pricing_enabled": true,
"is_paid": true
}Billing state
Feedback
Structured API feedback endpoint for agents and integrations to report issues and suggest improvements.
Submit API feedback
Submit structured feedback about API usage, missing features, or workflow improvements. Useful for AI agents and integrations to report issues programmatically.
Rate limited to 5 requests per hour per account.
- Type: string
description max length:2000requiredDescription of the issue or feedback
- Type: object
context Arbitrary context object (max 4KB)
- Type: string
endpoint max length:255The API endpoint this feedback relates to
- Type: stringenum
issue _type Category of the issue
missing _filter pagination performance missing _field bulk _operation other
- Type: string
suggested _improvement max length:2000Suggested solution or improvement
Feedback received
Type: object- Type: string
message - Type: boolean
success
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Too many requests
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/feedback \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"description": "For bulk candidate enrichment, need a batch lookup by email. Currently requires N+1 requests.",
"endpoint": "/v2/candidates",
"issue_type": "bulk_operation",
"suggested_improvement": "Add POST /v2/candidates/search with array of emails in request body",
"context": {
"agent": "claude",
"task_description": "Enriching 50 candidates from CSV",
"api_calls_made": 53,
"estimated_optimal_calls": 2
}
}'
{
"success": true,
"message": "Feedback received. Thank you!"
}Feedback received
Career Site
Public API for career site integrations. Authenticates by company slug instead of Bearer token.
Pass the company slug via the X-Company-Slug header (or company_slug query param).
No user context is required — these endpoints are public.
List public jobs
Returns publicly visible jobs for the given company. Supports filtering by department, employment type, city, and country. Use to power a custom careers page.
- Type: string
company _slug Company slug (alternative to X-Company-Slug header)
- Type: integer
department _id Filter by department ID.
- Type: integer
employment _type _id Filter by employment type ID (e.g. Full-time, Part-time).
- Type: string
city Filter by job city (exact match).
- Type: string
country Filter by job country (exact match).
- Type: integer
page min:1Page number (1-based). Defaults to 1.
- Type: integer
size min:1max:100Number of items per page (1–100). Defaults to 20.
Paginated list of public jobs
Type: object- Type: array object[] · CareerSiteJob[]
jobs requiredArray of public jobs.
- Type: stringFormat: uri
application _url requiredPublic application form URL.
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: string
description requiredHTML content
- Type: integer
id requiredJob ID.
- Type: boolean
is _remote requiredWhether this is a remote position.
- Type: object · CareerSiteLocation
location required- Type: string nullable
city City.
- Type: string nullable
country Country.
- Type: string nullable
state State or region.
- Type: string
title requiredJob title.
- Type: object · IdName nullable
department - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · Pagination
pagination required- Type: integer
page requiredCurrent page number.
- Type: integer
page _count requiredTotal number of pages.
- Type: integer
page _size requiredItems per page.
- Type: integer
total _count requiredTotal number of items.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/career-site/jobs \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
{
"jobs": [
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "<p>We are looking for a senior engineer...</p>",
"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
}
}Paginated list of public jobs
Get public job
Returns full details for a single public or unlisted job. Returns 404 for draft, archived, or internal jobs.
- Type: integer
id requiredResource ID (numeric).
Job detail
- Type: stringFormat: uri
application _url requiredPublic application form URL.
- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: string
description requiredHTML content
- Type: integer
id requiredJob ID.
- Type: boolean
is _remote requiredWhether this is a remote position.
- Type: object · CareerSiteLocation
location required- Type: string nullable
city City.
- Type: string nullable
country Country.
- Type: string nullable
state State or region.
- Type: string
title requiredJob title.
- Type: object · IdName nullable
department - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
education _level - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
employment _type - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: object · IdName nullable
experience _level - Type: integer
id requiredUnique identifier.
- Type: string
name requiredDisplay name.
- Type: string nullable
salary _currency - Type: number nullable
salary _max - Type: number nullable
salary _min - Type: string nullable
salary _period
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
curl https://api.100hires.com/v2/career-site/jobs/1 \
--header 'X-Company-Slug: YOUR_SECRET_TOKEN'
{
"id": 5001,
"title": "Senior Software Engineer",
"description": "<p>We are looking for a senior engineer to join our team.</p>",
"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"
}
}Job detail
Submit job application
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).
- Type: stringFormat: email
email requiredApplicant email address.
- Type: string
first _name requiredApplicant first name.
- Type: integer
job _id requiredJob ID to apply to.
- Type: string
last _name requiredApplicant last name.
- Type: array object[] | null nullable
answers Array of form answer objects
Empty object - Type: stringFormat: uri nullable
linkedin _url Applicant LinkedIn profile URL.
- Type: string nullable
phone Applicant phone number.
- Type: object · CareerSiteResumeUpload nullable
resume Resume file upload (base64 encoded).
- Type: string
data requiredBase64-encoded file content
- Type: string
file _name requiredResume file name.
- Type: string
mime _type requiredResume MIME type.
- Type: string nullable
source Application source identifier.
Application created
Type: object- Type: integerFormat: int64
created _at requiredUnix timestamp (seconds)
- Type: integer
id requiredCreated application ID.
- Type: integer
job _id requiredJob ID.
- Type: string
status requiredApplication status.
Validation error
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredValidation error details object.
- Type: string
name requiredAlways "Validation Error" for validation failures
- Type: object
validation _errors requiredField-level validation errors (field name to error message)
- Type: string
property Name
- Type: integer
code Integer numbers.
- Type: string
message - Type: integer
status Integer numbers.
Unauthorized
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Not found
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
Content-Type must be application/json
Type: integerX - Rate Limit - Limit Request limit for the current rate-limit window. Returned for unapproved API keys.
Type: integerX - Rate Limit - Remaining Remaining requests in the current rate-limit window. Returned for unapproved API keys.
Type: integerFormat: int64X - Rate Limit - Reset Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.
Type: object- Type: object
error requiredError details object.
- Type: integer
code requiredApplication error code (0 for generic errors)
- Type: string
message requiredDetailed error message
- Type: string
name requiredHuman-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")
- Type: integer
status requiredHTTP status code
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": [
{}
]
}'
{
"id": 90001,
"job_id": 5001,
"status": "pending",
"created_at": 1711036800
}Application created
Models
| Enabled | Key | Value |
|---|---|---|
id Required |
| Enabled | Key | Value |
|---|---|---|
| Enabled | Key | Value |
|---|---|---|
Accept | application/json | |
| Enabled | Key | Value |
|---|---|---|
company_id | ||
since Required | 1751328000 | |
until | 1751932799 | |
event_type | email_sent,sms_sent,call_logged | |
page | 1 | |
size | 20 | |
view | ||
FAQ
What is the 100Hires ATS API?
100Hires ATS API is a REST API that lets developers programmatically manage candidates, jobs, applications, interviews, and webhooks in the 100Hires applicant tracking system.
Does the 100Hires ATS API cost extra?
No. API access is included with paid plans at no extra cost. There are no per-request fees and no separate API tier.
How do I get an API key?
Sign in to your 100Hires workspace, go to Settings → Integrations → API Keys, click Generate new key, copy the token, and use it as a Bearer credential.
Does the 100Hires ATS API support webhooks?
Yes. You can register webhook URLs per job or per company to receive notifications when new applications are created. Verify incoming requests using HMAC signature verification.
Is there an OpenAPI specification?
Yes, the full machine-readable OpenAPI 3.x spec is at https://api.100hires.com/v2/openapi.json. You can import it into Postman, Insomnia, or generate SDKs with openapi-generator.
What are the rate limits?
100 requests per 10 minutes per API key (unapproved keys). Limits are returned in
X-RateLimit-Limit, X-RateLimit-Remaining,
and X-RateLimit-Reset response headers.
Contact support to remove limits for your integration.