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 per-team and can be revoked at any time.

Pricing

API access is included in all 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.

v2.0.0
OAS 3.1.0

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). Validation errors return success: false with field-level errors. Exception-based errors return name, message, code, and optional status.

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

Verify webhook signatures and only accept trusted requests on your receiver endpoint.

Receiving webhooks

Always respond quickly with 2xx, then process asynchronously to avoid retries/timeouts.

Event payloads

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.

  1. GET /candidates?q=John — find candidate by name or email
  2. GET /candidates/{id} — full profile with application history
  3. GET /candidates/{id}/activities — timeline (notes, calls, AI scoring)
  4. 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.

  1. GET /applications?job_id=123&stage_id=456 — candidates at a specific stage
  2. POST /applications/{id}/move with {"stage_id": 789} — advance candidate
  3. POST /applications/{id}/reject — reject with optional reason
  4. POST /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.

  1. POST /jobs — create job draft
  2. POST /jobs/{id}/status with {"status": "Public"} — publish
  3. GET /jobs/{id}/job-boards — available boards
  4. POST /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.

  1. GET /interviews?interviewer_user_id=5 — check interviewer availability
  2. POST /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.

  1. GET /applications/{id}/evaluation-forms — list filled evaluations
  2. GET /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.

  1. GET /candidates/{id}/messages — check conversation history
  2. (Optional) GET /users/{user_id}/mail-accounts — find mail_account_id to send from a specific user's mailbox
  3. POST /candidates/{id}/messages — schedule email (use from_account_id to send from a specific mailbox; 15-min cancel window by default)
  4. POST /messages/batch/create — schedule up to 100 emails in one request (each with its own candidate_id)
  5. 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.

  1. GET /companies/mail-accounts or GET /users/{user_id}/mail-accounts — find mail_account_id
  2. GET /messages?from_account_id={id} — list all messages sent/scheduled from that account
  3. Filter by status=scheduled to see pending queue, status=sent for delivery history
  4. 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.

  1. GET /users — find the user_id of the team member
  2. GET /users/{user_id}/mail-accounts — get their mail_account_id
  3. POST /candidates/{id}/messages with from_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.

  1. POST /candidates/{id}/tags with ["senior", "remote"] — add tags
  2. POST /candidates/batch/tags — bulk add tags
  3. DELETE /candidates/batch/tags — bulk remove tags

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/42 and GET /candidates/dtGeby2 both return the same candidate.
  • GET /jobs/1 and GET /jobs/79SZHfT both 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 /candidates and GET /candidates/{id} return alias field for each candidate.
  • GET /jobs and GET /jobs/{id} return alias field for each job.
  • GET /applications and GET /applications/{id} return job_alias field alongside job_id.

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
Server:https://api.100hires.com/v2

Production API endpoint

Client Libraries

Candidates

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.

Query Parameters
  • company_id
    Type: integer

    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.

  • job_id
    Type: integer

    Filter candidates by job ID.

  • stage_id
    Type: integer

    Filter candidates by pipeline stage ID. Best used together with job_id.

  • email
    Type: string

    Exact candidate email filter.

  • q
    Type: string

    Plain-text candidate search by name or email. Supports partial matches. If combined with other filters, all filters must match.

  • full_name
    Type: string

    Candidate full-name filter. If combined with email or q, all supplied filters must match.

  • linkedin
    Type: string

    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: integer
      min:  
      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: integer
      min:  
      0

      Integer numbers.

  • include
    enum
    const:  
    applications

    Include related application summaries in the candidate response.

    • applications
  • page
    Type: integer
    min:  
    1

    Page number (1-based). Defaults to 1.

  • size
    Type: integer
    min:  
    1
    max:  
    100

    Number of items per page (1–100). Defaults to 20.

  • view
    Type: stringenum

    Response shape selector for list endpoints. full (default) returns every field — backward-compatible with pre-existing clients. summary returns 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 *_preview truncations. Use summary when paging through large result sets and fetch a single record with the corresponding GET /{resource}/{id} endpoint when full data is needed.

    • full
    • summary
Responses
  • Candidate list

    Type: object
    • candidates
      Type: array object[] · Candidate[]
      required

      Array of candidates.

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • alias
        Type: string | null

        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.

      • applications
        Type: array object[] · CandidateApplicationSummary[]

        Summary of all applications this candidate has across jobs

        • id
          Type: integer
          required

          Application ID.

        • job
          Type: object
          required

          Job summary (id, title, status).

          • id
            Type: integer
            required

            Integer numbers.

          • title
            Type: string
            required
        • stage
          Type: object · IdName nullable
          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from (e.g. job board name)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • profile
        Type: array object[] · ProfileAnswer[]

        Candidate profile field answers (application form responses). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • source
        Type: object · IdName nullable

        How the candidate was sourced (e.g. LinkedIn, Referral)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • url_backoffice
        Type: stringFormat: uri

        Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.

    • pagination
      Type: object · Pagination
      required
      • page
        Type: integer
        required

        Current page number.

      • page_count
        Type: integer
        required

        Total number of pages.

      • page_size
        Type: integer
        required

        Items per page.

      • total_count
        Type: integer
        required

        Total number of items.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates
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
  }
}

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.

Body
required
application/json
  • city
    Type: string

    Candidate city. Used together with state/country to resolve timezone and location display in the profile header.

  • company_id
    Type: integer

    Target company ID. Required only when the API key has access to multiple companies.

  • country
    Type: string

    Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US').

  • cv
    Type: object · FileData
    • data
      Type: string
      required

      Base64 content

    • file_name
      Type: string
      required

      Original file name.

    • mime_type
      Type: string
      required

      MIME type (e.g. application/pdf).

    • size
      Type: integer

      Optional for uploads, returned in responses

  • email
    Type: stringFormat: email

    Candidate email address. Used for deduplication.

  • first_name
    Type: string

    Candidate first name.

  • job_id
    Type: integer

    Job ID to create an application for this candidate. If omitted, candidate is created without an application.

  • last_name
    Type: string

    Candidate last name.

  • phone
    Type: string

    Candidate phone number.

  • profile
    Type: object

    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"}.

    • propertyName
      Type: string
  • stage_id
    Type: integer

    Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage.

  • state
    Type: string

    Candidate state or region.

  • timezone
    Type: string

    IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone.

