# Code Samples

To facilitate smooth integration, Rekor CarCheck® offers a range of code samples in different programming languages. These samples serve as practical guides, demonstrating how to interact with the API effectively. Whether you are working with [Bash](#bash), [Python](#python), [C](#c)[#](#c), [Java](#java), or [JavaScript](#javascript), you will find detailed examples below to help you understand the implementation process.

## Bash

```bash
curl -X POST -F image=@/car1.jpg 'https://api.openalpr.com/v3/recognize?recognize_vehicle=1&country=us&secret_key=sk_DEMODEMODEMODEMODEMODEMO'
```

## Python

```python
#!/usr/bin/python

import requests
import base64
import json

# Sample image file is available at http://plates.openalpr.com/ea7the.jpg
IMAGE_PATH = '/tmp/sample.jpg'
SECRET_KEY = 'sk_DEMODEMODEMODEMODEMODEMO'

with open(IMAGE_PATH, 'rb') as image_file:
    img_base64 = base64.b64encode(image_file.read())

url = 'https://api.openalpr.com/v3/recognize_bytes?recognize_vehicle=1&country=us&secret_key=%s' % (SECRET_KEY)
r = requests.post(url, data = img_base64)

print(json.dumps(r.json(), indent=2))
```

## C\#

```c
using System;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.IO;

namespace ConsoleApplicationTest
{
    class Program
    {
        private static readonly HttpClient client = new HttpClient();

        public static async Task<string> ProcessImage(string image_path)
        {
            string SECRET_KEY = "sk_DEMODEMODEMODEMODEMODEMO";

            Byte[] bytes = File.ReadAllBytes(image_path);
            string imagebase64 = Convert.ToBase64String(bytes);

            var content = new StringContent(imagebase64);

            var response = await client.PostAsync("https://api.openalpr.com/v3/recognize_bytes?recognize_vehicle=1&country=us&secret_key=" + SECRET_KEY, content).ConfigureAwait(false);

            var buffer = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
            var byteArray = buffer.ToArray();
            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            return responseString;
        }

        static void Main(string[] args)
        {
            Task<string> recognizeTask = Task.Run(() => ProcessImage(@"C:\Temp\car1.jpg"));
            recognizeTask.Wait();
            string task_result = recognizeTask.Result;

            System.Console.WriteLine(task_result);
        }
    }
}
```

## Java

```java
import java.net.;
import java.io.;
import java.nio.file.*;
import java.util.Base64;

class TestOpenALPR {

    public static void main(String[] args)
    {
        try
        {
            String secret_key = "sk_DEMODEMODEMODEMODEMODEMO";

            // Read image file to byte array
            Path path = Paths.get("/storage/projects/alpr/samples/testing/car1.jpg");
            byte[] data = Files.readAllBytes(path);

            // Encode file bytes to base64
            byte[] encoded = Base64.getEncoder().encode(data);

            // Setup the HTTPS connection to api.openalpr.com
            URL url = new URL("https://api.openalpr.com/v3/recognize_bytes?recognize_vehicle=1&country=us&secret_key=" + secret_key);
            URLConnection con = url.openConnection();
            HttpURLConnection http = (HttpURLConnection)con;
            http.setRequestMethod("POST"); // PUT is another valid option
            http.setFixedLengthStreamingMode(encoded.length);
            http.setDoOutput(true);

            // Send our Base64 content over the stream
            try(OutputStream os = http.getOutputStream()) {
                os.write(encoded);
            }

            int status_code = http.getResponseCode();
            if (status_code == 200)
            {
                // Read the response
                BufferedReader in = new BufferedReader(new InputStreamReader(
                                        http.getInputStream()));
                String json_content = "";
                String inputLine;
                while ((inputLine = in.readLine()) != null)
                    json_content += inputLine;
                in.close();

                System.out.println(json_content);
            }
            else
            {
                System.out.println("Got non-200 response: " + status_code);
            }

        }
        catch (MalformedURLException e)
        {
            System.out.println("Bad URL");
        }
        catch (IOException e)
        {
            System.out.println("Failed to open connection");
        }

    }
}
```

## JavaScript

```javascript
<html>
    <title>
        CarCheck API Demo
    </title>

    <head>
        <script>
        // Open connection to api.openalpr.com
        var secret_key = "sk_DEMODEMODEMODEMODEMODEMO";
        var url = "https://api.openalpr.com/v3/recognize_bytes?recognize_vehicle=1&country=us&secret_key=" + secret_key;
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url);

        // Send POST data and display response
        xhr.send("base64_string");  // Replace with base64 string of an actual image
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4) {
                document.getElementById("response").innerHTML = xhr.responseText;
            } else {
                document.getElementById("response").innerHTML = "Waiting on response...";
            }
        }
        </script>
    </head>

    <body>
        JSON response: <p id="response"></p><br>
    </body>
</html>
```

## Results

Upon successful use of the API, the JSON response will provide detailed information in a structured format. The response includes key data points such as license plate number, vehicle make and model, color, and additional relevant information, ensuring a comprehensive overview of the recognized vehicle.

```json
{
   "data_type" : "alpr_results",
   "epoch_time" : 1592849838217,
   "img_width" : 600,
   "img_height" : 600,
   "error" : false,
   "version" : 3,
   "credit_cost" : 1,
   "uuid" : "",
   "processing_time" : {
      "plates" : 85.0386276245117,
      "vehicles" : 76.9439999994574,
      "total" : 830.30300000064
   },
   "regions_of_interest" : [
      {
         "y" : 0,
         "height" : 600,
         "x" : 0,
         "width" : 600
      }
   ],
   "credits_monthly_used" : 5001,
   "credits_monthly_total" : 100000,
   "results" : [
      {
         "requested_topn" : 10,
         "matches_template" : 1,
         "region_confidence" : 99,
         "plate_index" : 0,
         "plate" : "627WWI",
         "region" : "us-wa",
         "confidence" : 94.0910949707031,
         "coordinates" : [
            {
               "x" : 238,
               "y" : 358
            },
            {
               "x" : 357,
               "y" : 358
            },
            {
               "x" : 357,
               "y" : 408
            },
            {
               "x" : 239,
               "y" : 409
            }
         ],
         "candidates" : [
            {
               "matches_template" : 1,
               "plate" : "627WWI",
               "confidence" : 94.0910949707031
            },
            {
               "matches_template" : 0,
               "plate" : "627WW1",
               "confidence" : 74.0910949707031
            }
         ],
         "vehicle_region" : {
            "y" : 96,
            "x" : 3,
            "width" : 589,
            "height" : 483
         },
         "processing_time_ms" : 8.83281803131104,
         "vehicle_detected" : true,
         "vehicle" : {
            "make" : [
               {
                  "name" : "daihatsu",
                  "confidence" : 67.1475448608398
               },
               {
                  "name" : "mini",
                  "confidence" : 18.6626739501953
               },
               {
                  "name" : "fiat",
                  "confidence" : 8.87434959411621
               },
               {
                  "confidence" : 1.25781571865082,
                  "name" : "scion"
               },
               {
                  "confidence" : 1.04451608657837,
                  "name" : "toyota"
               }
            ],
            "year" : [
               {
                  "name" : "2005-2009",
                  "confidence" : 54.0047645568848
               },
               {
                  "confidence" : 39.7950668334961,
                  "name" : "2000-2004"
               },
               {
                  "name" : "2010-2014",
                  "confidence" : 5.38613367080688
               },
               {
                  "name" : "1995-1999",
                  "confidence" : 0.628315031528473
               },
               {
                  "confidence" : 0.16707843542099,
                  "name" : "1990-1994"
               }
            ],
            "color" : [
               {
                  "confidence" : 77.7851638793945,
                  "name" : "silver-gray"
               },
               {
                  "confidence" : 9.67624187469482,
                  "name" : "blue"
               },
               {
                  "name" : "black",
                  "confidence" : 7.02981376647949
               },
               {
                  "name" : "green",
                  "confidence" : 2.66030049324036
               },
               {
                  "name" : "gold-beige",
                  "confidence" : 1.42329037189484
               }
            ],
            "orientation" : [
               {
                  "name" : "180",
                  "confidence" : 99.9426956176758
               },
               {
                  "name" : "225",
                  "confidence" : 0.0323438383638859
               },
               {
                  "name" : "135",
                  "confidence" : 0.0129895266145468
               },
               {
                  "name" : "45",
                  "confidence" : 0.00725177442654967
               },
               {
                  "confidence" : 0.00194440386258066,
                  "name" : "90"
               }
            ],
            "body_type" : [
               {
                  "confidence" : 99.8512573242188,
                  "name" : "sedan-compact"
               },
               {
                  "name" : "tractor-trailer",
                  "confidence" : 0.0433907173573971
               },
               {
                  "name" : "sedan-sports",
                  "confidence" : 0.0432351566851139
               },
               {
                  "confidence" : 0.0218438617885113,
                  "name" : "suv-crossover"
               },
               {
                  "confidence" : 0.0212091449648142,
                  "name" : "sedan-wagon"
               }
            ],
            "make_model" : [
               {
                  "name" : "mini_cooper-s",
                  "confidence" : 35.001880645752
               },
               {
                  "confidence" : 23.0991153717041,
                  "name" : "mini_cooper"
               },
               {
                  "confidence" : 5.29244709014893,
                  "name" : "daihatsu_sirion"
               },
               {
                  "name" : "mini_hatch",
                  "confidence" : 4.69152307510376
               },
               {
                  "confidence" : 4.35747337341309,
                  "name" : "daihatsu_tanto"
               }
            ]
         }
      }
   ],
   "vehicles" : [
      {
         "x" : 3,
         "y" : 96,
         "width" : 589,
         "height" : 483,
         "details" : {
            "orientation" : [
               {
                  "name" : "180",
                  "confidence" : 99.9426956176758
               },
               {
                  "name" : "225",
                  "confidence" : 0.0323438383638859
               },
               {
                  "name" : "135",
                  "confidence" : 0.0129895266145468
               },
               {
                  "confidence" : 0.00725177442654967,
                  "name" : "45"
               },
               {
                  "name" : "90",
                  "confidence" : 0.00194440386258066
               }
            ],
            "make" : [
               {
                  "name" : "daihatsu",
                  "confidence" : 67.1475448608398
               },
               {
                  "name" : "mini",
                  "confidence" : 18.6626739501953
               },
               {
                  "confidence" : 8.87434959411621,
                  "name" : "fiat"
               },
               {
                  "confidence" : 1.25781571865082,
                  "name" : "scion"
               },
               {
                  "confidence" : 1.04451608657837,
                  "name" : "toyota"
               }
            ],
            "color" : [
               {
                  "name" : "silver-gray",
                  "confidence" : 77.7851638793945
               },
               {
                  "name" : "blue",
                  "confidence" : 9.67624187469482
               },
               {
                  "name" : "black",
                  "confidence" : 7.02981376647949
               },
               {
                  "confidence" : 2.66030049324036,
                  "name" : "green"
               },
               {
                  "confidence" : 1.42329037189484,
                  "name" : "gold-beige"
               }
            ],
            "year" : [
               {
                  "name" : "2005-2009",
                  "confidence" : 54.0047645568848
               },
               {
                  "name" : "2000-2004",
                  "confidence" : 39.7950668334961
               },
               {
                  "name" : "2010-2014",
                  "confidence" : 5.38613367080688
               },
               {
                  "name" : "1995-1999",
                  "confidence" : 0.628315031528473
               },
               {
                  "confidence" : 0.16707843542099,
                  "name" : "1990-1994"
               }
            ],
            "make_model" : [
               {
                  "confidence" : 35.001880645752,
                  "name" : "mini_cooper-s"
               },
               {
                  "confidence" : 23.0991153717041,
                  "name" : "mini_cooper"
               },
               {
                  "name" : "daihatsu_sirion",
                  "confidence" : 5.29244709014893
               },
               {
                  "confidence" : 4.69152307510376,
                  "name" : "mini_hatch"
               },
               {
                  "name" : "daihatsu_tanto",
                  "confidence" : 4.35747337341309
               }
            ],
            "body_type" : [
               {
                  "confidence" : 99.8512573242188,
                  "name" : "sedan-compact"
               },
               {
                  "confidence" : 0.0433907173573971,
                  "name" : "tractor-trailer"
               },
               {
                  "confidence" : 0.0432351566851139,
                  "name" : "sedan-sports"
               },
               {
                  "confidence" : 0.0218438617885113,
                  "name" : "suv-crossover"
               },
               {
                  "confidence" : 0.0212091449648142,
                  "name" : "sedan-wagon"
               }
            ]
         }
      }
   ]
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rekor.ai/developers/carcheck/code-samples.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
