API Documentation

Overview

The HeyMilo API provides programmatic access to the HeyMilo recruitment and interview platform, empowering developers to seamlessly integrate with our AI-powered hiring system. With this API, you can:

  • Retrieve and manage candidate information

  • Oversee and update job postings

  • Set up webhooks for real-time event notifications

  • Access detailed interview data and transcripts

  • Ingest candidate data for processing

Base URL

All API endpoints use the following base URL:

https://api.heymilo.network

Authentication

Important: All API requests require authentication using the X-API-KEY header.

X-API-KEY: your_api_key_here

This header must be included in every request to the API. Requests without a valid API key will receive a 401 Unauthorized response.

Rate Limiting

The API implements rate limiting to ensure fair usage:

  • Default Rate Limit: 300 requests per minute per API key

  • Rate limit headers are included in responses to help you track usage

  • If you exceed the rate limit, you'll receive a 429 Too Many Requests response

Response Codes

The API uses standard HTTP status codes:

  • 200 - Success

  • 401 - Unauthorized (missing or invalid API key)

  • 404 - Not Found

  • 422 - Validation Error

  • 429 - Too Many Requests (rate limit exceeded)

  • 500 - Internal Server Error


API Endpoints

1. Health Check

GET /health

Check the health status of the API Gateway.

Response

Response Schema

Field
Type
Description

message

string

Status message

status

integer

HTTP status code


2. Get Job Postings

GET /postings

Retrieve job postings with pagination support.

Query Parameters

Parameter
Type
Required
Default
Description

page

integer

No

1

Page number for pagination

limit

integer

No

10

Number of results per page

Example Request

Response

Response Schema

Field
Type
Description

postings

array

List of job posting objects

total

integer

Total number of postings

page

integer

Current page number

limit

integer

Number of postings per page

total_pages

integer

Total number of pages

Posting Object Schema:

Field
Type
Description

posting_id

string

Unique identifier for the posting

title

string

Job title

name

string

URL-friendly name for the posting

description

string

Job description

company_id

string

Company identifier

created_at

float

Timestamp when posting was created

last_updated

float

Timestamp when posting was last updated

archived

boolean

Whether the posting is archived

deadline

float

Deadline for the posting (optional)

finalized

boolean

Whether the posting is finalized

phone_number_id

string

Associated phone number ID

root_level_configs

object

Top-level settings like instructions and company/job overview

agentic_workflow

array

List of agent-driven steps (e.g., resume, web interview)

Root Level Configs Schema:

Field
Type
Description

instructions

string

General instructions for agents

company_overview

string

Overview of the company (optional)

job_overview

string

Overview of the job (optional)

interview_process_overview

string

Interview process overview (optional)

language

string

Communication language

interviewer_name

string

Name of the interviewer (optional)

Agentic Workflow Configs Schema:

Field
Type
Description

type

string

Step type (e.g., resume, web_interview, conversational_sms)

unique_id

string

Unique ID for the workflow step

config

object

Configuration specific to the workflow type

3. Get Interview Details by Interview ID

GET /interview/{interview_id}

Retrieve detailed information about a specific interview, including candidate details, scores, and recordings.

Path Parameters

Parameter
Type
Required
Description

interview_id

string

Yes

The unique identifier for the interview

Example Request

Response


4. Get Interviews by Posting

GET /interviews/{posting_id}?page=1&limit=10

Retrieve interview data filtered by posting ID and candidate ID.

Path Parameters

Parameter
Type
Required
Description

posting_id

string

Yes

The ID of the job posting

Query Parameters

Parameter
Type
Required
Description

page

integer

No

Page number (default: 1)

limit

integer

No

Number of interviews per page (default: 10)

Example Request

Response Schema

Field
Type
Description

candidates

array

List of candidate interview objects

total

integer

Total number of interviews

page

integer

Current page number

limit

integer

Number of items per page

total_pages

integer

Total number of pages