Responses
  • Created candidate

    Type: object
    • company_id
      Type: integer
      required

      ID of the company this candidate belongs to

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • alias
      Type: string | null

      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.

    • applications
      Type: array object[] · CandidateApplicationSummary[]

      Summary of all applications this candidate has across jobs

      • id
        Type: integer
        required

        Application ID.

      • job
        Type: object
        required

        Job summary (id, title, status).

        • id
          Type: integer
          required

          Integer numbers.

        • title
          Type: string
          required
      • stage
        Type: object · IdName nullable
        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • emails
      Type: array string[] | null nullable

      List of candidate email addresses

    • first_name
      Type: string | null

      Candidate's first name

    • ip
      Type: string | null

      IP address from which the candidate applied

    • last_message_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

    • last_name
      Type: string | null

      Candidate's last name

    • origin
      Type: object · IdName nullable

      Where the candidate originally came from (e.g. job board name)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • phones
      Type: array string[] | null nullable

      List of candidate phone numbers

    • profile
      Type: array object[] · ProfileAnswer[]

      Candidate profile field answers (application form responses). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.

      • question_id
        Type: integer
        required

        Question ID.

      • question_text
        Type: string
        required

        Question label.

      • value
        required

        Answer value (string, array, or null).

    • source
      Type: object · IdName nullable

      How the candidate was sourced (e.g. LinkedIn, Referral)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/candidates
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": 1,
  "alias": "dtGeby2",
  "url_backoffice": "https://app.100hires.com/candidate/dtGeby2",
  "company_id": 1,
  "first_name": null,
  "last_name": null,
  "emails": [
    "hello@example.com"
  ],
  "phones": [
    "string"
  ],
  "source": {
    "id": 1,
    "name": "string"
  },
  "origin": {
    "id": 1,
    "name": "string"
  },
  "profile": [
    {
      "question_id": 1,
      "question_text": "string",
      "value": null
    }
  ],
  "ip": null,
  "applications": [
    {
      "id": 1,
      "job": {
        "id": 1,
        "title": "string"
      },
      "stage": {
        "id": 1,
        "name": "string"
      }
    }
  ],
  "created_at": 1,
  "updated_at": 1,
  "last_message_at": null,
  "days_since_last_message": null
}

Get candidate

Returns full candidate data including application summaries.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Responses
  • Candidate

    Type: object
    • company_id
      Type: integer
      required

      ID of the company this candidate belongs to

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • alias
      Type: string | null

      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.

    • applications
      Type: array object[] · CandidateApplicationSummary[]

      Summary of all applications this candidate has across jobs

      • id
        Type: integer
        required

        Application ID.

      • job
        Type: object
        required

        Job summary (id, title, status).

        • id
          Type: integer
          required

          Integer numbers.

        • title
          Type: string
          required
      • stage
        Type: object · IdName nullable
        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • emails
      Type: array string[] | null nullable

      List of candidate email addresses

    • first_name
      Type: string | null

      Candidate's first name

    • ip
      Type: string | null

      IP address from which the candidate applied

    • last_message_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

    • last_name
      Type: string | null

      Candidate's last name

    • origin
      Type: object · IdName nullable

      Where the candidate originally came from (e.g. job board name)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • phones
      Type: array string[] | null nullable

      List of candidate phone numbers

    • profile
      Type: array object[] · ProfileAnswer[]

      Candidate profile field answers (application form responses). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.

      • question_id
        Type: integer
        required

        Question ID.

      • question_text
        Type: string
        required

        Question label.

      • value
        required

        Answer value (string, array, or null).

    • source
      Type: object · IdName nullable

      How the candidate was sourced (e.g. LinkedIn, Referral)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates/{id}
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
}

Update candidate

Updates candidate fields, profile answers, and optional CV payload. Designed for bi-directional sync from ATS, CRM, sourcing, or enrichment tools.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Body
required
application/json
  • city
    Type: string

    Candidate city. Used together with state/country to resolve timezone and location display in the profile header.

  • company_id
    Type: integer

    Target company ID. Required only when the API key has access to multiple companies.

  • country
    Type: string

    Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US').

  • cv
    Type: object · FileData
    • data
      Type: string
      required

      Base64 content

    • file_name
      Type: string
      required

      Original file name.

    • mime_type
      Type: string
      required

      MIME type (e.g. application/pdf).

    • size
      Type: integer

      Optional for uploads, returned in responses

  • email
    Type: stringFormat: email

    Candidate email address. Used for deduplication.

  • first_name
    Type: string

    Candidate first name.

  • job_id
    Type: integer

    Job ID to create an application for this candidate. If omitted, candidate is created without an application.

  • last_name
    Type: string

    Candidate last name.

  • phone
    Type: string

    Candidate phone number.

  • profile
    Type: object

    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"}.

    • propertyName
      Type: string
  • stage_id
    Type: integer

    Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage.

  • state
    Type: string

    Candidate state or region.

  • timezone
    Type: string

    IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone.

Responses
  • Updated candidate

    Type: object
    • company_id
      Type: integer
      required

      ID of the company this candidate belongs to

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • alias
      Type: string | null

      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.

    • applications
      Type: array object[] · CandidateApplicationSummary[]

      Summary of all applications this candidate has across jobs

      • id
        Type: integer
        required

        Application ID.

      • job
        Type: object
        required

        Job summary (id, title, status).

        • id
          Type: integer
          required

          Integer numbers.

        • title
          Type: string
          required
      • stage
        Type: object · IdName nullable
        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • emails
      Type: array string[] | null nullable

      List of candidate email addresses

    • first_name
      Type: string | null

      Candidate's first name

    • ip
      Type: string | null

      IP address from which the candidate applied

    • last_message_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

    • last_name
      Type: string | null

      Candidate's last name

    • origin
      Type: object · IdName nullable

      Where the candidate originally came from (e.g. job board name)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • phones
      Type: array string[] | null nullable

      List of candidate phone numbers

    • profile
      Type: array object[] · ProfileAnswer[]

      Candidate profile field answers (application form responses). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.

      • question_id
        Type: integer
        required

        Question ID.

      • question_text
        Type: string
        required

        Question label.

      • value
        required

        Answer value (string, array, or null).

    • source
      Type: object · IdName nullable

      How the candidate was sourced (e.g. LinkedIn, Referral)

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for put/candidates/{id}
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
}

