Fetch your curated job feed and filter options programmatically from your own website or app.
Getting your access token
Log in to your artha.link account and open API from the sidebar (or More → API on mobile).
Click Create access token, give it a name, and optionally set an expiration.
Copy the token immediately — for security reasons it is shown only once. You can have up to 5 active tokens, and you can revoke or delete a token at any time from the same page.
Base URL
https://api.artha.link/api/v1
Authentication
Include your access token on every request using either header:
Authorization: Bearer ak_live_YOUR_TOKEN
or
X-API-Key: ak_live_YOUR_TOKEN
Keep your token secret. Use it from your server only — never in browser or mobile app code. If a token is exposed, revoke it and create a new one.
How results are personalized
Your saved job feed preferences from My Link (keywords, companies, experience levels, countries, work modes, salary, and more) are applied automatically as defaults on every request. Any query parameter you pass explicitly overrides the matching saved preference.
Endpoints
GET /jobs
Returns your personalized job feed.
Query parameters (all optional):
Parameter | Type | Description |
limit | integer | Results per page, 1–100 (default 10) |
offset | integer | Pagination offset (default 0) |
q | string | Free-text search |
location | string | Country code, e.g. US |
state | string | State filter |
city | string | City filter |
niche_keywords | string (CSV) | Keywords to include |
negative_keywords | string (CSV) | Keywords to exclude |
job_type | string | full-time, part-time, contract, internship |
work_mode | string | remote, hybrid, onsite |
exp_level | string | Experience level |
education | string | Education level |
industry | string | Industry filter |
company | string | Company name filter |
salary_min | number | Minimum salary |
salary_max | number | Maximum salary |
posted_after | string | ISO date — only jobs posted after |
sort_by | string | most_relevant (default), newest, high_cpa |
Example request:
curl "https://api.artha.link/api/v1/jobs?limit=10&work_mode=remote" \
-H "X-API-Key: ak_live_YOUR_TOKEN"
Example response:
{
"success": true,
"message": "Jobs fetched successfully",
"data": {
"items": [
{
"id": "1831_20882683",
"slug": "sales-manager-geo-allianz-chhindwara-fe01e75d",
"title": "Sales Manager Geo",
"company": "Allianz",
"logo": "https://static.example.com/logo.png",
"description": "<p><b>Job Description:</b> ...</p>",
"location": null,
"city": "Chhindwara",
"state": "Madhya Pradesh",
"country": "IN",
"job_type": "full-time",
"salary_min": null,
"salary_max": null,
"salary_curr": null,
"exp_min": 2,
"exp_max": 5,
"exp_unit": "years",
"skills": ["Sales Execution", "Customer Relations"],
"posted_date": "2026-07-21T17:31:44",
"url": "https://artha.link/@your-username/jobs/sales-manager-geo-allianz-chhindwara-fe01e75d?clientId=...&domainName=your-username&source=public-api&utm_source=artha-link"
}
],
"total": 113097,
"limit": 10,
"offset": 0,
"has_more": true
}
}Important: always link users to the url field. It points to the job page on your artha.link profile with tracking parameters already included, so applications from your integration stay attributed to you and count toward your earnings.
GET /jobs/filters
Returns available filter options for building job-search UIs: categories, job types, experience levels, education levels, work modes, countries, states, cities, companies, industries, salary ranges, and the total job count. Each option includes its value and matching job count.
curl "https://api.artha.link/api/v1/jobs/filters" \
-H "X-API-Key: ak_live_YOUR_TOKEN"
Errors
Error responses have the shape { "success": false, "error": { "code": "...", "message": "..." } }.
Status | Code | Meaning |
400 | VALIDATION_ERROR | Invalid query parameters |
401 | MISSING_API_KEY | No token provided |
401 | INVALID_API_KEY | Token does not exist or is malformed |
401 | API_KEY_REVOKED | Token has been revoked |
401 | API_KEY_EXPIRED | Token passed its expiration date |
403 | CREATOR_BLOCKED | Account is not active |
429 | RATE_LIMIT_EXCEEDED | Too many requests |
502 | EXTERNAL_API_ERROR | Job data temporarily unavailable — retry shortly |
Requests are rate limited per token. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers; a 429 response also includes Retry-After (seconds) — wait that long before retrying.
Tips
Track your token's activity (endpoint, status, IP, last used) from the API page via View usage.
Building with an AI assistant? Use the Copy LLM prompt button on the API page — it copies a ready-made implementation brief you can paste into ChatGPT, Claude, or Cursor
