Workstream Applicants API
Applicants represent people who have applied for positions within your company.
Applicants represent people who have applied for positions within your company.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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.curl "https://apis.io/api/v1/apis/workstream-applicants-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.
openapi: 3.2.0
info:
version: 1.0.0
title: Workstream Public Applicants API
termsOfService: https://workstream.us/terms/
contact:
email: help@workstream.is
url: https://help.workstream.us/en/
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
x-logo:
url: workstream-logo.svg
href: '#'
description: '# API Reference
The Workstream API is a modern, [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) API. Our API has predictable resource-oriented URLs, supports HTTPS authentication, verbs and response codes, and returns JSON-encoded responses.
**Note:** [Old APIs](https://old-api-doc.workstream.us/) will be deprecated, please refer to this API documentation for new API usages.
'
servers:
- url: https://{tenant}
variables:
tenant:
default: public-api.workstream.us
description: Public API URI
tags:
- name: Applicants
description: Applicants represent people who have applied for positions within your company.
paths:
/position_applications/{uuid}:
get:
operationId: GetApplicant
tags:
- Applicants
summary: Retrieve an existing Applicant
description: Retrieves an existing Applicant.
security:
- bearerAuth: []
parameters:
- name: uuid
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/applicant_embed'
responses:
'200':
description: OK
headers:
X-Request-ID:
schema:
type: string
description: A randomly generated request-id to uniquely identify each request sent.
content:
application/json:
schema:
$ref: '#/components/schemas/applicant'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
'429':
$ref: '#/components/responses/429'
/position_applications/{uuid}/forms:
get:
operationId: GetApplicantForm
tags:
- Applicants
summary: List Applicant's custom forms
description: Returns the questions and answers of forms filled in by an existing Applicant.
security:
- bearerAuth: []
parameters:
- name: uuid
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
headers:
X-Request-ID:
schema:
type: string
description: A randomly generated request-id to uniquely identify each request sent.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/form'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
'429':
$ref: '#/components/responses/429'
/position_applications:
get:
operationId: GetApplicants
tags:
- Applicants
summary: List existing Applicants
description: Lists existing Applicants with the input parameters.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/applicant_embed'
- name: status
in: query
schema:
type: string
enum:
- in_progress
- hired
- rejected
example: in_progress
description: Returns applicants with the input `status`.
- name: first_name
in: query
schema:
type: string
example: Andy
description: Returns applicants with the input `first_name`.
- name: last_name
in: query
schema:
type: string
example: Lee
description: Returns applicants with the input `last_name`.
- name: name
in: query
schema:
type: string
example: Andy%20Lee
description: Returns applicants with the input `name`.
- name: current_stage
in: query
schema:
type: string
example: Onsite%20Interview
description: Returns applicants with the input position stage.
- name: position[uuid]
in: query
schema:
type: string
format: uuid
example: 67161b3c-2584-11ee-be56-0242ac120002
description: Returns applicants with the input position's UUID.
- name: location[name]
in: query
schema:
type: string
example: SF%20store
description: Returns applicants with the input location's name.
- name: tag[name]
in: query
schema:
type: string
example: cook
description: Returns applicants with the input applicant tag's name.
- name: note[content]
in: query
schema:
type: string
example: He is a good applicant
description: Returns applicants with the input applicant note's content.
- name: created_at.gte
in: query
schema:
type: string
format: timestamp
example: '2020-09-30 00:00:00.000Z'
description: Returns applicants created after or equals to the input date.
- name: created_at.lte
in: query
schema:
type: string
format: timestamp
example: '2022-09-30 00:00:00.000Z'
description: Returns applicants created before or equals to the input date.
- name: hired_at.gte
in: query
schema:
type: string
format: timestamp
example: '2022-09-30 00:00:00.000Z'
description: Returns applicants hired after or equals to the input date.
- name: hired_at.lte
in: query
schema:
type: string
format: timestamp
example: '2022-09-30 00:00:00.000Z'
description: Returns applicants hired before or equals to the input date.
responses:
'200':
description: OK
headers:
X-Request-ID:
schema:
type: string
description: A randomly generated request-id to uniquely identify each request sent.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/applicant'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
'429':
$ref: '#/components/responses/429'
components:
responses:
'429':
description: Too many requests.
content:
application/problem+json:
schema:
type: object
properties:
error_code:
type: integer
example: 13429
message:
type: string
example: Throttle limit reached. Limit to 100 requests in 60 seconds.
'404':
description: Not found - The requested resource is not found.
content:
application/problem+json:
schema:
type: object
properties:
error_code:
type: integer
example: 13404
message:
type: string
example: The requested resource is not found.
'422':
description: Unprocessable Entity - Invalid query params or request body.
content:
application/problem+json:
schema:
type: object
properties:
error_code:
type: integer
example: 13422
message:
type: string
example: (forbidden_embedded_resources}) is not a supported 'embed'. Valid 'embed' keys are (permitted_embedded_resources).
'403':
description: Forbidden - The user is not authorized to use this resource.
content:
application/problem+json:
schema:
type: object
properties:
error_code:
type: integer
example: 13403
message:
type: string
example: Forbidden - The user is not authorized to use this resource.
'401':
description: Unauthorized - Credentials are not valid for the target resource.
content:
application/problem+json:
schema:
type: object
properties:
error_code:
type: integer
example: 13401
message:
type: string
example: Unauthorized
schemas:
applicant:
type: object
title: Applicant
properties:
uuid:
description: Applicant uuid
type: string
format: uuid
example: 509a251a-93af-41e3-8416-23b29dc293cc
digest_key:
description: Applicant digest_key
type: string
example: 108eeee1
referer_source:
description: Applicant referer_source
type: string
example: Others
email:
description: Applicant email
type: string
example: joblexxx@gmail.com
phone:
description: Applicant phone
type: string
example: '4321012345'
first_name:
description: Applicant first_name
type: string
example: Joey
last_name:
description: Applicant last_name
type: string
example: White
name:
description: Applicant name
type: string
example: Joey White
status:
description: Applicant status
type: string
enum:
- in_progress
- rejected
- hired
example: in_progress
global_phone_number:
description: Applicant global_phone_number
type: string
example: '+15151515151'
sms_notification:
description: Applicant sms_notification
type: boolean
example: true
current_stage:
description: Applicant current_stage
type: string
example: Application
hired_at:
description: Applicant hired_at
type: string
format: datetime
example: '2022-12-01 08:00:00'
application_date:
description: Applicant application_date
type: string
format: date
latest_interview_date:
description: Applicant latest_interview_date
type: string
format: date
example: '2022-12-01'
position:
$ref: '#/components/schemas/position-2'
location:
$ref: '#/components/schemas/location-2'
department:
$ref: '#/components/schemas/department'
notes:
$ref: '#/components/schemas/application_notes'
tags:
$ref: '#/components/schemas/tags'
candidate_info:
$ref: '#/components/schemas/candidate_info'
pay_info:
$ref: '#/components/schemas/pay_info'
candidate_info:
type: array
title: Applicant Candidate Info
description: Need to embed **candidate_info** in request query params
items:
properties:
question:
description: Name of field
type: string
example: Street Address
answer:
description: Value of field
type: string
example: 110 W 5 st
position-2:
type: object
title: Position
description: Need to embed **position** in request query params
properties:
uuid:
description: Position uuid
type: string
format: uuid
example: c59c9852-2584-11ee-be56-0242ac120002
title:
description: Position title
type: string
example: Cook
pay_info:
type: object
title: Applicant Pay Info
description: Need to embed **pay_info** in request query params
properties:
pay_amount:
description: Pay amount
type: number
example: 20
pay_frequency:
description: Pay frequency
type: string
enum:
- hour
- day
- week
- month
- year
example: hour
application_notes:
type: array
title: Applicant Notes
description: Need to embed **notes** in request query params
items:
properties:
content:
description: Content of note
type: string
example: He is a good applicant!
tags:
type: array
title: Applicant Tags
description: Need to embed **tags** in request query params
items:
properties:
name:
description: The name of the tag
type: string
example: cook
department:
type: object
title: Department
description: Need to embed **department** in request query params
properties:
name:
description: Department name
type: string
example: Marketing
description:
description: Department description
type: string
example: The marketing department
location-2:
type: object
title: Location
description: Need to embed **location** in request query params
properties:
uuid:
description: Location uuid
type: string
format: uuid
example: c59c9852-2584-11ee-be56-0242ac120002
name:
description: location name
type: string
example: SF store
form:
type: object
title: Form Submission
properties:
uuid:
description: The uuid of the form submission.
type: string
format: uuid
example: d404e957-af95-4776-af16-bae088e49165
name:
description: The name of the form.
type: string
example: Additional Information
answers:
type: array
description: An array of form questions and answers.
items:
type: object
title: Form question and answer
properties:
question_uuid:
description: The uuid of the question.
type: string
format: uuid
example: d404e957-af95-4776-af16-bae088e49165
question_type:
description: The type of the question.
type: string
example: multiple_choice
question:
description: The text of the question.
type: string
example: Are you at least 18 years old with a valid Driver's license?
answer_uuid:
description: The uuid of the answer.
type: string
format: uuid
example: d404e957-af95-4776-af16-bae088e49165
answer:
description: The answer to the question.
type: string
example: 'yes'
parameters:
applicant_embed:
name: embed
in: query
schema:
type: string
example: (position, location, department, notes, tags, candidate_info, pay_info)
description: Specifies the names of resources that should be embedded in the response. Resources to embed must have parentheses and be comma-separated
securitySchemes:
oauth2:
type: oauth2
flows:
implicit:
authorizationUrl: https://public-api.workstream.us/
scopes:
Applicants: Read Applicant records
Employees: Read Employee records
Company Users: Read Company User records
Company Roles: Read Company Role records
Positions: Read Position records
TeamMember: Read Team Member records
Locations: Read Location records
Departments: Read Department records
Imported Employee Infos: Read Imported Employee Info records
Custom Field: Read, update custom field and custom field values
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT