Submit an external application
Creates an application sourced from outside Jobiflow (e.g. your own careers page or another job board). The candidate does not need to have a Jobiflow account. Requires scope: `applications:write`
Creates an application sourced from outside Jobiflow (e.g. your own careers page or another job board). The candidate does not need to have a Jobiflow account.
Requires scope: applications:write
Authorization
ApiKeyAuth API key issued by Jobiflow. Pass it in the X-API-Key request header.
Create keys via the company dashboard (Settings → API Keys) or via POST /settings/api-keys.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/public/v1/applications/external" \ -H "Content-Type: application/json" \ -d '{ "jobListingId": "a7d01775-e611-4288-b8c1-442852b8ff39", "firstName": "Jane", "lastName": "Doe", "email": "jane@example.com" }'{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"jobListingId": "a7d01775-e611-4288-b8c1-442852b8ff39",
"jobSeekerId": "f2c64cb3-7c14-4d64-8545-215342f6c081",
"status": "ACTIVE",
"source": "INTERNAL",
"appliedAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"candidate": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"firstName": "string",
"lastName": "string",
"headline": "string",
"email": "user@example.com",
"phone": "string"
}
}{
"status": 400,
"error": "BAD_REQUEST",
"message": "Malformed JSON body",
"timestamp": "2026-05-17T12:00:00Z",
"path": "/public/v1/job-listings"
}{
"status": 401,
"error": "UNAUTHORIZED",
"message": "Invalid or missing API key",
"timestamp": "2026-05-17T12:00:00Z",
"path": "/public/v1/job-listings"
}{
"status": 403,
"error": "FORBIDDEN",
"message": "Scope 'jobs:write' is required",
"timestamp": "2026-05-17T12:00:00Z",
"path": "/public/v1/job-listings"
}{
"status": 404,
"error": "NOT_FOUND",
"message": "Job listing not found",
"timestamp": "2026-05-17T12:00:00Z",
"path": "/public/v1/job-listings/00000000-0000-0000-0000-000000000000"
}{
"status": 422,
"error": "VALIDATION_ERROR",
"message": "Request validation failed",
"timestamp": "2026-05-17T12:00:00Z",
"path": "/public/v1/job-listings",
"details": [
{
"field": "position",
"message": "must not be blank"
}
]
}Update application status PATCH
Moves an application to a new pipeline stage. Triggers a `application.status_changed` webhook event if webhooks are configured. Requires scope: `applications:write`
Search candidates GET
Full-text and geo-filtered search across Jobiflow candidate profiles that have opted in to recruiter visibility. Requires scope: `candidates:read`