Delete candidate

Deletes a candidate. Use this to keep external systems aligned with candidate lifecycle policies.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Responses
  • Deleted

    Type: object
    • success
      Type: boolean
      required

      Always true on success.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for delete/candidates/{id}
curl 'https://api.100hires.com/v2/candidates/{id}' \
  --request DELETE \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "success": true
}

List candidate tags

Returns all tags assigned to a candidate. Useful for segmentation sync and audience-based automations.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Responses
  • Candidate tags

    Type: object
    • pagination
      Type: object · Pagination
      required
      • page
        Type: integer
        required

        Current page number.

      • page_count
        Type: integer
        required

        Total number of pages.

      • page_size
        Type: integer
        required

        Items per page.

      • total_count
        Type: integer
        required

        Total number of items.

    • tags
      Type: array string[]
      required

      Array of tags.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates/{id}/tags
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
  }
}

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.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Body
required
application/json
  • tags
    Type: array string[]
    required

    Array of tag strings to add.

Responses
  • Updated candidate tags

    Type: object
    • pagination
      Type: object · Pagination
      required
      • page
        Type: integer
        required

        Current page number.

      • page_count
        Type: integer
        required

        Total number of pages.

      • page_size
        Type: integer
        required

        Items per page.

      • total_count
        Type: integer
        required

        Total number of items.

    • tags
      Type: array string[]
      required

      Array of tags.

  • Bad request

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/candidates/{id}/tags
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
  }
}

Delete candidate tag

Removes a specific tag from a candidate. Use when external logic recalculates segmentation or lifecycle labels.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

  • tag
    Type: string
    required

    Tag text (case-sensitive, URL-encoded).

Responses
  • Deleted

    Type: object
    • success
      Type: boolean
      required

      Always true on success.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for delete/candidates/{id}/tags/{tag}
curl 'https://api.100hires.com/v2/candidates/{id}/tags/{tag}' \
  --request DELETE \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "success": true
}

List candidate files

Lists candidate attachments and metadata (resume/other files). Use for document sync, compliance exports, and recruiter tooling.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Query Parameters
  • view
    Type: stringenum

    Response shape selector for list endpoints. full (default) returns every field — backward-compatible with pre-existing clients. summary returns 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 *_preview truncations. Use summary when paging through large result sets and fetch a single record with the corresponding GET /{resource}/{id} endpoint when full data is needed.

    • full
    • summary
Responses
  • Candidate files

    Type: object
    • files
      Type: array · CandidateFile[]
      required

      Array 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).

        url is an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes with Authorization: Bearer <API_KEY>. The response on url sets Content-Disposition: attachment; filename="..." with the human-readable filename.

        Use uuid to reference the attachment in other endpoints (e.g. nurture voicemail step).

        • file
          Type: object · AttachmentFile
          required
          • file_ext
            Type: string
            required

            File extension.

          • file_type
            Type: string
            required

            File type category.

          • is_image
            Type: boolean nullable
            required

            Whether the file is an image.

          • orig_file_name
            Type: string
            required

            Original file name.

          • readable_size
            Type: string
            required

            Human-readable file size.

        • relative_time
          Type: string
          required

          Human-readable time since upload (e.g. "2 days ago").

        • url
          Type: stringFormat: uri nullable
          required

          Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

        • uuid
          Type: stringFormat: uuid
          required

          Unique attachment identifier. Stable across API calls; use in referencing endpoints.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates/{id}/files
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"
      }
    }
  ]
}

Upload candidate file

Uploads a new file for a candidate using base64 payload. Useful for resume ingestion, portfolio uploads, and post-processing pipelines.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Body
required
application/json
  • file
    Type: object · FileData
    required
    • data
      Type: string
      required

      Base64 content

    • file_name
      Type: string
      required

      Original file name.

    • mime_type
      Type: string
      required

      MIME type (e.g. application/pdf).

    • size
      Type: integer

      Optional for uploads, returned in responses

Responses
  • Uploaded file

    Type: object · ApiAttachment

    Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).

    url is an absolute URL served by the API host (https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}) and serves the raw file bytes with Authorization: Bearer <API_KEY>. The response on url sets Content-Disposition: attachment; filename="..." with the human-readable filename.

    Use uuid to reference the attachment in other endpoints (e.g. nurture voicemail step).

    • file
      Type: object · AttachmentFile
      required
      • file_ext
        Type: string
        required

        File extension.

      • file_type
        Type: string
        required

        File type category.

      • is_image
        Type: boolean nullable
        required

        Whether the file is an image.

      • orig_file_name
        Type: string
        required

        Original file name.

      • readable_size
        Type: string
        required

        Human-readable file size.

    • relative_time
      Type: string
      required

      Human-readable time since upload (e.g. "2 days ago").

    • url
      Type: stringFormat: uri nullable
      required

      Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

    • uuid
      Type: stringFormat: uuid
      required

      Unique attachment identifier. Stable across API calls; use in referencing endpoints.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/candidates/{id}/files
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"
  }
}

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.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Query Parameters
  • include
    Type: string

    Comma-separated list of optional fields to include. Supported: text_content — parsed plain-text content of the resume file.

