100Hires · Schema

Application

RecruitingArtificial IntelligenceHuman ResourcesSoftware-as-a-ServiceSmall Business

Properties

Name Type Description
id integer Unique identifier
candidate_id integer ID of the candidate
job_id integer ID of the job
job_alias stringnull Short alias of the job, usable in URLs (e.g. 79SZHfT)
internal_job_id stringnull Company's internal job identifier
company_id integer ID of the company
url_backoffice string 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.
stage object Current pipeline stage of the application
status string Application status. Changes via hire/reject/unreject actions.
is_disqualified boolean Whether the candidate is disqualified for this application
cv object Resume/CV data attached to this application
rejected_at integernull Unix timestamp (seconds)
rejection_reason object Reasons for rejection. Null if not rejected.
hired_at integernull Unix timestamp (seconds)
hiring_team object Team members assigned to this application's job
custom_fields object Custom field values as key-value pairs
ai_score integernull AI-generated candidate fit score (0-100)
ai_recommendation stringnull AI-generated recommendation label (e.g. Strong, Good, Weak)
ai_scoring_updated_at integernull Unix timestamp (seconds) of the latest completed AI scoring result
created_at integer Unix timestamp (seconds)
updated_at integer Unix timestamp (seconds)
last_message_at integernull 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.
days_since_last_message integernull Number of whole days since the last message. Computed at request time. Null if no messages exist.
candidate object Embedded candidate data (included when requested via `include=candidate`)
job object 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.
View JSON Schema on GitHub

JSON Schema

