Overview
Welcome to the Flo HRIS API! This guide explains how customers can programmatically sync candidate and job application data from Flo into their HRIS platforms. It outlines authentication, schema, examples, and the proposed solution design. Customers can use this API to retrieve the data that will be directly imported into their HRIS system.
GET /v1/job-applications
Filtering via Query Parameters
job_application_status (string, optional) – filters by pipeline stage (Application Extended, Offer Accepted, etc.)
This field is a set of custom statuses defined by each customer
The value needs to be a step in an Active Pipeline Template
The value is case insensitive
When included, only Statuses of that value are returned.
When omitted, all Statuses within the timeframe are returned.
Use Case Examples
Viewing data on job applications in the “Hired” Status
Viewing only job applications that have “Offer Rejected”
job_application_status_bucket (string, optional) – filters by pipeline status bucket (Applied, Offered, Hired etc.)
This represents the group of statues steps used by your organization
The value needs to correspond to a Bucket in the pipelines you use for jobs
The value is case insensitive (i.e. “HIRED” and “hired” are treated the same)
When included, all of the statuses with the corresponding “statusBucketName” are included in the response.
Use Case Examples
Viewing all job applications that have been in the “Offered” Status bucket
This Flo article can help with more concepts around Pipeline Building: https://help.florecruit.com/en/articles/6552344-ats-creating-and-editing-pipeline-templates
job_application_status_start (datetime with timezone, optional) – Returns job applications that had at least one status change within the specified date range. The jobApplicationStatuses array shows only status changes within that range.
Note: jobApplicationLastStatusUpdate always shows the candidate's most recent status timestamp, which may be outside your query range.
Default value is 30 days in the past
Not including a time, will default the start time to midnight of the date provided
job_application_status_end (datetime with timezone, optional) – filter candidates by last status update.
Not including a time will set the date to midnight of the date provided
Note on Timezones:
We store DateTime data in the UTC timezone
For the parameters above, you have the following options:
If you include your local timezone, we will parse that and convert to UTC time.
If you include a DateTime with no timezone, we will assume it is UTC time.
If you include a Date with no time, we will default to midnight UTC of that date.
Using these query parameters if you wanted all job applications that were in a “Hired” status in October of 2025, you would request like this:
Response Data Schema
Candidate Fields
lastName
string
Candidate’s last name
string | null
If the user is not created with an email, value will be null
phone
string | null
Candidate phone number
candidateId
UUID string
Unique ID per candidate
candidateUrl
string
Flo URL that navigates to the Candidate's Profile in your ATS.
Job / Job Application Fields
jobTitle
string
Title of the job
jobId
UUID string
Unique ID per job
department
string
Department from job record
officeLocation
string
Office location from job record
employmentType
string
Employment type (Full-time, Intern, etc.)
hiringType
string
Hiring type (Lateral, Student Hiring, etc.)
jobApplicationLastStatusUpdate
datetime
Timestamp of the latest job application status change – note that this can be later than your filtered end time
position
string
Job position type
requisitionId
string | null
Job requisition id
startDate
datetime | null
Offer Details Start Date
salary
int | null
Offer Details Salary
addressLine1
string
Candidate address per job app
addressLine2
string
Candidate address per job app
city
string
Candidate address per job app
state
string
Candidate address per job app
zip
string
Candidate address per job app
jobApplicationStatuses
See Below (List of JSON)
List of job application status changes
Job Application Status Fields
statusBucketName
string
Name of status bucket
statusUpdatedAt
datetime
Time the job application entered the status
Job Application Custom Fields
customFieldAnswer
array of strings | null
Array of answer values.
For single-select, free text, date, numerical, monetary, and boolean questions: contains a single value
For multi-select questions: contains multiple values
If no answer exists for the question:
nullor empty array[]
JSON Format:
Filtering Examples with Sample Data
If you would like to get the Job Applications that were moved to the “Hired” Status on October 6th, 2025 – you would structure your request like this:
The result would be the following. For simplicity, assume there is only one result in the response.
The same request with a Status of “Interviewing”
Would return
Because there is no Status Update for “Interviewing” within that time frame.
Filtering by the Status Bucket
Would return only the statuses in that bucket
Understanding Custom Fields
Custom Fields are custom questions that your organization can configure to collect additional information on job applications. These fields are returned in the customFields array for each job application.
Key Points:
Visibility: Only custom fields configured with
SHOW_ON_JOB_APPLICATION = TRUEare included in the API responseIf no Custom Fields are configured the customFields field will be not be present in the response.
Answer Types: Custom fields support various question types:
Free Text: Text responses
Date: Date values (returned as string in ISO format)
Numerical: Numeric values (returned as string)
Monetary: Currency values (returned as string)
Single-Select: One option selected from a list
Multi-Select: Multiple options selected from a list
Answer Format: All answers are returned as strings in the
customFieldAnswerarray:Single-value questions (free text, date, numerical, monetary, single-select, boolean): array contains one string
Multi-select questions: array contains multiple strings
Unanswered questions:
null
Consistency: All custom fields configured for job applications are returned, even if they have no answer
Example Scenarios (Responses have been abbreviated to focus on Custom Fields):
Scenario 1: Job Application with Multiple Custom Fields
Scenario 2: Job Application with Unanswered Custom Fields
Note: Custom fields are organization-specific. The fields returned will match the custom field questions configured in your Flo organization settings.
Last updated