Responses
  • Resume file

    Resume file with optional parsed text content (when ?include=text_content is used, the response includes a text field with the parsed plain-text content).

    • file
      Type: object · AttachmentFile
      required
      • file_ext
        Type: string
        required

        File extension.

      • file_type
        Type: string
        required

        File type category.

      • is_image
        Type: boolean nullable
        required

        Whether the file is an image.

      • orig_file_name
        Type: string
        required

        Original file name.

      • readable_size
        Type: string
        required

        Human-readable file size.

    • relative_time
      Type: string
      required

      Human-readable time since upload (e.g. "2 days ago").

    • url
      Type: stringFormat: uri nullable
      required

      Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

    • uuid
      Type: stringFormat: uuid
      required

      Unique attachment identifier. Stable across API calls; use in referencing endpoints.

    • text
      Type: string nullable

      Parsed plain-text content of the resume. Only included when ?include=text_content is specified AND view=full (the default). Suppressed when view=summary even if the include was requested. May be null if the file format is unsupported or parsing fails.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates/{id}/resume
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"
}

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.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Query Parameters
  • page
    Type: integer
    min:  
    1

    Page number (1-based).

  • size
    Type: integer
    min:  
    1
    max:  
    100

    Page size. Values above 100 are rejected with 400. Default 20, max 100.

  • event_type
    Type: string

    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: integer
      min:  
      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: integer
      min:  
      0

      Integer numbers.

  • view
    Type: stringenum

    Response shape selector for list endpoints. full (default) returns every field — backward-compatible with pre-existing clients. summary returns 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 *_preview truncations. Use summary when paging through large result sets and fetch a single record with the corresponding GET /{resource}/{id} endpoint when full data is needed.

    • full
    • summary
Responses
  • Candidate activities

    Type: object
    • activities
      Type: array object[] · Activity[]
      required

      Array of activity events.

      • application_id
        Type: integer | null
        required

        ID of the job application this event is linked to, if any

      • candidate_id
        Type: integer
        required

        ID of the candidate this event belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • event
        required

        Shared 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.

        • data
          Type: object
          required

          Event data payload.

          • date
            Type: string
            required

            Short formatted date (e.g. "Jan 1")

          • full_time
            Type: string
            required

            Full formatted datetime string

          • relative_time
            Type: string
            required

            Human-readable relative time (e.g. "2 days ago")

          • text
            Type: string
            required

            HTML-formatted description of the event

          • from_stage_id
            Type: integer nullable

            Pipeline stage ID the candidate was in before qualification/disqualification. Only present for qualification events.

          • from_stage_name
            Type: string nullable

            Pipeline stage name the candidate was in before qualification/disqualification. Only present for qualification events.

        • is_text_bubble
          enum
          const:  
          true
          required

          Always true for text bubble events.

          • true
        • type
          Type: stringenum
          required

          Event type identifier.

          • assign_job
          • candidate_rate
          • assign_sources
          • assign_tags
          • qualification
      • event_id
        Type: integer
        required

        Unique ID of the timeline event

      • user_id
        Type: integer | null
        required

        ID of the user who triggered this event, if applicable

    • page_size
      Type: integer
      required

      Items per page. Duplicated at top level for backward compatibility (also available in pagination.page_size).

    • pagination
      Type: object · Pagination
      required
      • page
        Type: integer
        required

        Current page number.

      • page_count
        Type: integer
        required

        Total number of pages.

      • page_size
        Type: integer
        required

        Items per page.

      • total_count
        Type: integer
        required

        Total number of items.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/candidates/{id}/activities
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
  }
}

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.

Path Parameters
  • id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

Body
application/json
  • reasons
    Type: array

    Array of rejection reason IDs from GET /taxonomy/rejection-reasons.

      • Type: integer

        Integer numbers.

Responses
  • Disqualified

    Type: object
    • rejected_applications
      Type: array integer[]
      required

      Array of rejected application IDs.

    • success
      Type: boolean
      required

      Whether disqualification succeeded.

  • Bad request

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/candidates/{id}/disqualify
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
  ]
}

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.

Body
required
application/json
  • ids
    Type: array integer[] …100
    required

    Candidate IDs to tag (max 100)

  • tags
    Type: array string[]
    required

    Tag names to attach

Responses
  • Batch results with per-item success/failure

    Type: object
    • results
      Type: array object[] · BatchResultItem[]
      required

      Array of per-item results.

      • id
        required
        • Type: integer

          Entity ID or alias from the request

      • data
        Type: object

        Entity payload on success. Present only when the item succeeded.

      • error
        Type: object

        Structured error object on failure. Present only when the item failed. Same format as top-level API errors.

        • code
          Type: integer

          Integer numbers.

        • message
          Type: string
        • name
          Type: string
        • status
          Type: integer

          Integer numbers.

        • validation_errors
          Type: object
          • propertyName
            Type: string
  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/candidates/batch/tags
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": 1,
      "data": {},
      "error": {
        "name": "Not Found",
        "message": "Candidate not found",
        "code": 0,
        "status": 404,
        "validation_errors": {
          "additionalProperty": "string"
        }
      }
    }
  ]
}

Batch remove tags from candidates

Removes specified tags from multiple candidates in one request. Returns per-item results with partial success support.

Body
required
application/json
  • ids
    Type: array integer[] …100
    required

    Candidate IDs to tag (max 100)

  • tags
    Type: array string[]
    required

    Tag names to attach

Responses
  • Batch results with per-item success/failure

    Type: object
    • results
      Type: array object[] · BatchResultItem[]
      required

      Array of per-item results.

      • id
        required
        • Type: integer

          Entity ID or alias from the request

      • data
        Type: object

        Entity payload on success. Present only when the item succeeded.

      • error
        Type: object

        Structured error object on failure. Present only when the item failed. Same format as top-level API errors.

        • code
          Type: integer

          Integer numbers.

        • message
          Type: string
        • name
          Type: string
        • status
          Type: integer

          Integer numbers.

        • validation_errors
          Type: object
          • propertyName
            Type: string
  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for delete/candidates/batch/tags
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": 1,
      "data": {},
      "error": {
        "name": "Not Found",
        "message": "Candidate not found",
        "code": 0,
        "status": 404,
        "validation_errors": {
          "additionalProperty": "string"
        }
      }
    }
  ]
}

Applications

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.

