Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/onenot8/issueLoop/llms.txt

Use this file to discover all available pages before exploring further.

The IssueLoop HTTP bridge lets non-Python callers — Node.js services, Go programs, shell scripts, or anything that can make HTTP requests — interact with the ticket queue without importing the Python library. Start the server with issueloop serve (default port 8787). The server binds exclusively to 127.0.0.1 and speaks JSON on every route.
The HTTP bridge has no authentication layer. It is designed for local use only. Do not expose port 8787 (or any other port you choose) to external networks without placing your own authenticating gateway in front of it.

GET /health

A liveness check. Returns immediately with no side effects, useful for confirming the server started correctly or as a readiness probe in a local process manager. Query parameters: none Response
{"status": "ok"}
Example
curl http://localhost:8787/health

GET /errors/top

Claims the highest-priority pending ticket for a given repo. Atomically sets its status to in_progress and records a dispensed_at timestamp, then returns the full ticket object. Returns an empty object if no pending tickets exist. This is the HTTP equivalent of issueloop next <repo_name>. Query parameters
ParameterTypeRequiredDescription
repostring✅ YesThe repo name whose queue to drain
Response — ticket available
{
  "id": "a3f9c1b2-4e8d-4f2a-b1c3-9d7e6f0a2b4c",
  "repo": "myrepo",
  "priority": "high",
  "status": "in_progress",
  "error_summary": "AssertionError in test_auth.py::test_login — expected 200 got 401",
  "raw_log_ref": "data/logs/myrepo_integration.log",
  "command": "pytest tests/test_auth.py",
  "test_id": "integration",
  "attempts": 0,
  "escalation_summary": null,
  "proposed_fix": null,
  "created_at": "2025-01-15 10:32:01.482910",
  "resolved_at": null,
  "dispensed_at": "2025-01-15 11:04:22.019847"
}
Response — no pending tickets
{}
Example
curl "http://localhost:8787/errors/top?repo=myrepo"

GET /errors/all

Returns all open tickets for a given repo. Unlike /errors/top, this endpoint does not claim any ticket or change any status — it is a read-only snapshot of the queue. Query parameters
ParameterTypeRequiredDescription
repostring✅ YesThe repo name to list tickets for
Response
{
  "tickets": [
    {
      "id": "a3f9c1b2-4e8d-4f2a-b1c3-9d7e6f0a2b4c",
      "repo": "myrepo",
      "priority": "high",
      "status": "in_progress",
      "error_summary": "AssertionError in test_auth.py::test_login — expected 200 got 401",
      "raw_log_ref": "data/logs/myrepo_integration.log",
      "command": "pytest tests/test_auth.py",
      "test_id": "integration",
      "attempts": 0,
      "escalation_summary": null,
      "proposed_fix": null,
      "created_at": "2025-01-15 10:32:01.482910",
      "resolved_at": null,
      "dispensed_at": "2025-01-15 11:04:22.019847"
    }
  ]
}
Example
curl "http://localhost:8787/errors/all?repo=myrepo"

POST /errors/resolve

Marks a ticket as done. The ticket’s resolved_at timestamp is set by the backend. Call this after your agent or developer has successfully addressed the underlying failure. Request body
{"id": "<ticket_id>"}
FieldTypeRequiredDescription
idstring✅ YesThe UUID of the ticket to resolve
Response
{"status": "resolved"}
Example
curl -X POST http://localhost:8787/errors/resolve \
  -H "Content-Type: application/json" \
  -d '{"id": "a3f9c1b2-4e8d-4f2a-b1c3-9d7e6f0a2b4c"}'

POST /errors/fail

Marks a ticket as failed. Use this when an attempt to fix the issue did not succeed and you want to record the outcome without escalating to human review. Failed tickets are removed by issueloop cleanup. Request body
{"id": "<ticket_id>"}
FieldTypeRequiredDescription
idstring✅ YesThe UUID of the ticket to mark as failed
Response
{"status": "failed"}
Example
curl -X POST http://localhost:8787/errors/fail \
  -H "Content-Type: application/json" \
  -d '{"id": "a3f9c1b2-4e8d-4f2a-b1c3-9d7e6f0a2b4c"}'

Error responses

The server returns a JSON error body for any malformed request or unknown path. 400 Bad Request — returned when the POST body is not valid JSON, or when /errors/resolve or /errors/fail is called without an id field in the body:
{"error": "invalid JSON body"}
{"error": "expected JSON body with an 'id' field"}
404 Not Found — returned for any path not listed in this reference:
{"error": "not found"}

Build docs developers (and LLMs) love