Custom Image Recognition API

Now bigger and better at Ximilar

Explore use cases

Ximilar - Visual AI for Business

Things change.

Ximilar, industry leader in Visual AI an Search, acquired Vize, made it better, faster, and added business-critical features. Go to Ximilar Homepage to discover our services.


Powerful artificial intelligence. Made easy.

High accuracy

Use deep learning algorithms with the highest accuracy on the market.

Simple setup and use

Implement cutting-edge vision automation faster with no development costs.

Recognize anything

Train custom neural network to recognize your specific images.

Training interface

Create powerful and custom image recognizers in intuitive web interface.


Scale up easily with no infrastructure costs.

Always improving

We always improve the underlying machine learning algorithms so you are up-to-date.

Contact us

Intuitive interface

User interface to create, manage and deploy your custom image recognition models. No machine learning or coding knowledge required.

See the app

Setup in 5 minutes



Define your categories and upload sample images.



Custom neural network is trained. Preview the results right away.



Send us an image and recognize it with your custom neural network.

Use cases

Explore where custom image recognition API helps across industries.

Developers first

We take care of the complexity behind and wrap it in a few lines of code.

see documentation

curl -H "Content-Type: application/json" -H "authorization: Token __API_TOKEN__" -d '{"task_id": "__TASK_ID__", "records": [ {"_url": "__URL__" }, {"_base64": "__BASE_64_"} ] }'import requests
import json
import base64

url = ''

with open("__IMAGE_PATH__", "rb") as image_file:
    encoded_string = base64.b64encode("utf-8")

records = [{'_base64': encoded_string}, {'_url': '__URL_PATH__'}]
data = {'task_id': '__TASK_ID__', 'records': records}

headers = {
    'authorization': "Token __API_TOKEN__",
    'content-type': "application/json"

response = requests.request("POST", url, data=json.dumps(data), headers=headers)

$curl_handle = curl_init("");

$data = [
  'task_id' => '__TASK_ID__',
  'records' => [
    [ '_base64' => base64_encode(file_get_contents($filename)) ],
    [ '_url' => '__URL_PATH__']

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 35); // timeout
curl_setopt($curl_handle, CURLOPT_TIMEOUT, 35); //timeout in seconds

curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/json",
  "Authorization: Token __API_TOKEN__",
  "cache-control: no-cache",)

$response = curl_exec($curl_handle);
$error_response = curl_error($curl_handle);

// This is very important to catch error
if ($error_response != "") {
  echo("Something happen during the request\n");
  return null;
curl_close ($curl_handle);

$data = json_decode($response, TRUE);
var request = require("request");

var options = {
  method: 'POST',
  url: '',
  headers: {
    authorization: 'Token __API_TOKEN__',
    'content-type': 'application/json'
  body: {
    records: [
        _url: '__URL_PATH__'
    task_id: '__TASK_ID__'
  json: true

request(options, function (error, response, body) {
  if (error) throw new Error(error);

// Use open-source library.

HttpResponse response ="")
.header("Authorization", "Token __API_TOKEN__")
.header("content-type", "application/json")
.body("{\"records\":[{\"_url\":\"__URL_PATH__\"}],\"task_id\": \"__TASK_ID__\"}")
.asString();// Use open-source library.

var client = new RestClient("");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Token __API_TOKEN__");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"records\":[{\"_url\":\"__URL_PATH__\"}],\"task_id\": \"__TASK_ID__\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
require 'uri'
require 'net/http'
require 'openssl'

url = URI("")

http =, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request =
request["authorization"] = 'Token __API_TOKEN__'
request["content-type"] = 'application/json'
request.body = "{\"records\":[{\"_url\":\"__URL_PATH__\"}],\"task_id\": \"__TASK_ID__\"}"

response = http.request(request)
puts response.read_body

Need more? We can assist you.

If you can't train your custom recognition and you want to use prepared recognition models, need visual search in your collection of images or simply anything else in the area of computer vision & machine learning — we are here to help.

Vize is just the beginning. Ximilar handles the universe of possibilites.

Visit Ximilar