Query Parameters
  • company_id
    Type: integer

    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.

  • candidate_id
    Type: integer

    Filter applications by candidate ID.

  • job_id
    Type: integer

    Filter applications by job ID.

  • stage_id
    Type: integer

    Filter applications by pipeline stage ID. Best used together with job_id.

  • status
    Type: stringenum

    Filter by application status: pending (active), hired, or rejected.

    • 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: integer
      min:  
      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: integer
      min:  
      0

      Integer numbers.

  • ai_score_min
    Type: integer

    Return only applications with ai_score greater than or equal to this value.

  • ai_score_max
    Type: integer

    Return only applications with ai_score less than or equal to this value.

  • sort
    Type: stringenum

    Sort order. Prefix with - for descending. Default: -created_at.

    • created_at
    • -created_at
    • ai_score
    • -ai_score
    • last_message_at
    • -last_message_at
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

  • page
    Type: integer
    min:  
    1

    Page number (1-based). Defaults to 1.

  • size
    Type: integer
    min:  
    1
    max:  
    100

    Number of items per page (1–100). Defaults to 20.

  • view
    Type: stringenum

    Response shape selector for list endpoints. full (default) returns every field — backward-compatible with pre-existing clients. summary returns 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 *_preview truncations. Use summary when paging through large result sets and fetch a single record with the corresponding GET /{resource}/{id} endpoint when full data is needed.

    • full
    • summary
Responses
  • Application list

    Type: object
    • applications
      Type: array object[] · Application[]
      required

      Array of applications.

      • candidate_id
        Type: integer
        required

        ID of the candidate

      • company_id
        Type: integer
        required

        ID of the company

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_disqualified
        Type: boolean
        required

        Whether the candidate is disqualified for this application

      • job_id
        Type: integer
        required

        ID of the job

      • status
        Type: stringenum
        required

        Application status. Changes via hire/reject/unreject actions.

        • active
        • hired
        • rejected
      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • ai_recommendation
        Type: string | null

        AI-generated recommendation label (e.g. Strong, Good, Weak)

      • ai_score
        Type: integer | null

        AI-generated candidate fit score (0-100)

      • ai_scoring_updated_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the latest completed AI scoring result

      • candidate
        Type: object · ApplicationCandidate nullable

        Embedded candidate data (included when requested via include=candidate)

        • company_id
          Type: integer
          required

          ID of the company this candidate belongs to

        • created_at
          Type: integerFormat: int64
          required

          Unix timestamp (seconds)

        • id
          Type: integer
          required

          Unique identifier

        • profile
          Type: array object[] · ProfileAnswer[]
          required

          Candidate profile field answers

          • question_id
            Type: integer
            required

            Question ID.

          • question_text
            Type: string
            required

            Question label.

          • value
            required

            Answer value (string, array, or null).

        • updated_at
          Type: integerFormat: int64
          required

          Unix timestamp (seconds)

        • days_since_last_message
          Type: integer | null

          Number of whole days since the last message. Computed at request time. Null if no messages exist.

        • emails
          Type: array string[] | null nullable

          List of candidate email addresses

        • first_name
          Type: string | null

          Candidate's first name

        • ip
          Type: string | null

          IP address from which the candidate applied

        • last_message_at
          Type: integer | nullFormat: int64

          Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

        • last_name
          Type: string | null

          Candidate's last name

        • origin
          Type: object · IdName nullable

          Where the candidate originally came from

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • phones
          Type: array string[] | null nullable

          List of candidate phone numbers

        • source
          Type: object · IdName nullable

          How the candidate was sourced

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

      • custom_fields
        Type: object nullable

        Custom field values as key-value pairs

        • propertyName
          Type: anything
      • cv
        nullable

        Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

        • file
          Type: object · AttachmentFile
          required
          • file_ext
            Type: string
            required

            File extension.

          • file_type
            Type: string
            required

            File type category.

          • is_image
            Type: boolean nullable
            required

            Whether the file is an image.

          • orig_file_name
            Type: string
            required

            Original file name.

          • readable_size
            Type: string
            required

            Human-readable file size.

        • relative_time
          Type: string
          required

          Human-readable time since upload (e.g. "2 days ago").

        • url
          Type: stringFormat: uri nullable
          required

          Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

        • uuid
          Type: stringFormat: uuid
          required

          Unique attachment identifier. Stable across API calls; use in referencing endpoints.

        • text
          Type: string nullable

          Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • hired_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds)

      • hiring_team
        Type: array object[] | null · JobHiringTeamMember[] nullable

        Team members assigned to this application's job

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • internal_job_id
        Type: string | null

        Company's internal job identifier

      • job
        Type: object · Job nullable

        Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

        • company_id
          Type: integer
          required

          ID of the company this job belongs to

        • created_at
          Type: integerFormat: int64
          required

          Unix timestamp (seconds)

        • id
          Type: integer
          required

          Unique identifier

        • is_remote
          Type: boolean
          required

          Whether this is a remote position

        • status
          Type: string
          required

          Job status: open, closed, draft, or archived

        • title
          Type: string
          required

          Public job title shown to candidates

        • updated_at
          Type: integerFormat: int64
          required

          Unix timestamp (seconds)

        • url
          Type: string
          required

          Public URL of the job posting page

        • ai_scoring_criteria
          Type: array object[] · AiScoringCriterion[]

          AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

          • id
            Type: integer
            required

            Unique identifier of the criterion.

          • position
            Type: integer
            required

            0-based ordinal of the criterion in the job's list.

          • text
            Type: string
            required

            Prompt text describing what to evaluate.

          • weight
            Type: integer
            min:  
            1
            max:  
            10
            required

            Relative importance of this criterion in the total score (1–10).

          • title
            Type: string | null

            Optional short label for the criterion.

        • alias
          Type: string | null

          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.

        • category
          Type: object · IdName nullable

          Job category (e.g. Engineering, Marketing)

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • department
          Type: object · IdName nullable

          Department this job belongs to

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • description
          Type: string

          Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

        • education_level
          Type: object · IdName nullable

          Required education level

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • employment_type
          Type: object · IdName nullable

          Employment type (e.g. Full-time, Part-time, Contract)

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • experience_level
          Type: object · IdName nullable

          Required experience level (e.g. Entry, Mid, Senior)

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • hiring_team
          Type: array object[] · JobHiringTeamMember[]

          Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

          • full_name
            Type: string
            required

            User full name.

          • id
            Type: integer
            required

            User ID.

          • email
            Type: string | null

            User email.

          • role
            Type: string | null

            Role on hiring team (e.g. hiring_manager, recruiter).

        • hours_per_week_max
          Type: integer | null

          Maximum hours per week

        • hours_per_week_min
          Type: integer | null

          Minimum hours per week

        • indeed_posting_data
          Type: object

          Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

          • propertyName
            Type: anything
        • internal_job_id
          Type: string | null

          Company's internal job identifier (e.g. requisition number)

        • internal_title
          Type: string | null

          Internal job title visible only to the hiring team

        • is_satellite
          Type: boolean

          Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

        • location
          Type: object · JobLocation nullable

          Job location details

          • city
            Type: string

            City.

          • country
            Type: string

            Country.

          • full_address
            Type: string

            Full formatted address.

          • postal_code
            Type: string

            Postal code.

          • state
            Type: string

            State or region.

          • street_address
            Type: string

            Street address.

          • propertyName
            Type: anything
        • parent_job_id
          Type: integer | null

          ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

        • pipeline_stages
          Type: array object[] | null nullable

          Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

          • id
            Type: integer

            Integer numbers.

          • name
            Type: string
        • resume_field_status
          Type: string | nullenum

          Whether resume upload is required, optional, or hidden on the application form

          • required
          • optional
          • hidden
        • salary_currency
          Type: string | null

          Salary currency code (e.g. USD, EUR)

        • salary_max
          Type: number | null

          Maximum salary

        • salary_min
          Type: number | null

          Minimum salary

        • salary_period
          Type: string | nullenum

          Salary period

          • annually
          • monthly
          • daily
          • hourly
        • url_backoffice
          Type: string

          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.

        • workflow
          Type: object · IdName nullable

          Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

          • id
            Type: integer
            required

            Unique identifier.

          • name
            Type: string
            required

            Display name.

        • workflow_id
          Type: integer | null

          ID of the hiring workflow (pipeline) assigned to this job

      • job_alias
        Type: string | null

        Short alias of the job, usable in URLs (e.g. 79SZHfT)

      • last_message_at
        Type: integer | nullFormat: int64

        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.

      • rejected_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds)

      • rejection_reason
        Type: array object[] | null · IdName[] nullable

        Reasons for rejection. Null if not rejected.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • stage
        Type: object · IdName nullable

        Current pipeline stage of the application

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • url_backoffice
        Type: stringFormat: uri

        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.

    • pagination
      Type: object · Pagination
      required
      • page
        Type: integer
        required

        Current page number.

      • page_count
        Type: integer
        required

        Total number of pages.

      • page_size
        Type: integer
        required

        Items per page.

      • total_count
        Type: integer
        required

        Total number of items.

  • Validation error

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/applications
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
  }
}

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.

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Body
required
application/json
  • candidate_id
    Type: string Pattern: ^[A-Za-z0-9_-]+$
    required

    Candidate ID (numeric) or alias

  • job_id
    Type: integer
    required

    Job ID to apply the candidate to.

  • cv
    Type: object · FileData
    • data
      Type: string
      required

      Base64 content

    • file_name
      Type: string
      required

      Original file name.

    • mime_type
      Type: string
      required

      MIME type (e.g. application/pdf).

    • size
      Type: integer

      Optional for uploads, returned in responses

  • stage_id
    Type: integer

    Pipeline stage ID. If omitted, defaults to the first stage.

