Skip to main content
POST
Solve
Routing, allocation, packing and scheduling are supported.

Quote and job lifecycle

The first request returns HTTP 402 with a quoted price. Retry identical input with X-Quote-ID, payment and an Idempotency-Key; HTTP 202 returns a request_id to poll at GET /v1/requests/:id. Same key and input return the original job. SDKs (agent.solve, client.solve/asolve) handle quoting, payment and polling (420-second timeout); MCP, LangChain and GAME expose oneshot_solve, GAME with JSON-text blocks.

Routing

Minimise distance, time, or vehicles then distance over vehicles, stops and coordinates or ids-ordered square matrices. Optional demand, service times, windows and shifts constrain routes; every stop is served. Defaults: kilometres, minutes, 40 units/hour. Input:
Example result:

Allocation

Assign items (quantity default 1) to options (optional capacity) using pairs (per-unit cost/value). Optional: split, max_total_cost, min_share/max_share (if_used floors), required, forbidden. maximise_value may leave items unassigned; with shares or a budget, largest/smallest lot ratio ≤1,000,000 (bad_quantity before payment).

Packing

Size/capacity keys match dimensions. Quantities: default 1, maximum 1,000,000. bin minimises bins; knapsack maximises nonnegative values using one bin. incompatible pairs forbid sharing; equal IDs return contradictory_input before quoting. No geometric placement.
Result: two bins, status: "optimal", gap: 0; a knapsack solution adds left_out: [{id,count}]:

Schedule

Jobs carry integer duration, optional release, due, per-resource needs and weight; resources carry capacity, optional calendar windows and cost_per_unit_time; precedence makes after start lag after before ends. Times are integers in time_unit (default minutes); jobs fit one calendar window. Objectives: makespan; tardiness (weighted lateness past due, else a hard deadline); cost (weight × duration × held needs at their rate). Input and solution:

Status, checks and conflicts

Every field is present; routing bound/gap are null. Objectives are recomputed independently; without a solution, objective null, checks empty. checks[] (name, satisfied, worst_violation in input units, detail) all pass, or the job fails with internal_error. conflicts[] (infeasible only): constraints[] (family, ref, label) plus explanation, not necessarily minimal; meta.conflicts_complete reports completeness.

Limits

500 stops; integer time_limit_s 1–300, default 30; quantities finite, nonnegative, at most 1e12; at most 100,000 estimated variables:
Pricing size: allocation items × options; packing kinds × bins × dimensions; else the estimate. Unsupported numeric precision/magnitudes fail before payment. Unknown fields, duplicate/empty/unknown IDs, reversed/overlapping windows, malformed matrices, contradictory pairs and precedence cycles fail before payment: HTTP 400, error: "invalid_input", named code and message.