100Hires · Schema

CandidateWriteRequest

RecruitingArtificial IntelligenceHuman ResourcesSoftware-as-a-ServiceSmall Business

Properties

Name Type Description
company_id integer Target company ID. Required only when the API key has access to multiple companies.
first_name string Candidate first name.
last_name string Candidate last name.
email string Candidate email address. Used for deduplication.
phone string Candidate phone number.
profile 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 fi
job_id integer Job ID to create an application for this candidate. If omitted, candidate is created without an application.
stage_id integer Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage.
cv object
city string Candidate city. Used together with state/country to resolve timezone and location display in the profile header. If omitted or empty, taken from the candidate's 'City' profile answer when present.
state string Candidate state or region. If omitted or empty, taken from the candidate's 'State' profile answer when present.
country string Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US'). If omitted or empty, taken from the candidate's 'Country' profile answer when present.
timezone string IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone.
View JSON Schema on GitHub

JSON Schema

100hires-com-candidate-write-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/100hires-com/json-schema/100hires-com-candidate-write-request-schema.json",
  "title": "CandidateWriteRequest",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/100hires-com-openapi.json#/components/schemas/CandidateWriteRequest",
  "type": "object",
  "properties": {
    "company_id": {
      "type": "integer",
      "description": "Target company ID. Required only when the API key has access to multiple companies."
    },
    "first_name": {
      "type": "string",
      "description": "Candidate first name."
    },
    "last_name": {
      "type": "string",
      "description": "Candidate last name."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "Candidate email address. Used for deduplication."
    },
    "phone": {
      "type": "string",
      "description": "Candidate phone number."
    },
    "profile": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "type": "array",
            "items": {}
          }
        ]
      },
      "description": "Key-value map of profile field answers. Keys can be either question text (string) or question_id (integer from GET /questions). Library fields (First name, Last name, Email, Phone, etc.) and custom fields both support text-based keys. Example: {\"Years of experience\": \"5\"} or {\"42\": \"5\"}. Must be a JSON object — a JSON array or a plain string is rejected with 400 Validation Error. Every key must resolve to a question of the target company and every value must be acceptable for that question's type; otherwise the request is rejected with 400 Validation Error listing the offending keys in validation_errors.profile, and nothing is saved. Multi-value fields such as Email accept an array of values, e.g. {\"Email\": [\"a@example.com\", \"b@example.com\"]}. Yes/No questions take 1 or 0, as a number or as a string — send JSON false as 0, since a JSON false is indistinguishable from an empty value and is rejected.\n"
    },
    "job_id": {
      "type": "integer",
      "description": "Job ID to create an application for this candidate. If omitted, candidate is created without an application."
    },
    "stage_id": {
      "type": "integer",
      "description": "Pipeline stage ID for the initial application. Requires job_id. If omitted with job_id, defaults to the first stage."
    },
    "cv": {
      "$ref": "#/$defs/FileData"
    },
    "city": {
      "type": "string",
      "description": "Candidate city. Used together with state/country to resolve timezone and location display in the profile header. If omitted or empty, taken from the candidate's 'City' profile answer when present."
    },
    "state": {
      "type": "string",
      "description": "Candidate state or region. If omitted or empty, taken from the candidate's 'State' profile answer when present."
    },
    "country": {
      "type": "string",
      "description": "Candidate country name or ISO 3166-1 alpha-2 code (e.g. 'United States' or 'US'). If omitted or empty, taken from the candidate's 'Country' profile answer when present."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone (e.g. 'America/Los_Angeles'). If omitted, resolved automatically from city/country. If provided alongside city, overrides the auto-resolved timezone."
    }
  },
  "additionalProperties": false,
  "$defs": {
    "FileData": {
      "type": "object",
      "required": [
        "data",
        "file_name",
        "mime_type"
      ],
      "properties": {
        "data": {
          "type": "string",
          "description": "Base64 content"
        },
        "file_name": {
          "type": "string",
          "description": "Original file name."
        },
        "mime_type": {
          "type": "string",
          "description": "MIME type (e.g. application/pdf)."
        },
        "size": {
          "type": "integer",
          "description": "Optional for uploads, returned in responses"
        }
      }
    }
  }
}

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-candidate-write-request"
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.