Responses
  • Created application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/applications
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
}

Get application

Returns full application payload with stage/status/rejection context. Recommended before mutating stage transitions in external automations.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Responses
  • Application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/applications/{id}
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
}

Update application

Updates application-level fields such as stage, disqualification flag, and CV. Supports external pipeline management and data correction flows.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Body
required
application/json
  • cv
    Type: object · FileData
    • data
      Type: string
      required

      Base64 content

    • file_name
      Type: string
      required

      Original file name.

    • mime_type
      Type: string
      required

      MIME type (e.g. application/pdf).

    • size
      Type: integer

      Optional for uploads, returned in responses

  • is_disqualified
    Type: boolean

    Set to true to disqualify the candidate on this application.

  • stage_id
    Type: integer

    Move application to this pipeline stage.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for put/applications/{id}
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
}

Delete application

Deletes an application and removes it from default list/view queries.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Responses
  • Application deleted

    Type: object
    • success
      Type: boolean
      required

      Always true on success.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for delete/applications/{id}
curl https://api.100hires.com/v2/applications/1 \
  --request DELETE \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "success": true
}

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.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Responses
  • Structured AI score payload for the latest application scoring result

    Type: object
    • score
      Type: object · ApplicationAiScorePayload nullable
      required
      • criteria
        Type: array object[] · ApplicationAiScoreCriterion[]
        required

        Array of scoring criteria with scores.

        • criterion_text
          Type: string
          required

          Full criterion description.

        • justification
          Type: string | null
          required

          AI explanation for the score.

        • score
          Type: integer
          required

          Score for this criterion (0-100).

        • criterion_title
          Type: string | null

          Short criterion title.

        • followup_questions
          Type: array string[] | null nullable
      • date
        Type: string | null
        required

        Scoring date.

      • job_id
        Type: integer
        required

        Job ID.

      • job_title
        Type: string | null
        required

        Job title.

      • job_url
        Type: string | null
        required

        Job URL.

      • rate
        Type: integer
        required

        Overall recommendation (e.g. strong_yes, yes, no).

      • summary
        Type: string | null
        required

        AI-generated summary.

      • total_score
        Type: integer | null
        required

        Total score (0-100).

      • uuid
        Type: string | null
        required

        Unique scoring session ID.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/applications/{id}/ai-score
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"
  }
}

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_id is set)
  • automation — move driven by an automation rule / form watcher
  • system — initial assignment or other non-user, non-automation source
Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Responses
  • Full chronological stage transition history for an application, including the initial assignment.

    Type: object
    • history
      Type: array object[] · ApplicationStageHistoryEntry[]
      required

      Chronological list of stage transitions (oldest first), including the initial assignment.

      • from_stage_id
        Type: integer nullable
        required

        Previous stage id. null for the initial assignment.

      • from_stage_name
        Type: string nullable
        required

        Previous stage name. null for the initial assignment.

      • moved_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds) of the transition.

      • moved_by_type
        Type: stringenum
        required

        Who/what initiated the move. user = manual move, automation = automation rule/form watcher, system = initial assignment or unattributed.

        • user
        • automation
        • system
      • moved_by_user_id
        Type: integer nullable
        required

        ID of the user that performed the move. Populated only when moved_by_type = user.

      • source
        Type: string nullable
        required

        What caused the transition. Format: <assign_type> or <assign_type>:<board_name>. Examples: apply:indeed, form_watcher, user, api_v2. null for historical records created before source tracking was added.

      • to_stage_id
        Type: integer
        required

        Stage id the application was moved to.

      • to_stage_name
        Type: string nullable
        required

        Stage name the application was moved to. null if the stage has been hard-deleted.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for get/applications/{id}/stage-history
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
    }
  ]
}

