Skip to main content
POST
/
v1
/
tracker
/
applications
Create Application
curl --request POST \
  --url https://api.mokaru.ai/v1/tracker/applications \
  --header 'Content-Type: application/json' \
  --data '
{
  "jobTitle": "<string>",
  "company": "<string>",
  "location": "<string>",
  "jobUrl": "<string>",
  "jobDescription": "<string>",
  "jobListingId": "<string>",
  "source": "<string>",
  "autoPrepare": true
}
'
{
  "success": true,
  "applicationId": "<string>",
  "existing": true,
  "autoPrepare": true
}

Overview

The Create Application endpoint adds a job to your Mokaru application tracker. It is the second step in the typical automation workflow: search for jobs, create applications for the ones that match, then list your applications to track progress. Typical workflow:
  1. Search - use the Search Jobs endpoint to find relevant positions
  2. Create - use this endpoint to add the best matches to your tracker
  3. List - use the List Applications endpoint to review and export your pipeline
Common use cases:
  • AI agent pipelines - let OpenClaw, Claude Code, or another AI agent review job listings and automatically add promising ones to your tracker. With autoPrepare, the agent can also tailor your resume for each job.
  • n8n and Make automations - build a workflow that watches an RSS feed, email inbox, or Slack channel for job leads, then creates applications automatically.
  • Browser extension integration - capture jobs while browsing LinkedIn, Indeed, or company career pages and push them to your tracker with a single click.
The endpoint includes built-in duplicate detection. If you provide a jobUrl that already exists in your tracker, the API returns the existing application ID with "existing": true instead of creating a duplicate. When you pass a jobListingId from the Search Jobs endpoint, salary data and publisher information are automatically linked to the application.
Scope required: tracker:write | Rate limit: 20 requests/min

Request

POST /v1/tracker/applications

Body Parameters

jobTitle
string
required
Job title (max 200 characters)
company
string
required
Company name (max 200 characters)
location
string
Job location (max 200 characters)
jobUrl
string
Link to the job posting (max 2000 characters). Used for deduplication - if an application with the same URL already exists, the existing ID is returned.
jobDescription
string
Full job description text (max 50,000 characters). Required if autoPrepare is true (minimum 500 characters).
jobListingId
string
ID from the Search Jobs endpoint. Links salary data and publisher info automatically. If jobDescription is not provided, the description from the listing is used.
source
string
default:"Other"
Where the job was found. Options: LinkedIn, CompanyWebsite, JobWebsite, Referral, Agency, Other
autoPrepare
boolean
default:"false"
When true, Mokaru duplicates your default resume, tailors it to the job description, and queues it for AI processing. Requires:
  • Plus plan with auto-prep feature
  • A default resume set in your Mokaru account
  • A job description of at least 500 characters

Example

curl -X POST "https://api.mokaru.ai/v1/tracker/applications" \
  -H "Authorization: Bearer mk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "jobTitle": "Senior Software Engineer",
    "company": "Acme Corp",
    "location": "San Francisco, CA",
    "jobUrl": "https://acme.com/careers/123",
    "jobListingId": "clx1234...",
    "autoPrepare": true
  }'

Response

success
boolean
Whether the operation succeeded
applicationId
string
The application ID
existing
boolean
true if an application with the same jobUrl already existed
autoPrepare
boolean
Whether auto-prep was triggered for this application

Success (with auto-prep)

{
  "success": true,
  "applicationId": "clx5678...",
  "existing": false,
  "autoPrepare": true
}

Success (without auto-prep)

{
  "success": true,
  "applicationId": "clx5678...",
  "existing": false,
  "autoPrepare": false
}

Duplicate Detection

If you provide a jobUrl that already exists in your tracker:
{
  "success": true,
  "applicationId": "clx5678...",
  "existing": true
}

Error Responses

No default resume set:
{
  "error": "No default resume found. Set a default resume in Mokaru before using auto-prep.",
  "code": "NO_DEFAULT_RESUME"
}
Plus plan required:
{
  "error": "Auto-prep requires a Plus plan",
  "code": "PLAN_REQUIRED"
}
Job description too short:
{
  "error": "Auto-prep requires a job description of at least 500 characters.",
  "code": "JOB_DESCRIPTION_TOO_SHORT"
}
Validation errors:
{
  "error": "Validation failed",
  "details": {
    "jobTitle": ["Required"],
    "jobUrl": ["Invalid url"]
  }
}
When autoPrepare is true, the application is created with status preparing. Mokaru’s AI pipeline will process it in the background - typically within 30 seconds. The application status changes to watchlist once processing is complete. You can check the status via the List Applications endpoint.