100Hires · Schema
Job
RecruitingArtificial IntelligenceHuman ResourcesSoftware-as-a-ServiceSmall Business
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier |
| alias | stringnull | 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 | integer | ID of the company this job belongs to |
| title | string | Public job title shown to candidates |
| internal_title | stringnull | Internal job title visible only to the hiring team |
| internal_job_id | stringnull | Company's internal job identifier (e.g. requisition number) |
| description | 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 ret |
| resume_field_status | stringnull | Whether resume upload is required, optional, or hidden on the application form |
| location | object | Job location details |
| url | string | Public URL of the job posting page |
| url_backoffice | 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 |
| is_remote | boolean | Whether this is a remote position |
| is_hybrid | boolean | 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 | stringnull | How a remote job is listed on Indeed: city, statewide or nationwide. Null when the job is not remote. |
| status | string | Job status: open, closed, draft, or archived |
| department | object | Department this job belongs to |
| category | object | Job category (e.g. Engineering, Marketing) |
| employment_type | object | Employment type (e.g. Full-time, Part-time, Contract) |
| education_level | object | Required education level |
| experience_level | object | Required experience level (e.g. Entry, Mid, Senior) |
| workflow_id | integernull | ID of the hiring workflow (pipeline) assigned to this job |
| workflow | object | Hiring workflow (pipeline) assigned to this job. Embedded via `include=workflow`. Suppressed when `view=summary` even if the include was requested. |
| form_id | integernull | 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). |
| pipeline_stages | object | 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 | numbernull | Minimum salary |
| salary_max | numbernull | Maximum salary |
| salary_currency | stringnull | Salary currency code (e.g. USD, EUR) |
| salary_period | stringnull | Salary period |
| hours_per_week_min | integernull | Minimum hours per week |
| hours_per_week_max | integernull | Maximum hours per week |
| indeed_posting_data | object | Indeed job board posting metadata. Present only when `view=full` (default); omitted entirely when `view=summary`. |
| hiring_team | array | Team members assigned to this job. Embedded via `include=hiring_team`. Suppressed when `view=summary` even if the include was requested. |
| is_satellite | boolean | Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent. |
| parent_job_id | integernull | ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job. |
| language | stringnull | 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 |
| created_at | integer | Unix timestamp (seconds) |
| updated_at | integer | Unix timestamp (seconds) |
| ai_scoring_criteria | array | 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=summar |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/100hires-com/json-schema/100hires-com-job-schema.json",
"title": "Job",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/100hires-com-openapi.json#/components/schemas/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"
}
}
},
"$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."
}
}
},
"IdName": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier."
},
"name": {
"type": "string",
"description": "Display name."
}
}
},
"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."
}
}
}
}
}
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/100hires-com-job"
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.