The request
Reference for List import statuses, HeadHoncho API v1. It is a read, sent to the base address https://api.headhoncho.app.
GET /api/v1/imports/statuses
The key needs the Jobs area at read. An answered call costs 1 credit; a refusal costs nothing. See credits.
Send your key as Authorization: Bearer hh_live_.... See API keys.
Parameters
| Name | Kind | Required | Description | Example |
|---|---|---|---|---|
plan | text, in the query | Yes | The staged files as a JSON list. Each item: staging_id (from Stage an import file), half (jobs, money or payments), mapping (field to column numbers) and date_order. | [{"staging_id": "k3Zp...", "half": "jobs", "mapping": {"ref": [0], "client_name": [1]}}] |
system | text, in the query | No | The system the file came from, a key from Import sources. The answers are remembered for it. | workiz |
Try it with your key
Paste your key and change the values. The box builds the call as a cURL line and a fetch line, ready to copy. It never sends anything itself.
Your key stays in this page and is never sent anywhere. Copy the line below and run it yourself.
What comes back
statuses, one per word: key, word, count, jobs, money, target (a status id, new or canceled), target_label, confidence and reason. options: the choices for each target. remembered_all and counts. Send your answers back as status_map on the next calls.
It never changes a record. It only reads the companies the key reaches.
Every field in the answer
Types are read from the example answer. Money is a plain number in the company's currency. A time carries its offset from UTC (Z is UTC). Ids are opaque text. A field with no line of its own here has its name spelled out; the common fields mean the same on every page.
| Field | Type | Meaning |
|---|---|---|
statuses | list of objects | The statuses. |
statuses[].key | text | A short code for this item. Match on it in code. |
statuses[].word | text | The word. |
statuses[].count | whole number | How many match in all, across every page. |
statuses[].jobs | whole number | The jobs. |
statuses[].money | whole number | The money. |
statuses[].target | text | The target. |
statuses[].target_label | text | The target label. |
statuses[].confidence | text | The confidence. |
statuses[].reason | text | The reason given. |
options | list of objects | The options. |
options[].id | id (text) | The id of this record. Ids are opaque text: keep them exactly as given. |
options[].label | text | The name the app shows for it. |
remembered_all | true or false | The remembered all. |
counts | object | The counts. |
counts.words | whole number | The text, as a person would say it. |
counts.matched | whole number | The matched. |
counts.new | whole number | The new. |
How to answer
Build status_map as an object of the file's word to a target: a status id, "new" to add it, or "canceled". Send it on Preview, Rehearse and Commit.
Errors that apply
| Code | Status | What it means |
|---|---|---|
| `missing_key` | 401 | Send your key as Authorization: Bearer hh_live_... |
| `unknown_key` | 401 | That key is not one we issued, or it was revoked. |
| `no_access` | 403 | This credential does not reach that. Ask the person who made it for access. |
| `invalid` | 422 | Some fields were refused. See fields. |
| `no_credits` | 402 | Out of credits. Top up on Settings › Credits, or turn on auto top-up. |
Related
- List import systems: The systems a book can be imported from, and for each the steps to get its file out, what the file cannot carry, and which one this workspace used last.
- Get import fields: Every field an import reads, for the jobs file and the money file: its label, its tier and what leaving it blank costs.
- Get import template: A CSV to fill in, with every column the import reads and three example rows, for the jobs file, the money file or a payments list.
- Stage import: Send one export file (CSV or Excel) and get back what each column looks like and the mapping we propose. Nothing is imported yet.
- List import job types: The job-type words the staged files use, how many rows carry each, and which of our job types each should land on. Nothing is written.
- Preview import: Read the staged files against this workspace and say what an import would do, row by row: what lands, what is already here, what is refused and why.
- Rehearse import: Run the whole import for real inside one step that is then thrown away, and say what it would have landed and refused. Nothing is kept.
- Commit import: Import every clean row of the staged files: the jobs, then the money on them. Rows already here are skipped, so sending it twice adds nothing.
- The same records in the app: the Jobs panel.
- How the API fits together: the model, API keys, errors and the MCP server.