List Applications
curl --request GET \
--url https://api.mokaru.ai/v1/tracker/applications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mokaru.ai/v1/tracker/applications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mokaru.ai/v1/tracker/applications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mokaru.ai/v1/tracker/applications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mokaru.ai/v1/tracker/applications"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mokaru.ai/v1/tracker/applications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mokaru.ai/v1/tracker/applications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"jobTitle": "<string>",
"company": "<string>",
"location": "<string>",
"jobUrl": "<string>",
"status": "<string>",
"source": "<string>",
"priority": 123,
"salaryMin": 123,
"salaryMax": 123,
"appliedDate": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"isArchived": true
}
],
"total": 123,
"hasMore": true,
"limit": 123,
"offset": 123
}Applications
List Applications
View your tracked applications
GET
/
v1
/
tracker
/
applications
List Applications
curl --request GET \
--url https://api.mokaru.ai/v1/tracker/applications \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mokaru.ai/v1/tracker/applications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mokaru.ai/v1/tracker/applications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mokaru.ai/v1/tracker/applications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mokaru.ai/v1/tracker/applications"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mokaru.ai/v1/tracker/applications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mokaru.ai/v1/tracker/applications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"jobTitle": "<string>",
"company": "<string>",
"location": "<string>",
"jobUrl": "<string>",
"status": "<string>",
"source": "<string>",
"priority": 123,
"salaryMin": 123,
"salaryMax": 123,
"appliedDate": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"isArchived": true
}
],
"total": 123,
"hasMore": true,
"limit": 123,
"offset": 123
}Overview
The List Applications endpoint retrieves your tracked job applications from Mokaru. Use it to sync your application pipeline to external tools, build custom dashboards, or let an AI agent review your progress. Common use cases:- Notion and Airtable sync - set up an n8n or Make workflow that polls this endpoint on a schedule and upserts rows into your Notion database or Airtable base. Keep your preferred workspace in sync without manual copy-pasting.
- Spreadsheet export - pull all your applications into Google Sheets or Excel for custom filtering, pivot tables, or sharing with a career coach.
- AI agent review - let an AI agent fetch your current applications, identify stale ones (applied weeks ago with no response), and suggest follow-up actions.
- Custom dashboards - build a personal analytics view showing application volume by week, conversion rates by source, or salary range distribution.
- Slack and email digests - create a daily or weekly summary of new applications, status changes, and upcoming interviews.
limit and offset for pagination when you have more applications than fit in a single response.
Application Statuses
Each application has a status that reflects where it is in your pipeline. Statuses split into active (still in progress) and archived (terminal - no further action expected):| Status | Group | Description |
|---|---|---|
watchlist | active | Saved for later - you have not applied yet |
preparing | active | Actively preparing your application materials |
applied | active | Application submitted and waiting for a response |
response | active | You received a response from the company |
screening | active | Initial screening stage (phone screen, recruiter call) |
interview_scheduled | active | An interview has been scheduled |
interviewed | active | Interview completed, waiting for feedback |
offer | active | You received a job offer |
negotiating | active | Negotiating terms or compensation |
accepted | archived | You accepted an offer for this position |
rejected | archived | The application was rejected |
withdrawn | archived | You withdrew your application |
no_response | archived | No response received after a reasonable period |
PATCH /v1/tracker/applications/:id) to one of the archived values. To un-archive, update back to any active status.
Scope required:
tracker:read | Rate limit: 60 requests/minRequest
GET /v1/tracker/applications
Query Parameters
string
Filter by exact status:
watchlist, preparing, applied, response, screening, interview_scheduled, interviewed, offer, negotiating, accepted, rejected, withdrawn, no_responseboolean
Filter by archive bucket.
true returns only archived applications (accepted, rejected, withdrawn, no_response). false returns only active ones. Ignored when status is also provided.number
default:"25"
Results per page (max 100)
number
default:"0"
Pagination offset
Example
curl "https://api.mokaru.ai/v1/tracker/applications?status=applied&limit=10" \
-H "Authorization: Bearer mk_your_key"
Response
array
Array of applications
Show child attributes
Show child attributes
string
Application ID
string
Job title
string
Company name
string
Job location
string
Link to the job posting
string
Current status
string
Where the job was found
number
Priority (1-5)
number
Minimum salary
number
Maximum salary
string
ISO 8601 date
string
ISO 8601 date
string
ISO 8601 date
boolean
Derived: true when status is accepted, rejected, withdrawn, or no_response
number
Total matching applications
boolean
Whether more results are available
number
Results per page
number
Current offset
{
"data": [
{
"id": "clx5678...",
"jobTitle": "Senior Software Engineer",
"company": "Acme Corp",
"location": "San Francisco, CA",
"jobUrl": "https://acme.com/careers/123",
"status": "applied",
"source": "Other",
"priority": 3,
"salaryMin": 150000,
"salaryMax": 200000,
"appliedDate": "2026-03-15T00:00:00.000Z",
"createdAt": "2026-03-15T12:00:00.000Z",
"updatedAt": "2026-03-15T12:00:00.000Z",
"isArchived": false
}
],
"total": 42,
"hasMore": true,
"limit": 25,
"offset": 0
}
Was this page helpful?
