API Reference

One request. Structured vehicle data.

A single GET request turns an image into plate text, make & model, and bounding boxes. No SDK, no OAuth. Start with the quickstart below.

REST · JSON 5 region models No SDK required
Quickstart

Live in three steps

No SDK to install and no heavy onboarding. If you can make an HTTP request, you can ship.

1

Get your free API key

Sign up with your email, verify the one-time code, and your key is ready instantly.

2

Send an image URL

Call the ObjectDetection endpoint with an image URL, your key and a region. No SDK required.

3

Read the JSON

Get back the plate text, make & model, bounding boxes and confidence scores. Ship it.

GET http://84.200.6.42:5000/ObjectDetection

Authenticate with a single Api_key query parameter — no headers or OAuth. Set GA to your region: eu, me, africa, asia or us.

Samples show a placeholder key. Sign in to auto-fill your real key, or create a free account.
Request · cURL
curl -X GET "http://84.200.6.42:5000/ObjectDetection?Image_url=https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg&Api_key=YOUR_API_KEY&GA=eu&Detect_license_plate=true&Read_license_plate=true&Detect_make_and_model=true&Detect_vehicle_position=true&Include_additional_info=true&Input_size=416" \
  -H "accept: */*"
Request · Python
import requests

resp = requests.get(
    "http://84.200.6.42:5000/ObjectDetection",
    params={
        "Image_url": "https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg",
        "Api_key": "YOUR_API_KEY",
        "GA": "eu",
        "Detect_license_plate": "true",
        "Read_license_plate": "true",
        "Detect_make_and_model": "true",
        "Detect_vehicle_position": "true",
        "Include_additional_info": "true",
        "Input_size": "416",
    },
)

result = resp.json()[0]
print(result["lpr"], "-", result["vmm"], "(", result["country"], ")")
Request · JavaScript
const params = new URLSearchParams({
  Image_url: "https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg",
  Api_key: "YOUR_API_KEY",
  GA: "eu",
  Detect_license_plate: "true",
  Read_license_plate: "true",
  Detect_make_and_model: "true",
  Detect_vehicle_position: "true",
  Include_additional_info: "true",
  Input_size: "416",
});

const res = await fetch(`http://84.200.6.42:5000/ObjectDetection?${params}`);
const [result] = await res.json();
console.log(result.lpr, result.vmm, result.country);
Request · C#
using var http = new HttpClient();

var url = "http://84.200.6.42:5000/ObjectDetection"
    + "?Image_url=https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg"
    + "&Api_key=YOUR_API_KEY"
    + "&GA=eu"
    + "&Detect_license_plate=true&Read_license_plate=true"
    + "&Detect_make_and_model=true&Detect_vehicle_position=true"
    + "&Include_additional_info=true&Input_size=416";

var json = await http.GetStringAsync(url);
Console.WriteLine(json);
Request · PHP
<?php
$query = http_build_query([
  "Image_url" => "https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg",
  "Api_key"   => "YOUR_API_KEY",
  "GA"        => "eu",
  "Detect_license_plate"    => "true",
  "Read_license_plate"      => "true",
  "Detect_make_and_model"   => "true",
  "Detect_vehicle_position" => "true",
  "Include_additional_info" => "true",
  "Input_size"              => "416",
]);

$response = file_get_contents("http://84.200.6.42:5000/ObjectDetection?" . $query);
$data = json_decode($response, true);
echo $data[0]["lpr"] . " - " . $data[0]["vmm"];
Request · Go
package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
)