100hires-com-application-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/100hires-com/json-schema/100hires-com-application-schema.json",
  "title": "Application",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/100hires-com-openapi.json#/components/schemas/Application",
  "type": "object",
  "required": [
    "id",
    "candidate_id",
    "job_id",
    "company_id",
    "status",
    "is_disqualified",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Unique identifier"
    },
    "candidate_id": {
      "type": "integer",
      "description": "ID of the candidate"
    },
    "job_id": {
      "type": "integer",
      "description": "ID of the job"
    },
    "job_alias": {
      "type": [
        "string",
        "null"
      ],
      "description": "Short alias of the job, usable in URLs (e.g. 79SZHfT)"
    },
    "internal_job_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Company's internal job identifier"
    },
    "company_id": {
      "type": "integer",
      "description": "ID of the company"
    },
    "url_backoffice": {
      "type": "string",
      "format": "uri",
      "description": "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."
    },
    "stage": {
      "oneOf": [
        {
          "$ref": "#/$defs/IdName"
        },
        {
          "type": "null"
        }
      ],
      "description": "Current pipeline stage of the application"
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "hired",
        "rejected"
      ],
      "description": "Application status. Changes via hire/reject/unreject actions."
    },
    "is_disqualified": {
      "type": "boolean",
      "description": "Whether the candidate is disqualified for this application"
    },
    "cv": {
      "oneOf": [
        {
          "$ref": "#/$defs/ApplicationCvData"
        },
        {
          "type": "null"
        }
      ],
      "description": "Resume/CV data attached to this application"
    },
    "rejected_at": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64",
      "description": "Unix timestamp (seconds)"
    },
    "rejection_reason": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/IdName"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Reasons for rejection. Null if not rejected."
    },
    "hired_at": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64",
      "description": "Unix timestamp (seconds)"
    },
    "hiring_team": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/JobHiringTeamMember"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Team members assigned to this application's job"
    },
    "custom_fields": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "description": "Custom field values as key-value pairs"
    },
    "ai_score": {
      "type": [
        "integer",
        "null"
      ],
      "description": "AI-generated candidate fit score (0-100)"
    },
    "ai_recommendation": {
      "type": [
        "string",
        "null"
      ],
      "description": "AI-generated recommendation label (e.g. Strong, Good, Weak)"
    },
    "ai_scoring_updated_at": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64",
      "description": "Unix timestamp (seconds) of the latest completed AI scoring result"
    },
    "created_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp (seconds)"
    },
    "updated_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp (seconds)"
    },
    "last_message_at": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64",
      "description": "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."
    },
    "days_since_last_message": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Number of whole days since the last message. Computed at request time. Null if no messages exist."
    },
    "candidate": {
      "oneOf": [
        {
          "$ref": "#/$defs/ApplicationCandidate"
        },
        {
          "type": "null"
        }
      ],
      "description": "Embedded candidate data (included when requested via `include=candidate`)"
    },
    "job": {
      "oneOf": [
        {
          "$ref": "#/$defs/Job"
        },
        {
          "type": "null"
        }
      ],
      "description": "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."
    }
  },
  "$defs": {
    "AiScoringCriterion": {
      "type": "object",
      "required": [
        "id",
        "text",
        "weight",
        "position"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Unique identifier of the criterion."
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Optional short label for the criterion."
        },
        "text": {
          "type": "string",
          "description": "Prompt text describing what to evaluate."
        },
        "weight": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "description": "Relative importance of this criterion in the total score (1–10)."
        },
        "position": {
          "type": "integer",
          "description": "0-based ordinal of the criterion in the job's list."
        }
      }
    },
    "ApiAttachment": {
      "type": "object",
      "description": "Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns).\n\n`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.\n\nUse `uuid` to reference the attachment in other endpoints (e.g. nurture voicemail step).\n",
      "required": [
        "uuid",
        "url",
        "relative_time",
        "file"
      ],
      "properties": {
        "uuid": {
          "type": "string",
          "format": "uuid",
          "description": "Unique attachment identifier. Stable across API calls; use in referencing endpoints."
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri",
          "description": "Absolute download URL (e.g. `https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}`). Hit with `Authorization: Bearer <API_KEY>`."
        },
        "relative_time": {
          "type": "string",
          "description": "Human-readable time since upload (e.g. `\"2 days ago\"`)."
        },
        "file": {
          "$ref": "#/$defs/AttachmentFile"
        }
      }
    },
    "ApplicationCandidate": {
      "type": "object",
      "required": [
        "id",
        "company_id",
        "profile",
        "created_at",
        "updated_at"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Unique identifier"
        },
        "company_id": {
          "type": "integer",
          "description": "ID of the company this candidate belongs to"
        },
        "first_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Candidate's first name"
        },
        "last_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Candidate's last name"
        },
        "emails": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "format": "email"
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "List of candidate email addresses"
        },
        "phones": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "List of candidate phone numbers"
        },
        "source": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "How the candidate was sourced"
        },
        "origin": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Where the candidate originally came from"
        },
        "profile": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProfileAnswer"
          },
          "description": "Candidate profile field answers"
        },
        "created_at": {
          "type": "integer",
          "format": "int64",
          "description": "Unix timestamp (seconds)"
        },
        "updated_at": {
          "type": "integer",
          "format": "int64",
          "description": "Unix timestamp (seconds)"
        },
        "last_message_at": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "description": "Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist."
        },
        "days_since_last_message": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Number of whole days since the last message. Computed at request time. Null if no messages exist."
        },
        "ip": {
          "type": [
            "string",
            "null"
          ],
          "description": "IP address from which the candidate applied"
        }
      }
    },
    "ApplicationCvData": {
      "description": "Application CV. Returns standard attachment metadata + download URL. When `?include=cv.text` is requested, a `text` field with parsed plain-text content is added.",
      "allOf": [
        {
          "$ref": "#/$defs/ApiAttachment"
        },
        {
          "type": "object",
          "properties": {
            "text": {
              "type": [
                "string",
                "null"
              ],
              "description": "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."
            }
          }
        }
      ]
    },
    "AttachmentFile": {
      "type": "object",
      "required": [
        "is_image",
        "orig_file_name",
        "file_ext",
        "file_type",
        "readable_size"
      ],
      "properties": {
        "is_image": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether the file is an image."
        },
        "orig_file_name": {
          "type": "string",
          "description": "Original file name."
        },
        "file_ext": {
          "type": "string",
          "description": "File extension."
        },
        "file_type": {
          "type": "string",
          "description": "File type category."
        },
        "readable_size": {
          "type": "string",
          "description": "Human-readable file size."
        }
      },
      "additionalProperties": false
    },
    "IdName": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Unique identifier."
        },
        "name": {
          "type": "string",
          "description": "Display name."
        }
      }
    },
    "Job": {
      "type": "object",
      "required": [
        "id",
        "company_id",
        "title",
        "status",
        "url",
        "is_remote",
        "is_hybrid",
        "created_at",
        "updated_at"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Unique identifier"
        },
        "alias": {
          "type": [
            "string",
            "null"
          ],
          "description": "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."
        },
        "company_id": {
          "type": "integer",
          "description": "ID of the company this job belongs to"
        },
        "title": {
          "type": "string",
          "description": "Public job title shown to candidates"
        },
        "internal_title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Internal job title visible only to the hiring team"
        },
        "internal_job_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Company's internal job identifier (e.g. requisition number)"
        },
        "description": {
          "type": "string",
          "description": "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."
        },
        "resume_field_status": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "required",
            "optional",
            "hidden"
          ],
          "description": "Whether resume upload is required, optional, or hidden on the application form"
        },
        "location": {
          "oneOf": [
            {
              "$ref": "#/$defs/JobLocation"
            },
            {
              "type": "null"
            }
          ],
          "description": "Job location details"
        },
        "url": {
          "type": "string",
          "description": "Public URL of the job posting page"
        },
        "url_backoffice": {
          "type": "string",
          "description": "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."
        },
        "is_remote": {
          "type": "boolean",
          "description": "Whether this is a remote position"
        },
        "is_hybrid": {
          "type": "boolean",
          "description": "Whether this is a hybrid position: office days plus remote days at the job address. Never true together with is_remote."
        },
        "job_board_remote_scope": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "city",
            "statewide",
            "nationwide"
          ],
          "description": "How a remote job is listed on Indeed: city, statewide or nationwide. Null when the job is not remote."
        },
        "status": {
          "type": "string",
          "description": "Job status: open, closed, draft, or archived"
        },
        "department": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Department this job belongs to"
        },
        "category": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Job category (e.g. Engineering, Marketing)"
        },
        "employment_type": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Employment type (e.g. Full-time, Part-time, Contract)"
        },
        "education_level": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Required education level"
        },
        "experience_level": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Required experience level (e.g. Entry, Mid, Senior)"
        },
        "workflow_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "ID of the hiring workflow (pipeline) assigned to this job"
        },
        "workflow": {
          "oneOf": [
            {
              "$ref": "#/$defs/IdName"
            },
            {
              "type": "null"
            }
          ],
          "description": "Hiring workflow (pipeline) assigned to this job. Embedded via `include=workflow`. Suppressed when `view=summary` even if the include was requested."
        },
        "form_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "ID of the application form candidates fill in for this job — the form attached to the job, or the company default form when the job has none attached yet (the same rule the public apply page follows). `null` only when the company has no forms. Fetch the questions with `GET /forms/{id}`. Present in both `view=full` and `view=summary`."
        },
        "pipeline_stages": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "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."
        },
        "salary_min": {
          "type": [
            "number",
            "null"
          ],
          "description": "Minimum salary"
        },
        "salary_max": {
          "type": [
            "number",
            "null"
          ],
          "description": "Maximum salary"
        },
        "salary_currency": {
          "type": [
            "string",
            "null"
          ],
          "description": "Salary currency code (e.g. USD, EUR)"
        },
        "salary_period": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "annually",
            "monthly",
            "daily",
            "hourly"
          ],
          "description": "Salary period"
        },
        "hours_per_week_min": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum hours per week"
        },
        "hours_per_week_max": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum hours per week"
        },
        "indeed_posting_data": {
          "type": "object",
          "additionalProperties": true,
          "description": "Indeed job board posting metadata. Present only when `view=full` (default); omitted entirely when `view=summary`."
        },
        "hiring_team": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/JobHiringTeamMember"
          },
          "description": "Team members assigned to this job. Embedded via `include=hiring_team`. Suppressed when `view=summary` even if the include was requested."
        },
        "is_satellite": {
          "type": "boolean",
          "description": "Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent."
        },
        "parent_job_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job."
        },
        "language": {
          "type": [
            "string",
            "null"
          ],
          "description": "Locale this job's public page renders in, overriding the career site language. Null means the page follows the career site language (`GET /companies/career-site-settings`), which in turn falls back to en-US. This is the override, not the effective language. Present in both `view=full` and `view=summary`."
        },
        "created_at": {
          "type": "integer",
          "format": "int64",
          "description": "Unix timestamp (seconds)"
        },
        "updated_at": {
          "type": "integer",
          "format": "int64",
          "description": "Unix timestamp (seconds)"
        },
        "ai_scoring_criteria": {
          "type": "array",
          "description": "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`.",
          "items": {
            "$ref": "#/$defs/AiScoringCriterion"
          }
        }
      }
    },
    "JobHiringTeamMember": {
      "type": "object",
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "User ID."
        },
        "full_name": {
          "type": "string",
          "description": "User full name."
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "description": "User email."
        },
        "role": {
          "type": [
            "string",
            "null"
          ],
          "description": "Role on hiring team (e.g. hiring_manager, recruiter)."
        }
      }
    },
    "JobLocation": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "description": "Country."
        },
        "city": {
          "type": "string",
          "description": "City."
        },
        "state": {
          "type": "string",
          "description": "State or region."
        },
        "postal_code": {
          "type": "string",
          "description": "Postal code."
        },
        "street_address": {
          "type": "string",
          "description": "Street address."
        },
        "full_address": {
          "type": "string",
          "description": "Full formatted address."
        }
      }
    },
    "ProfileAnswer": {
      "type": "object",
      "required": [
        "question_id",
        "question_text",
        "value"
      ],
      "properties": {
        "question_id": {
          "type": "integer",
          "description": "Question ID."
        },
        "question_text": {
          "type": "string",
          "description": "Question label."
        },
        "value": {
          "description": "Answer value (string, array, or null)."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/100hires-com-application"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.