New to Claude Skills? Learn how to install them →

nvidia on GitHub

cuOpt Server API

OfficialFree

Deploy and interact with the cuOpt REST API easily.

by nvidia2.8k stars on nvidia/skills
2 views
Updated Aug 7, 2026
Get this skill

Free · Opens the source repo

What cuOpt Server API does

The cuOpt Server API skill provides a straightforward way to deploy and interact with NVIDIA's cuOpt REST server, which is designed for solving various optimization problems. This skill is particularly useful for developers and data scientists who need to implement routing, linear programming (LP), or mixed-integer linear programming (MILP) solutions in their applications. By leveraging this skill, users can quickly set up a server and access its capabilities through simple API calls.

To get started, users can deploy the server locally, via Docker, or in cloud environments. The skill includes detailed instructions on how to initiate the server and verify its health using a simple curl command. It also offers Python client examples that demonstrate how to format requests and handle responses, making it easier for users to integrate the API into their existing workflows.

The cuOpt Server API skill supports a variety of problem types, including routing, LP, and MILP, but does not support quadratic programming (QP). Users can specify the problem type when making requests and receive tailored solutions based on their input. The skill also outlines common pitfalls and validation errors, ensuring that users can troubleshoot effectively during implementation.

This skill is ideal for developers looking to incorporate optimization solutions into their applications without needing to delve into complex setup procedures. With clear examples and a focus on usability, the cuOpt Server API skill streamlines the process of deploying and utilizing the cuOpt REST server.

When to use it

Use this skill when you need to deploy the cuOpt server for routing, LP, or MILP problems and require a client for API interaction.

When not to use it

This skill is not suitable for users needing to solve quadratic programming (QP) problems, as it does not support that functionality.

What you can build with it

Local Deployment for Testing

Deploy the cuOpt server locally for quick testing and development of optimization solutions.

Integration with Python Applications

Use the provided Python client examples to integrate the cuOpt API into your existing Python applications.

Cloud Deployment for Scalability

Deploy the cuOpt server in a cloud environment to handle larger optimization tasks and multiple requests.

How to install cuOpt Server API

View source

1. Install with the skills CLI

npx skills add nvidia/skills/cuopt-server-api-python --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by nvidia

cuOpt Server — Deploy and client (Python/curl)

This skill covers starting the server and client examples (curl, Python). Server has no separate C API (clients can be any language).

Problem types supported

Problem typeSupported
Routing
LP
MILP
QP

Required questions

Ask these if not already clear:

  1. Problem type — Routing or LP/MILP? (QP not available via REST.)
  2. Deployment — Local, Docker, Kubernetes, or cloud?
  3. Client — Which language or tool will call the API (e.g. Python, curl, another service)?

Start server

# Development
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000

# Docker
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000 \
  nvidia/cuopt:latest-cuda12.9-py3.13

Verify

curl http://localhost:8000/cuopt/health

Workflow

  1. POST to /cuopt/request → get reqId
  2. Poll /cuopt/solution/{reqId} until solution ready
  3. Parse response

Python client (routing)

import requests, time
SERVER = "http://localhost:8000"
HEADERS = {"Content-Type": "application/json", "CLIENT-VERSION": "custom"}
payload = {
    "cost_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "travel_time_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "task_data": {"task_locations": [1, 2], "demand": [[10, 20]], "task_time_windows": [[0,100],[0,100]], "service_times": [5, 5]},
    "fleet_data": {"vehicle_locations": [[0, 0]], "capacities": [[50]], "vehicle_time_windows": [[0, 200]]},
    "solver_config": {"time_limit": 5}
}
r = requests.post(f"{SERVER}/cuopt/request", json=payload, headers=HEADERS)
req_id = r.json()["reqId"]
# Poll: GET /cuopt/solution/{req_id}

Terminology: REST vs Python API

Python APIREST
order_locationstask_locations
set_order_time_windows()task_time_windows
service_timesservice_times

Use travel_time_matrix_data (not transit_time_matrix_data). Capacities: [[50, 50]] not [[50], [50]].

Debugging (422 / payload)

Validation errors: Check field names against OpenAPI (/cuopt.yaml). Common mistakes: transit_time_matrix_datatravel_time_matrix_data; capacities per dimension [[50, 50]] not per vehicle [[50], [50]]. Capture reqId and response body for failed requests.

Runnable assets

Run from each asset directory (server must be running; scripts exit 0 if server unreachable). All use Python requests:

See assets/README.md for overview.

Escalate

For contribution or build-from-source, see the developer skill.

Frequently asked questions about cuOpt Server API

Similar skills