func main() {
    q := url.Values{}
    q.Set("Image_url", "https://www.focus2move.com/wp-content/uploads/2020/10/Renault-Captur-2020-1024-19.jpg")
    q.Set("Api_key", "YOUR_API_KEY")
    q.Set("GA", "eu")
    q.Set("Detect_license_plate", "true")
    q.Set("Read_license_plate", "true")
    q.Set("Detect_make_and_model", "true")
    q.Set("Detect_vehicle_position", "true")
    q.Set("Include_additional_info", "true")
    q.Set("Input_size", "416")

    resp, _ := http.Get("http://84.200.6.42:5000/ObjectDetection?" + q.Encode())
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
Keep keys server-side.

The key travels in the URL, so call the API from your own backend. Never embed it in client-side JavaScript, mobile bundles or a public repo. If a key leaks, rotate it from your dashboard.

Response

What you get back

The body is a JSON array — one object per detected vehicle. Any *Error field that is null means that stage succeeded.

Response
[
  {
    "platePosition": { "x": 242, "y": 438, "width": 142, "height": 45 },
    "platePositionConfidence": 0.853954,
    "lpr": "W571KA",
    "lprConfidence": [0.9943, 0.9998, 0.9999, 0.9988, 0.9987, 0.9915],
    "country": "France",
    "region": "F(France)",
    "vehiclePosition": { "x": 209, "y": 141, "width": 686, "height": 428 },
    "vmm": "Renault ,Captur",
    "vehicleCategory": "Car",
    "vehiclePositionConfidence": 0.938929,
    "vmmConfidence": 0.5,
    "operationTimeMS": 2873,
    "plateFinderError": null,
    "plateRecognizerError": null,
    "carFinderError": null,
    "vmmError": null
  }
]
All response fields11 fields
FieldTypeDescription
lprstringThe recognized license-plate text.
lprConfidencenumber[]Per-character confidence (0–1) for each plate character.
vmmstringVehicle make & model, e.g. "Renault ,Captur".
vehicleCategorystringHigh-level class such as Car, Truck or Bus.
countrystringResolved country of the plate.
regionstringCountry/region code and label, e.g. "F(France)".
platePositionobjectPlate bounding box: { x, y, width, height } in pixels.
vehiclePositionobjectVehicle bounding box: { x, y, width, height } in pixels.
platePositionConfidencenumberConfidence (0–1) of the plate localization.
vmmConfidencenumberConfidence (0–1) of the make & model prediction.
operationTimeMSnumberTotal inference time for the image, in milliseconds.
Reference

Full reference

Everything else, tucked away until you need it. Expand a section to dig in.

All request parameters9 parameters

Three are mandatory (Image_url, Api_key, GA). The rest are optional feature toggles that default to true.

ParameterTypeRequiredDescription
Image_url string Required Publicly reachable URL of the image to analyse.
Api_key string Required Your API key from the dashboard.
GA enum Required Geographic area for the plate model: eu, me, africa, asia, us.
Detect_license_plate bool No Locate the plate region. Default true.
Read_license_plate bool No OCR the plate characters. Default true.
Detect_make_and_model bool No Identify vehicle make & model (VMM). Default true.
Detect_vehicle_position bool No Return the vehicle bounding box. Default true.
Include_additional_info bool No Include country/region and extra metadata. Default true.
Input_size int No Inference resolution (e.g. 416). Larger = more accurate, slower.
Region codes (GA)5 regions

Plate formats vary by part of the world, so the engine ships a model per region. Pass one as the mandatory GA parameter for the best local accuracy.

eu Europeme Middle Eastafrica Africaasia Asiaus United States
Stage error fields4 fields

Detection is a pipeline. Instead of failing the whole request, each stage reports its own error field — null means that stage succeeded.

FieldMeaning
plateFinderError The plate-detection stage failed (e.g. no plate found or image unreadable).
plateRecognizerError The plate-OCR stage failed to read characters.
carFinderError The vehicle-detection stage failed to locate a vehicle.
vmmError The make & model recognition stage failed.
Image upload

No public URL? Upload one.

Detection needs a publicly reachable Image_url. If your image lives on a local disk or behind auth, use the free, keyless upload helper: POST a file and get back a public URL you can feed straight into detection.

POST https://intertraff.ai/api/upload
Upload examples & detailscURL · Python · JS
  • Accepts JPG, PNG and WebP as multipart form-data.
  • Returns { "url": "...", "expiresInHours": 24 }. The URL is valid for 24 hours.
  • No API key required, so it is safe to call from a lightweight uploader.
Upload · cURL
curl -X POST "https://intertraff.ai/api/upload" \
  -F "file=@/path/to/car.jpg"

# => { "url": "https://intertraff.ai/uploads/ab12cd34.jpg", "expiresInHours": 24 }
Upload · Python
import requests

with open("car.jpg", "rb") as f:
    r = requests.post("https://intertraff.ai/api/upload", files={"file": f})

image_url = r.json()["url"]   # feed this straight into ObjectDetection
print(image_url)
Upload · JavaScript
const form = new FormData();
form.append("file", fileInput.files[0]);

const res = await fetch("https://intertraff.ai/api/upload", { method: "POST", body: form });
const { url } = await res.json();   // public URL, valid for 24h
console.log(url);
Stuck on something? Contact support and a real engineer will get back to you.
Something went wrong. Reload