Move application to stage

Moves an application to a specific pipeline stage. This is the explicit stage transition endpoint for workflow orchestration.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Body
required
application/json
  • stage_id
    Type: integer
    required

    Target pipeline stage ID.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/applications/{id}/move
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
}

Mark application as hired

Marks an application as hired using domain rules from the current workflow. Use as the finalization step in hiring automations.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/applications/{id}/hire
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
}

Reject application

Rejects an application with optional rejection reason and note context. Standard endpoint for rejection workflows and reporting consistency.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Body
application/json
  • rejection_reason_id
    Type: integer

    Rejection reason ID from GET /taxonomy/rejection-reasons.

  • suppress_notification
    Type: boolean

    Set to true to skip sending the rejection email to the candidate.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/applications/{id}/reject
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
}

Advance application to next stage

Advances the application to the next stage according to workflow order.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

Request Example for post/applications/{id}/advance
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
}

Transfer application to another job

Transfers an application to another job with optional target stage.

Path Parameters
  • id
    Type: integer
    required

    Resource ID (numeric).

Query Parameters
  • include
    Type: string

    Comma-separated list of related resources to include. Supported: candidate — full candidate profile, cv.text — parsed plain-text CV content, job — full job payload with url_backoffice for UI deep-linking.

Body
required
application/json
  • job_id
    Type: integer
    required

    Target job ID to transfer the application to.

  • stage_id
    Type: integer

    Pipeline stage ID on the target job. If omitted, defaults to the first stage.

