Platform
API for your agents
A key your company mints lets your own agents (Claude or any other) and scripts read and, as endpoints go live, act on your HR Suite and your findjobs.ge account. Scoped, logged, revocable, and described by machine so an agent can discover it on its own.
Who it is for
Companies that want an assistant to do the routine: answer "what should we offer a warehouse lead", list applicants waiting too long, post a vacancy from a brief, approve a pay run after a human has read the checks. The API is the same service layer the pages use, so anything the suite does will be reachable, with the same rules and the same role limits.
It is also the honest answer to "can I automate this": read-only endpoints are live now; write endpoints are listed with status "planned" and answer 501 until they are served, so an agent never guesses.
Minting a key
- Open Settings › API keys. Only the company owner can mint; a fresh second lock is asked for first.
- Name the key for what it does ("Claude agent", "payroll script"), pick the narrowest scopes that do the job, and choose when it expires.
- Read the risks and tick the acknowledgement. The key is shown once; copy it to your agent's secret store and nowhere else.
- Revoke it from the same page the moment you no longer need it. Revoking is instant.
In the demo anyone can mint a demo key (fjhr_demo_…). It acts on your demo company only and dies with it.
The risks, plainly
- A key is a password for the company. Whoever holds it can do everything its scopes allow, with no second lock.
- An agent acts in your name. A wrong instruction can close a vacancy, reject an applicant or change a record. Start with read scopes; add write scopes when the agent has earned them.
- Never paste a key into a public chat, a repository or a prompt someone else can read. Rotate when in doubt.
- Every call is logged with the key, the route, the status and the time. The owner reads the log on the same page.
Scopes
- market:read: pay bands and hiring difficulty.
- company:read: the company, Home and the counts.
- jobs:read and jobs:write: read, post, edit, close and bump vacancies.
- applications:read and applications:write: read applications and scores; move stages, reply, schedule interviews.
- people:read and people:write: employee records without private details; add and change people, decide leave.
- money:read and money:write: pay runs and rules; approve a pay run (files are prepared; no money moves).
- settings:write: webhooks and settings. Keys themselves can never be minted or changed by a key.
- all: everything above.
Calling it
Base URL https://hr.findjobs.ge/hr/api/v1. Send the key as Authorization: Bearer fjhr_live_… on every request. Answers are JSON. Add ?hl=ka, ru or tr to get summaries in that language where the API speaks.
Limits: 60 calls a minute and 20 writes a minute per key. A 429 carries Retry-After in seconds.
Errors are JSON with a stable code and a sentence: missing_key, invalid_key, scope, rate_limited, not_yet (designed, not served), not_found, server_error, and a docs link.
For an LLM agent
- Give the agent https://hr.findjobs.ge/hr/api/v1/llms.txt: it describes the API, the limits and the rules in plain text.
- Give it the OpenAPI document at https://hr.findjobs.ge/hr/api/v1/openapi.json to generate tools from.
- Store the key in the agent's secret store, never in the prompt.
- Tell it which scopes the key has, so it does not try what it cannot do.
Example: curl -H "Authorization: Bearer $KEY" "https://hr.findjobs.ge/hr/api/v1/market/pay-check?city=tbilisi&family=sales&offer=1200"
What a key can never do
- Read another company's data, or any job seeker's private data beyond what the company already sees on findjobs.ge.
- Move money, log in to a bank, or file with the Revenue Service.
- Mint or change keys, or weaken the second lock.
- Learn whether an employee has a findjobs profile or is applying elsewhere.
Endpoints
The table below is generated from the same list the API routes from, so it cannot drift. Status "live" answers today; "planned" is designed and answers 501 until served.
| hr.findjobs.ge/hr/api/v1 | scope | status | ||
|---|---|---|---|---|
GET | /me | company:read | live | Who you are: the company, this key's scopes and limits |
GET | /home | company:read | live | The Home queue: what needs a decision |
GET | /market/pay-check | market:read | live | What a family pays in a city: lower quarter, middle, upper quarter |
GET | /market/difficulty | market:read | live | Hiring difficulty in a city: ads per seeker, days ads stay up |
GET | /market/radar | market:read | live | Competitor radar: your open roles, rival ads, pay, who hires most |
GET | /market/survey | market:read | live | Salary survey groups in a city: companies, people, the middle of real pay |
POST | /market/survey | money:write | live | Your company's pay entry for a family: people, low, middle, high |
GET | /jobs | jobs:read | live | Your vacancies on findjobs.ge |
GET | /jobs/{id} | jobs:read | live | One vacancy in full |
GET | /jobs/{id}/doctor | jobs:read | live | The ad doctor: a 0–100 score, every check and what to fix |
POST | /jobs | jobs:write | planned | Post a vacancy (goes to moderation, as on the site) |
PATCH | /jobs/{id} | jobs:write | planned | Edit a vacancy |
POST | /jobs/{id}/close | jobs:write | planned | Close a vacancy |
POST | /jobs/{id}/bump | jobs:write | planned | Bump a vacancy (Pro) |
GET | /applications | applications:read | live | Applications to your vacancies |
GET | /applications/{id} | applications:read | live | One application: message, answers, scores |
GET | /people | people:read | live | Employee records (without private fields) |
POST | /people | people:write | live | Add a record |
GET | /people/{id} | people:read | live | One record with its history and leave balance |
PATCH | /people/{id} | people:write | live | Change a record; pay, role and department changes go to the history |
POST | /people/{id}/leaving | people:write | live | Set the last day |
GET | /timeoff | people:read | live | Time off: asked and approved |
POST | /timeoff | people:write | live | Add time off (asked, or approved at once) |
POST | /timeoff/{id}/decide | people:write | live | Decide: approved, declined, cancelled |
GET | /payrun | money:read | live | A month's pay run: lines and totals |
POST | /payrun/{period}/approve | money:write | live | Approve a month (a snapshot is taken first) |
GET | /payrun/{period}/file | money:read | live | A file of an approved month: oris, fina, 1c, excel, journal, tbc, bog, liberty, bank-excel, rsge |
GET | /rules | money:read | live | Rules and rates, with their confirmer |
POST | /rules/{id}/confirm | money:write | live | Confirm a rule in a name |
GET | /snapshots | settings:write | live | The snapshots |
POST | /snapshots | settings:write | live | Take a snapshot now |
POST | /snapshots/{id}/restore | settings:write | live | Restore a snapshot (a snapshot of now is taken first) |
GET | /pipeline | applications:read | live | One vacancy's board: stages, cards, the reply clock, scorecards |
POST | /applications/{id}/status | applications:write | live | Move a card to a stage: seen, shortlisted, hold, hired, rejected |
POST | /applications/{id}/scorecard | applications:write | live | Save a scorecard: four scores 1–5 and a note |
POST | /applications/{id}/message | applications:write | planned | Reply to the applicant in the same chat as on the site |
POST | /applications/{id}/interview | applications:write | planned | Schedule an interview |
GET | /people | people:read | planned | Employee records |
POST | /people | people:write | planned | Add an employee |
GET | /people/{id} | people:read | planned | One record (private details excluded) |
GET | /leave/requests | people:read | planned | Leave requests |
POST | /leave/requests/{id}/decide | people:write | planned | Approve or decline leave |
GET | /pay-runs | money:read | planned | Pay runs |
GET | /pay-runs/{month} | money:read | planned | One month's run with its lines |
POST | /pay-runs/{month}/approve | money:write | planned | Approve a run (files are prepared; no money moves) |
GET | /rules | money:read | planned | Rules and rates with their confirmation status |
GET | /keys | settings:write | planned | This company's keys (keys cannot be minted by a key) |
GET | /webhooks | settings:write | planned | Webhook subscriptions |