Candidate Object Schema

Field
Type
Description

interview_id

string

Unique ID for the interview

details

object

Core interview details

workflow

object

Workflow progress and status

agentic_data

object

AI-generated analysis of resume/interview

company_name

string

Name of the company

company_image

string

Company logo URL

posting_title

string

Title of the job posting

posting_interview_type

string

Interview type (e.g. web, voice, etc.)

posting_id

string

Job posting ID

Response


5. Export Interviews

GET interviews/export/json

Retrieve JSON file of interviews

Path Parameters

Field
Type
Required
Description

posting_id

string

Yes

ID of the job posting to export

Example Request

Response Schema

Field
Type
Description

job_id

string

ID of the export job (used for tracking)

status

string

Status of the export job (e.g., success)

file_url

string

Direct URL to download the exported JSON file

Response


6. Create Webhook

POST /create

Create a new webhook configuration to receive real-time notifications about interview events.

Request Body

Example Request

Response

Request Schema

Field
Type
Required
Description

posting_id

string

Yes

ID of the posting this webhook is for

url

string (URL)

Yes

Destination URL for the webhook

event_type

string

Yes

Event type: "interview_started", "interview_completed", "report_available"

http_method

string

No

HTTP method: "get" or "post" (default: "post")


7. Get Webhook

GET /fetch/{webhook_id}

Retrieve a webhook configuration by its ID.

Path Parameters

Parameter
Type
Required
Description

webhook_id

string

Yes

The webhook ID

Example Request

Response


8. Get All Webhooks

GET /all

Retrieve webhooks with optional filters.

Query Parameters

Parameter
Type
Required
Description

posting_id

string

No

Filter by posting ID

event_type

string

No

Filter by event type

9. Deactivate Webhook

POST /deactivate/{webhook_id}

Deactivate a webhook.

Path Parameters

Parameter
Type
Required
Description

webhook_id

string

Yes

The webhook ID


10. Ingest Single Candidate

POST /ingest/x/{url_key}

Ingest a single candidate into the system using a posting-specific url_key.

Spectial Note

  • retake: false (default) - Returns existing interview if candidate already has one for this posting

  • retake: true - Always creates a new interview, even if candidate already has one

Path Parameters

Field
Type
Required
Description

url_key

string

Yes

Unique key identifying the target pipeline

Example Request

Response Schema

Field
Type
Description

message

string

Confirmation message about ingestion initiation

ingestion_id

string

Unique ID for the ingestion process

interview_details

array

List of interviews created/linked for the candidate

Each interview details:

Field
Type
Description

interview_id

string

Unique identifier for the interview

interview_link

string

URL link for candidate’s interview access

Response


11. Bulk Ingest Candidates

POST /ingest/x/bulk/{url_key}

Ingest multiple candidates into the system in a single request, using a posting-specific url_key.

Spectial Note

  • retake: false (default) - Returns existing interview if candidate already has one for this posting

  • retake: true - Always creates a new interview, even if candidate already has one

Path Parameters

Field
Type
Required
Description

url_key

string

Yes

Unique key identifying the target pipeline

Example Request

Response Schema

Field
Type
Description

message

string

Confirmation message about bulk ingestion initiation

ingestion_id

string

Unique ID for the bulk ingestion process

interview_details

array

List of interviews created/linked for the candidates

Each interview details:

Field
Type
Description

interview_id

string

Unique identifier for the interview

interview_link

string

URL link for candidate’s interview access

Response


Webhook Event Types

The API supports the following webhook event types:

Event Type
Description

interview_started

Triggered when a candidate starts an interview

interview_completed

Triggered when a candidate completes an interview

report_available

Triggered when an interview report becomes available

Error Handling

All API endpoints return structured error responses:

Support

For API support and questions:

  • Documentation: https://docs.heymilo.cloud

  • Status Page: https://status.heymilo.ai


Last updated: Sep 19, 2025

Last updated