Responses
  • Updated application

    Type: object
    • candidate_id
      Type: integer
      required

      ID of the candidate

    • company_id
      Type: integer
      required

      ID of the company

    • created_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • id
      Type: integer
      required

      Unique identifier

    • is_disqualified
      Type: boolean
      required

      Whether the candidate is disqualified for this application

    • job_id
      Type: integer
      required

      ID of the job

    • status
      Type: stringenum
      required

      Application status. Changes via hire/reject/unreject actions.

      • active
      • hired
      • rejected
    • updated_at
      Type: integerFormat: int64
      required

      Unix timestamp (seconds)

    • ai_recommendation
      Type: string | null

      AI-generated recommendation label (e.g. Strong, Good, Weak)

    • ai_score
      Type: integer | null

      AI-generated candidate fit score (0-100)

    • ai_scoring_updated_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds) of the latest completed AI scoring result

    • candidate
      Type: object · ApplicationCandidate nullable

      Embedded candidate data (included when requested via include=candidate)

      • company_id
        Type: integer
        required

        ID of the company this candidate belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • profile
        Type: array object[] · ProfileAnswer[]
        required

        Candidate profile field answers

        • question_id
          Type: integer
          required

          Question ID.

        • question_text
          Type: string
          required

          Question label.

        • value
          required

          Answer value (string, array, or null).

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • days_since_last_message
        Type: integer | null

        Number of whole days since the last message. Computed at request time. Null if no messages exist.

      • emails
        Type: array string[] | null nullable

        List of candidate email addresses

      • first_name
        Type: string | null

        Candidate's first name

      • ip
        Type: string | null

        IP address from which the candidate applied

      • last_message_at
        Type: integer | nullFormat: int64

        Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.

      • last_name
        Type: string | null

        Candidate's last name

      • origin
        Type: object · IdName nullable

        Where the candidate originally came from

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • phones
        Type: array string[] | null nullable

        List of candidate phone numbers

      • source
        Type: object · IdName nullable

        How the candidate was sourced

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

    • custom_fields
      Type: object nullable

      Custom field values as key-value pairs

      • propertyName
        Type: anything
    • cv
      nullable

      Application CV. Returns standard attachment metadata + download URL. When ?include=cv.text is requested, a text field with parsed plain-text content is added.

      • file
        Type: object · AttachmentFile
        required
        • file_ext
          Type: string
          required

          File extension.

        • file_type
          Type: string
          required

          File type category.

        • is_image
          Type: boolean nullable
          required

          Whether the file is an image.

        • orig_file_name
          Type: string
          required

          Original file name.

        • readable_size
          Type: string
          required

          Human-readable file size.

      • relative_time
        Type: string
        required

        Human-readable time since upload (e.g. "2 days ago").

      • url
        Type: stringFormat: uri nullable
        required

        Absolute download URL (e.g. https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}). Hit with Authorization: Bearer <API_KEY>.

      • uuid
        Type: stringFormat: uuid
        required

        Unique attachment identifier. Stable across API calls; use in referencing endpoints.

      • text
        Type: string nullable

        Parsed plain-text CV content. Included only when ?include=cv.text is requested AND view=full (the default). Suppressed when view=summary even 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.

    • days_since_last_message
      Type: integer | null

      Number of whole days since the last message. Computed at request time. Null if no messages exist.

    • hired_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • hiring_team
      Type: array object[] | null · JobHiringTeamMember[] nullable

      Team members assigned to this application's job

      • full_name
        Type: string
        required

        User full name.

      • id
        Type: integer
        required

        User ID.

      • email
        Type: string | null

        User email.

      • role
        Type: string | null

        Role on hiring team (e.g. hiring_manager, recruiter).

    • internal_job_id
      Type: string | null

      Company's internal job identifier

    • job
      Type: object · Job nullable

      Embedded job payload (included when requested via include=job). Use job.url_backoffice to deep-link UI widgets to the job's pipeline view in the recruiter app.

      • company_id
        Type: integer
        required

        ID of the company this job belongs to

      • created_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • id
        Type: integer
        required

        Unique identifier

      • is_remote
        Type: boolean
        required

        Whether this is a remote position

      • status
        Type: string
        required

        Job status: open, closed, draft, or archived

      • title
        Type: string
        required

        Public job title shown to candidates

      • updated_at
        Type: integerFormat: int64
        required

        Unix timestamp (seconds)

      • url
        Type: string
        required

        Public URL of the job posting page

      • ai_scoring_criteria
        Type: array object[] · AiScoringCriterion[]

        AI scoring criteria configured for this job, ordered by position ASC. Returned as an empty array when none are configured. Present only when view=full (default); omitted entirely when view=summary.

        • id
          Type: integer
          required

          Unique identifier of the criterion.

        • position
          Type: integer
          required

          0-based ordinal of the criterion in the job's list.

        • text
          Type: string
          required

          Prompt text describing what to evaluate.

        • weight
          Type: integer
          min:  
          1
          max:  
          10
          required

          Relative importance of this criterion in the total score (1–10).

        • title
          Type: string | null

          Optional short label for the criterion.

      • alias
        Type: string | null

        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.

      • category
        Type: object · IdName nullable

        Job category (e.g. Engineering, Marketing)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • department
        Type: object · IdName nullable

        Department this job belongs to

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • description
        Type: string

        Job description (HTML). Present only when view=full (default); omitted entirely when view=summary to keep list responses inside the agent context budget. Use GET /jobs/{id} or view=full to retrieve.

      • education_level
        Type: object · IdName nullable

        Required education level

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • employment_type
        Type: object · IdName nullable

        Employment type (e.g. Full-time, Part-time, Contract)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • experience_level
        Type: object · IdName nullable

        Required experience level (e.g. Entry, Mid, Senior)

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • hiring_team
        Type: array object[] · JobHiringTeamMember[]

        Team members assigned to this job. Embedded via include=hiring_team. Suppressed when view=summary even if the include was requested.

        • full_name
          Type: string
          required

          User full name.

        • id
          Type: integer
          required

          User ID.

        • email
          Type: string | null

          User email.

        • role
          Type: string | null

          Role on hiring team (e.g. hiring_manager, recruiter).

      • hours_per_week_max
        Type: integer | null

        Maximum hours per week

      • hours_per_week_min
        Type: integer | null

        Minimum hours per week

      • indeed_posting_data
        Type: object

        Indeed job board posting metadata. Present only when view=full (default); omitted entirely when view=summary.

        • propertyName
          Type: anything
      • internal_job_id
        Type: string | null

        Company's internal job identifier (e.g. requisition number)

      • internal_title
        Type: string | null

        Internal job title visible only to the hiring team

      • is_satellite
        Type: boolean

        Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.

      • location
        Type: object · JobLocation nullable

        Job location details

        • city
          Type: string

          City.

        • country
          Type: string

          Country.

        • full_address
          Type: string

          Full formatted address.

        • postal_code
          Type: string

          Postal code.

        • state
          Type: string

          State or region.

        • street_address
          Type: string

          Street address.

        • propertyName
          Type: anything
      • parent_job_id
        Type: integer | null

        ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.

      • pipeline_stages
        Type: array object[] | null nullable

        Pipeline stages for this job's workflow. Only included when include=pipeline_stages is specified. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer

          Integer numbers.

        • name
          Type: string
      • resume_field_status
        Type: string | nullenum

        Whether resume upload is required, optional, or hidden on the application form

        • required
        • optional
        • hidden
      • salary_currency
        Type: string | null

        Salary currency code (e.g. USD, EUR)

      • salary_max
        Type: number | null

        Maximum salary

      • salary_min
        Type: number | null

        Minimum salary

      • salary_period
        Type: string | nullenum

        Salary period

        • annually
        • monthly
        • daily
        • hourly
      • url_backoffice
        Type: string

        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.

      • workflow
        Type: object · IdName nullable

        Hiring workflow (pipeline) assigned to this job. Embedded via include=workflow. Suppressed when view=summary even if the include was requested.

        • id
          Type: integer
          required

          Unique identifier.

        • name
          Type: string
          required

          Display name.

      • workflow_id
        Type: integer | null

        ID of the hiring workflow (pipeline) assigned to this job

    • job_alias
      Type: string | null

      Short alias of the job, usable in URLs (e.g. 79SZHfT)

    • last_message_at
      Type: integer | nullFormat: int64

      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.

    • rejected_at
      Type: integer | nullFormat: int64

      Unix timestamp (seconds)

    • rejection_reason
      Type: array object[] | null · IdName[] nullable

      Reasons for rejection. Null if not rejected.

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • stage
      Type: object · IdName nullable

      Current pipeline stage of the application

      • id
        Type: integer
        required

        Unique identifier.

      • name
        Type: string
        required

        Display name.

    • url_backoffice
      Type: stringFormat: uri

      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

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Validation error details object.

      • name
        Type: string
        required

        Always "Validation Error" for validation failures

      • validation_errors
        Type: object
        required

        Field-level validation errors (field name to error message)

        • propertyName
          Type: string
      • code
        Type: integer

        Integer numbers.

      • message
        Type: string
      • status
        Type: integer

        Integer numbers.

  • Unauthorized

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Forbidden

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Not found

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Content-Type must be application/json

    X-RateLimit-Limit
    Type: integer

    Request limit for the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Remaining
    Type: integer

    Remaining requests in the current rate-limit window. Returned for unapproved API keys.

    X-RateLimit-Reset
    Type: integerFormat: int64

    Unix timestamp when the current rate-limit window resets. Returned for unapproved API keys.

    Type: object
    • error
      Type: object
      required

      Error details object.

      • code
        Type: integer
        required

        Application error code (0 for generic errors)

      • message
        Type: string
        required

        Detailed error message

      • name
        Type: string
        required

        Human-readable error type (e.g. "Not Found", "Bad Request", "Forbidden")

      • status
        Type: integer
        required

        HTTP status code

  • Too many requests

    X-RateLimit-Limit