Skip to main content

Welcome to Solvice

The Solvice Platform provides enterprise-grade optimization solvers for complex operational challenges. Our API-first approach delivers consistent, scalable solutions across five specialized optimization domains.
Solvice Dashboard showing optimization job monitoring and analytics

Solvice Dashboard - Monitor and manage your optimization jobs in real-time

Platform Architecture

1

Submit optimization request

Send your problem data to the appropriate solver endpoint. The API immediately returns a job ID for tracking.
POST /v2/{solver}/solve
2

Monitor job progress

Poll the status endpoint to track optimization progress. Jobs transition through states: QUEUEDSOLVINGSOLVED.
GET /v2/{solver}/jobs/{job_id}/status
3

Retrieve optimized solution

Once solved, fetch your optimized solution with detailed assignments and metrics.
GET /v2/{solver}/jobs/{job_id}/solution
4

Understand decisions

Get explanations for constraint violations and optimization trade-offs.
GET /v2/{solver}/jobs/{job_id}/explanation

Unified API Design

Every Solvice solver follows consistent REST patterns, making integration straightforward across your entire optimization stack.

Core Endpoints

  • Action Endpoints
  • Information Endpoints

Solve

Submit optimization requests for processing. This is the primary endpoint for all solvers.
request
object
required
Solver-specific request object containing your problem definition
jobId
string
required
Unique identifier for tracking your optimization job
status
string
required
Initial job status (typically QUEUED)

Evaluate

Assess the quality of existing solutions without optimization.
Available for VRP solver only

Suggest

Get intelligent suggestions for single assignment improvements.
Available for VRP solver only

Authentication

All API requests require authentication via API key. See our comprehensive authentication guide for detailed setup and security best practices.

Asynchronous Processing

Solvice uses asynchronous processing to handle complex optimizations efficiently.
Optimization problems can take seconds to hours depending on complexity. Asynchronous processing ensures:
  • Your application remains responsive
  • You can submit multiple jobs in parallel
  • Network timeouts don’t interrupt long-running optimizations
  • You can implement progress tracking in your UI
async function waitForSolution(jobId) {
  const maxAttempts = 60;
  const pollInterval = 5000; // 5 seconds
  
  for (let i = 0; i < maxAttempts; i++) {
    const status = await checkJobStatus(jobId);
    
    if (status === 'SOLVED') {
      return await fetchSolution(jobId);
    } else if (status === 'ERROR') {
      throw new Error('Optimization failed');
    }
    
    await sleep(pollInterval);
  }
  
  throw new Error('Optimization timeout');
}
For low-latency requirements, VRP solver offers synchronous endpoints:
POST /v2/vrp/sync/solve
POST /v2/vrp/sync/evaluate
POST /v2/vrp/sync/suggest
Synchronous endpoints have stricter size and time limits

Solver Capabilities

Each solver is optimized for specific problem domains while maintaining API consistency.
  • Routing (VRP)
  • Clustering (CLUST)
Vehicle Routing Problem solver optimizes multi-stop routes considering:
  • Vehicle capacities and time windows
  • Driver skills and availability
  • Real-world road distances via OSM integration
  • Dynamic pickup/delivery constraints

VRP Documentation

Explore comprehensive VRP features and examples

Quick Start Example

Here’s a complete example using the VRP solver:
1

Prepare your request

request.json
{
  "vehicles": [{
    "id": "vehicle-1",
    "profile": "driving",
    "startLocation": {"lat": 51.0543, "lng": 3.7174},
    "capacity": [100]
  }],
  "jobs": [{
    "id": "delivery-1", 
    "location": {"lat": 51.0500, "lng": 3.7300},
    "duration": 300,
    "demand": [10]
  }],
  "objectives": [{
    "type": "min-max",
    "value": "duration"
  }]
}
2

Submit for optimization

curl -X POST 'https://api.solvice.io/v2/vrp/solve' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d @request.json
Response:
{
  "jobId": "job_abc123",
  "status": "QUEUED"
}
3

Check status

curl 'https://api.solvice.io/v2/vrp/jobs/job_abc123/status' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
  "status": "SOLVED",
  "progress": 100
}
4

Get your optimized solution

curl 'https://api.solvice.io/v2/vrp/jobs/job_abc123/solution' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Next Steps

I