Skip to content
Appmake
Kalle API docs

Kalle Browser via the API

Kalle Browser is Kalle working in a real browser: it reads pages, clicks, types and fills in forms. Through the API you can hand it a task from your own code and decide which steps need a person's approval.

How it works

Tasks run in the Kalle Browser extension, which works in Chrome, Edge, Brave, Arc, Firefox and Safari. Install it and pair it with your workspace from Kalle Browser in the Appmake console. Tasks you create with the API then run in that paired browser.

Create a task

POST/v1/browser/tasks

Describe the goal in plain words, the way you would brief a colleague. Add start_url if you know where Kalle should begin.

curl https://api.kalle.build/v1/browser/tasks \
  -H "Authorization: Bearer $KALLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kalle-turbo-max",
    "instructions": "Find three venues in Copenhagen for 40 people on 12 March and add them to the shared sheet.",
    "start_url": "https://example.com/venues",
    "approval": "before_submit"
  }'
FieldTypeRequiredDescription
instructionsstringYesWhat Kalle should get done.
modelstringNoThe model that drives the browser. Defaults to auto.
start_urlstringNoThe page Kalle opens first.
approvalstringNoWhen Kalle stops and asks: before_submit or every_step. Defaults to before_submit.

The response is the task, with an id and a status:

JSON
{
  "id": "task_8Hq2",
  "type": "browser_task",
  "status": "queued",
  "model": "kalle-turbo-max",
  "created_at": "2026-11-07T09:12:44Z"
}

Follow the task

GET/v1/browser/tasks/{id}

Check the task until it is finished. Each step Kalle has taken is listed in steps, with what it saw and what it did.

StatusMeaning
queuedWaiting for the paired browser.
runningKalle is working.
waiting_for_approvalKalle has stopped before a step and needs a decision.
doneFinished. The result is in result.
failedKalle could not finish. The reason is in error.
cancelledSomeone stopped the task.

Approve a step

With before_submit, Kalle always asks before it pays for anything or sends a form. With every_step, it asks before every action. The step that waits is in pending_step, with a description you can show to a person.

POST/v1/browser/tasks/{id}/approve

curl https://api.kalle.build/v1/browser/tasks/task_8Hq2/approve \
  -H "Authorization: Bearer $KALLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "step_id": "step_5", "decision": "approve" }'

Send approve to let Kalle carry on, or reject to stop that step. After a rejection Kalle looks for another way or ends the task and explains why.

Good tasks

  • Say what done looks like: "add three venues to the sheet" is better than "look for venues".
  • Give limits up front, such as a budget, a date or the sites Kalle may use.
  • Keep a person in the loop for anything with money or customers involved.