Breezy HR is a cloud-based recruiting and applicant tracking platform that helps companies attract, evaluate, and hire candidates. The Breezy HR REST API (rooted at https://api.breezy.hr/v3) exposes companies, positions, pipelines, candidates, questionnaires, custom attributes, assessments, and activity streams—enabling integrations to sync recruiting data into a warehouse, programmatically create or update positions and candidates, move candidates through hiring stages, and react to activity events in downstream systems.
Power end-to-end data operations for your Breezy HR API with Nexla. Our bi-directional Breezy HR connector is purpose-built for Breezy HR, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Breezy HR or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Breezy HR workflows fast, secure, and fully governed.
Features
Type: API
SourceDestination
Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
The Breezy HR REST API uses API key authentication. Each request to https://api.breezy.hr/v3 must include a valid API key in the Authorization header, and most endpoints are scoped to a specific company, so the company ID is also required when creating a credential in Nexla.
Before creating a credential, complete the steps below to generate an API key and locate the company ID for the Breezy HR company that will be connected.
Breezy HR exposes API keys through the Integrations area of company settings. The signed-in user must have administrator access to the Breezy HR company in order to manage API keys.
Click the gear icon in the left sidebar to open Company Settings for the relevant company.
Select Integrations from the settings menu.
Scroll to the API section, and click Settings next to the API option.
Click Generate API Key (or Create API Key) to generate a new key for this company. The key is displayed in full at the time of generation.
Copy the generated API Key value, and store it securely. Breezy HR treats the API key as a bearer token equivalent to your account credentials, so it must be protected like a password.
If an API key is exposed or needs to be rotated, return to the same API section under Integrations, and use the option to revoke the existing key and generate a new one. Any integrations using the previous key must be updated with the new value.
Most Breezy HR API endpoints are scoped to a specific company (positions, candidates, pipelines, questionnaires, and so on), so the Breezy HR Company ID must be supplied alongside the API key when creating a credential in Nexla.
Sign in to the Breezy HR company that will be connected at app.breezy.hr.
Use either of the following methods to obtain the company ID:
Option A: Read the Company ID from the URL
From the Breezy HR dashboard, navigate to any page scoped to the company (for example, Positions or Candidates).
Inspect the browser address bar. The company ID is the segment that appears after /company/ in the URL (for example, https://app.breezy.hr/company/<COMPANY_ID>/positions).
Copy the company ID value.
Option B: Retrieve the Company ID via the API
Issue a GET request to https://api.breezy.hr/v3/companies, supplying the API key generated above in the Authorization header.
The response is an array of company objects. Locate the company that will be connected, and copy the _id field. This value is the Company ID used by all company-scoped endpoints.
Store the Company ID value alongside the API Key for use when creating the credential.
Important
The Breezy HR API Key grants full programmatic access to the associated company's data, including the ability to create and modify positions and candidates. Store it in a secure secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed.
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Enter the Breezy HR API key generated in the Prerequisites in the API Key field. Nexla sends this value in the Authorization header on every API call to Breezy HR.
Enter the Breezy HR Company ID located in the Prerequisites in the Company ID field. Nexla substitutes this value into the /company/{company_id}/... path segment of every company-scoped API call. The Company ID is required because nearly every Breezy HR endpoint (positions, candidates, pipelines, questionnaires, custom attributes, assessments) is scoped to a single company.
A credential connects to exactly one Breezy HR company. To integrate with multiple Breezy HR companies under the same account, create a separate credential for each company using the same API key (or a per-company API key) and the corresponding Company ID.
Once all of the relevant steps in the above sections have been completed, click the Save button at the bottom of the overlay to save the configured credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Breezy HR connector tile, then select the credential that will be used to connect to the Breezy HR instance, and click Next; or, create a new Breezy HR credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Breezy HR endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.
List Companies
This endpoint returns all Breezy HR companies the authenticated user account has access to. Use it to discover the available company IDs before configuring company-scoped flows, or to keep a directory of connected Breezy HR companies in sync downstream.
This endpoint takes no parameters. Selecting it automatically fetches every company visible to the API key on the credential.
Each record in the response contains the Breezy HR company _id, which is the same value used as the Company ID on Breezy HR credentials and in every other company-scoped endpoint.
Unlike the other source endpoints, List Companies is not scoped to the credential's Company ID — it returns every company the API key can access. It is useful for bootstrapping multi-company integrations.
Get Company
This endpoint retrieves the full record for the company on the credential, including branding, settings, and metadata. Use it to sync company-level configuration into a warehouse or to reference the latest company settings in downstream flows.
This endpoint takes no parameters. The company is determined by the Company ID configured on the credential.
The response is a single company object (not an array). The path to data is set to the response root so the company is treated as the record.
List Candidate Custom Attributes
This endpoint returns the company-level custom attribute definitions configured for candidates in Breezy HR. Use it to discover available custom fields before reading or writing candidate records, or to document the candidate schema in a downstream system.
This endpoint takes no parameters. The custom attribute definitions returned are scoped to the company on the credential.
Each record represents a single custom attribute definition (its name, type, and configuration). Candidate values for these attributes are returned on individual candidate records, not by this endpoint.
List Pipelines
This endpoint returns every recruitment pipeline configured on the company. Use it to discover pipeline IDs before fetching pipeline details, or to sync the company's hiring workflow definitions into a warehouse.
This endpoint takes no parameters. The pipelines returned are scoped to the company on the credential.
Each record contains the pipeline _id and metadata. Use the pipeline _id as the Pipeline Id on the Get Pipeline endpoint to retrieve the full stage configuration for a single pipeline.
Get Pipeline
This endpoint retrieves the full configuration of a single pipeline, including its stages. Use it to sync the structure of a specific hiring workflow into a warehouse, or to populate downstream selectors with the valid stage IDs for a position.
Enter the pipeline ID in the Pipeline Id field. This field is required. Pipeline IDs can be obtained from the List Pipelines endpoint.
The path to data is set to $.stages[*], so each stage within the pipeline is treated as a separate record. This makes it easy to flatten pipeline stages into a stage-level table downstream.
List Positions
This endpoint returns every open position in the company. Use it to discover position IDs before fetching candidates, to sync a list of open requisitions into a warehouse, or to feed downstream reporting on hiring pipeline volume.
This endpoint takes no parameters. The positions returned are scoped to the company on the credential.
Each record contains the position _id. Use this value as the Position Id on the Get Position, List Candidates, Get Position Activity Stream, and other position-scoped endpoints.
Get Position
This endpoint retrieves the full record for a single position, including its title, department, state, location, pipeline reference, and any custom attributes. Use it to enrich a list of position IDs with the latest details, or to feed downstream systems that operate on a single requisition.
Enter the position ID in the Position Id field. This field is required. Position IDs can be obtained from the List Positions endpoint.
The response is a single position object. The path to data is set to the response root so the position is treated as the record.
Get Position Activity Stream
This endpoint returns the most recent activity stream events for a single position — stage moves, comments, candidate additions, and other workflow events. Use it to feed an audit log or to trigger downstream alerts when activity occurs on a requisition.
Enter the position ID in the Position Id field. This field is required.
The endpoint returns the last 30 events for the position. To capture activity over a longer window, schedule this source to run on a cadence that matches your event volume.
Breezy HR caps the response at the most recent 30 events per position. For high-volume requisitions, run this source on a more frequent cadence to avoid missing events between runs.
List Candidates
This endpoint returns every candidate associated with a single position. Use it to sync candidate pipelines into a warehouse, build reporting on candidate volume per requisition, or feed downstream systems (CRM, sourcing tools, analytics) with candidate data.
Enter the position ID in the Position ID field. This field is required. Position IDs can be obtained from the List Positions endpoint.
Set the Sort field to created to sort candidates by creation date, or to updated to sort by most recent activity. The default is updated.
This endpoint is paginated. Breezy HR returns up to 50 candidates per page; Nexla automatically advances pages and stops when an empty page is returned, so every candidate on the position is captured in a single run.
To sync candidates across every open position, chain a List Positions source into this source via a Nexla lookup-based macro on the Position ID field. See Manual configuration below for details.
Search Candidates
This endpoint searches every candidate in the company for a specific email address. Use it to look up an existing candidate (and the positions they have applied to) before creating a new application, or to de-duplicate candidate records sourced from external systems.
Enter the email address to search for in the Email Address field. This field is required.
The endpoint returns every candidate record that matches the email address across all positions in the company. Each match is returned as a separate record.
The Breezy HR candidate search is exact-match on email. Email addresses are case-insensitive on the server side; trim whitespace upstream to avoid false-negatives.
Get Candidate
This endpoint retrieves the full record for a single candidate on a single position — including profile data, stage, scorecards, custom attributes, and tags. Use it to enrich an existing dataset of candidate IDs with the latest details, or to feed downstream systems that operate on a single application.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field. Both fields identify the candidate's application on a specific position; the same person applying to multiple positions has a different candidate ID on each.
The response is a single candidate object. The path to data is set to the response root so the candidate is treated as the record.
Get Candidate Metadata
This endpoint retrieves the metadata block for a single candidate on a single position — additional fields beyond the core candidate record, including parsed resume content and recruiter-managed metadata. Use it when the core candidate response does not contain all of the fields needed downstream.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
The response is a single metadata object. The path to data is set to the response root so the metadata block is treated as the record.
Get Candidate Discussion Stream
This endpoint returns the most recent discussion stream events for a single candidate on a single position — comments, mentions, scorecards, and other recruiter activity. Use it to feed an audit log of candidate-level activity or to trigger downstream notifications when activity occurs.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
The endpoint returns the last 50 events for the candidate. To capture activity over a longer window, schedule this source to run on a cadence that matches your event volume.
Breezy HR caps the response at the most recent 50 events per candidate. For high-volume candidates, run this source on a more frequent cadence to avoid missing events between runs.
List Candidate Documents
This endpoint returns every document attached to a single candidate on a single position — resumes, cover letters, portfolios, and other uploaded files. Use it to build a candidate-documents inventory or to feed downstream systems that need to fetch the underlying files.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record represents one document and includes metadata such as the document type, original filename, and a Breezy HR-hosted URL where the file can be retrieved.
List Candidate Questionnaires
This endpoint returns every questionnaire submitted by a single candidate on a single position. Use it to capture screening questionnaire responses for downstream scoring, ranking, or reporting.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record represents one questionnaire submission and includes the question prompts and the candidate's answers.
List Company Questionnaires
This endpoint returns every questionnaire configured at the company level (the templates that can be sent to candidates). Use it to sync your questionnaire catalog into a warehouse, or to discover questionnaire IDs before sending a questionnaire to a candidate from the destination side.
This endpoint takes no parameters. The questionnaires returned are scoped to the company on the credential.
Each record contains the questionnaire _id, which is the value used as the Questionnaire Id on the Send Candidate Questionnaire destination endpoint.
List Candidate Assessments
This endpoint returns every third-party assessment result attached to a single candidate on a single position — for example, results from connected technical or psychometric assessment providers. Use it to centralize assessment data alongside candidate records in a warehouse.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record represents one assessment result and includes the assessment provider, score, and result metadata.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
Breezy HR data sources can also be manually configured to ingest data from any valid Breezy HR API endpoint not covered by the pre-built templates, including chained API calls, custom URL parameters, or custom response paths. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method (Breezy HR source endpoints are read-only, so use GET), endpoint URL, lookup-based macros, path to data, metadata, and request headers.
All Breezy HR API URLs use the base https://api.breezy.hr/v3/ followed by the resource path, and most endpoints include a /company/<COMPANY_ID>/... segment — Nexla automatically substitutes the credential's Company ID wherever the path expects it. Most list endpoints return a top-level array (path $[*]) and single-resource endpoints return a single object (path $); the Get Pipeline endpoint returns an object with a stages array, so use the path $.stages[*] to treat each stage as a record. Paginated endpoints (most notably List Candidates) return up to 50 records per page via a page query parameter starting at 1; configure page-based pagination (paging.incrementing) with a start page of 1, page-size parameter page_size, and page size 50, and enable Stop on No Data. Because most endpoints are scoped to a position ID (or a position and candidate ID), lookup-based macros let a downstream source fan out across every position or candidate produced by an upstream source — a common pattern is to chain a List Positions source into a candidates source. The Authorization header carrying the Breezy HR API key and Content-Type: application/json are added automatically from your credential.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Breezy HR data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Click the + icon on the Nexset that will be sent to the Breezy HR destination, and select the Send to Destination option from the menu. Select the Breezy HR connector from the list of available destination connectors, then select the credential that will be used to connect to the Breezy HR company, and click Next; or, create a new Breezy HR credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Breezy HR endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Create Position
This endpoint creates a new position (requisition) within the company on the credential. Use it to programmatically open new requisitions from an HRIS, an internal headcount planning tool, or any upstream system that drives hiring needs.
Each record in the upstream Nexset is sent as the JSON body of the POST call. At minimum, include the position name (the job title) and the pipeline _id (obtainable from the List Pipelines source endpoint). Optional fields include department, location, type, experience, education, description, and requisition_id.
Use the Nexla transform layer to shape upstream attributes into the field names expected by Breezy HR.
Enable the Response Webhook option (in the Manual configuration section below) to capture the new position _id returned in the response. The _id is required for any subsequent calls that operate on the new position (such as creating candidates or moving candidates between stages).
Update Position
This endpoint updates an existing position — useful for syncing title, department, state, location, or requisition status changes back to Breezy HR from a downstream system of record.
Enter the position ID in the Position Id field. This identifies which position to update.
The body of each PUT call is the upstream record (as JSON). Include only the fields that should be changed; Breezy HR leaves omitted fields untouched.
Create Candidate
This endpoint adds a new candidate to a specific position. Use it to programmatically apply candidates sourced from external systems (job board feeds, employee referrals, sourcing tools, ATS migrations) to an open Breezy HR position.
Enter the position ID in the Position Id field. This identifies the position the candidate is being applied to.
Each record in the upstream Nexset is sent as the JSON body of the POST call. At minimum, include the candidate's name and email_address. Optional fields include phone_number, address, summary, cover_letter, source, origin, work_history, education, social_profiles, and a target stage_id.
Optionally include an execute_actions boolean in the body to indicate whether Breezy HR should run any stage-entry actions (auto-emails, questionnaires, assessments) that are configured on the candidate's initial stage.
The same person applying to multiple positions has a different candidate _id on each position. Use the Search Candidates source endpoint to detect duplicates by email before applying.
Update Candidate
This endpoint updates candidate information for a single candidate on a single position. Use it to sync corrected contact details, updated resumes, or recruiter-managed metadata back into Breezy HR from a downstream system of record.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
The body of each PUT call is the upstream record (as JSON). Include only the fields that should be changed; Breezy HR leaves omitted fields untouched.
Move Candidate to Stage
This endpoint moves a candidate to a specific pipeline stage within their current position. Use it to advance candidates through the hiring pipeline from automation rules, scoring systems, or interview-feedback workflows.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset must include a stage_id in the JSON body indicating the target stage. Stage IDs can be obtained from the Get Pipeline source endpoint (where each stage is returned as its own record with its _id).
Moving a candidate to a stage fires any auto-actions (emails, questionnaires, assessments) configured on the target stage in Breezy HR. Validate target stage IDs against the pipeline attached to the candidate's position before activating this destination.
Move Candidate to Another Position
This endpoint moves a candidate from their current position to a different position within the same company. Use it to re-route candidates who are a better fit for a different requisition without re-creating the candidate record from scratch.
Enter the current position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset must include the target position _id in the JSON body. The candidate is moved to the destination position; their stage on the new position depends on the destination pipeline configuration.
Add Candidate Conversation
This endpoint appends a new conversation message or recruiter note to a candidate's activity stream. Use it to programmatically log outbound communications, automated touchpoints, or recruiter observations into the candidate timeline.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset is sent as the JSON body of the POST call. Include the message body and the conversation type (for example, a recruiter note vs. an outbound email). Refer to the Breezy HR conversation reference for the supported types and field names.
Send Candidate Questionnaire
This endpoint sends a company-level questionnaire to a single candidate. Use it to automate screening, intake, or post-interview surveys based on upstream signals (stage change, interview outcome, requisition state).
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Enter the questionnaire ID in the Questionnaire Id field. This field is required. Questionnaire IDs can be obtained from the List Company Questionnaires source endpoint.
Breezy HR delivers the questionnaire to the candidate using the email address on the candidate record. Confirm the candidate's email is correct (via Get Candidate) before sending.
Update Candidate Custom Attribute
This endpoint adds or updates a custom attribute value on a single candidate. Use it to sync values from external systems (scoring engines, enrichment providers, internal CRMs) into Breezy HR's candidate custom fields.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset must include the custom attribute _id (obtainable from the List Candidate Custom Attributes source endpoint) and the desired value in the JSON body.
Update Candidate Education
This endpoint adds or updates an education entry on a candidate's profile. Use it to populate education history from parsed resume data or from an external candidate enrichment provider.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset is sent as the JSON body of the PUT call. Include the education fields (for example, school, field_of_study, start_year, and end_year) expected by Breezy HR.
Update Candidate Work History
This endpoint adds or updates a work-history entry on a candidate's profile. Use it to populate employment history from parsed resume data or from an external candidate enrichment provider.
Enter the position ID in the Position Id field, and the candidate ID in the Candidate Id field.
Each record in the upstream Nexset is sent as the JSON body of the PUT call. Include the work-history fields (for example, company, title, summary, start_date, and end_date) expected by Breezy HR.
Breezy HR destinations can also be manually configured to send data to any valid Breezy HR API endpoint not covered by the pre-built templates. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
All Breezy HR API URLs use the base https://api.breezy.hr/v3/ followed by the resource path; most write endpoints use POST (create) or PUT (update or state change) and expect application/json. Nexla automatically substitutes the credential's Company ID into the {'{company_id}'} path segment, and macros can substitute per-record IDs (for example, {'https://api.breezy.hr/v3/company/{company_id}/position/{position_id}/candidate/{id}'}). The Authorization header carrying the Breezy HR API key and Content-Type: application/json are added automatically from your credential. The Breezy HR API does not support batched create or update calls, so record batching is best left disabled. Enable the Response Webhook option to send the API response after each call to a new Nexla webhook data source — particularly useful for Create Position and Create Candidate, whose new resource _id is required for any follow-up calls.
Important
Test payloads sent to write endpoints (such as Create Position, Create Candidate, Move Candidate to Stage, or Send Candidate Questionnaire) will make real, persistent changes in your Breezy HR company — and some (such as questionnaire sends) will trigger outbound emails to candidates. Use a Breezy HR test or sandbox company before sending test data against a production company.
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to Breezy HR, open the destination resource menu, and select Activate.
The Nexset data will not be sent to Breezy HR until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.