Skip to content

Examples [WORK IN PROGRESS]

In this page we provide different examples using our API. The examples are provided in different programming languages:

  • Python
  • NodeJS
  • PHP
  • Go
  • Bash (using cURL)

What we need

The first thing is having the URL were you can send the images:

https://autoderm.firstderm.com/v1/query

The other thing you need is having an API key. In order to get one you can contact us, get a test key or send us and email.

To continue with the examples, we will say our API key is:

Pk566ZkEQRLr9vNwo2Gkr1uL6pr-4VjZUkvdJHAdFsA

Warning

Keep your API keys safe. Do not put your keys inside any file that is public or even in version control (if there's a risk of accidentally making the repository public).

You can set the key as an environment variable and read it when your app starts.

A good starting point is following the 12 factor app rules.

Even though it is not necessay, you should take into account the other two parameters we use:

  • language
  • model

The language parameter is a two-letter ISO 639-1 code which selects the language of the returned content. The default is "en" (english).

The model parameter is the version of the model you want to use. The documentation of available models is in the models section.

You can see all the available parameters in our testing page.

Query the API

We will use:

import requests
import os

API_URL = "https://autoderm.firstderm.com/v1/query"

# set sensitive data as environment varibles
API_KEY = os.getenv("API_KEY")

# open the test image and read the bytes
with open("skin.jpg", "rb") as f:
    image_contents = f.read()

# send the query
response = requests.post(
    API_URL,
    headers={"Api-Key": API_KEY},
    files={"file": image_contents},
    params={"language": "en", "model": "autoderm_v2_0"},
)

# get the JSON data returned
data = response.json()

print(data)

# get only the predictions
predictions = data["predictions"]

print(predictions)

# This script works as it is shown here:
# I order to run the script:
# API_KEY=Pk566ZkEQRLr9vNwo2Gkr1uL6pr-4VjZUkvdJHAdFsA python3 python_requests.py
const FormData = require('form-data');
const axios = require('axios');
const fs = require('fs');

const apiUrl = "https://autoderm.firstderm.com/v1/query"

// set the API key as an environment variable
const apiKey = process.env.API_KEY

const formData = new FormData();
const imageContents = fs.createReadStream('./skin.jpg')
formData.append('file', imageContents);
const formHeaders = formData.getHeaders()

const res = axios({
    method: "POST", url: apiUrl, data: formData,
    // You need to use `getHeaders()` in Node.js because Axios doesn't
    // automatically set the multipart form boundary in Node.
    headers: {
        // ...requestHeaders
        ...formHeaders,
        "Api-Key": apiKey
    },
}).then(function (response) {
    // handle success
    // print the full response data
    console.log(response);

    // print only the results
    console.log(response.data);
})
    .catch(function (response) {
        // handle error
        console.log(response);
    });;


// This script works as it is shown here:
// I order to run the script:
// API_KEY=Pk566ZkEQRLr9vNwo2Gkr1uL6pr-4VjZUkvdJHAdFsA node node_request.js
<?php
// work in progress

$client = new \GuzzleHttp\Client();
$request = $client->post( $url, [

// ...
// work in progress
?>
// work in progress

package main

import (
    "bytes"
    "fmt"
    "io"
    "io/ioutil"
    "mime/multipart"
    "net/http"
    "os"
)

// work in progress
curl -X POST "https://autoderm.firstderm.com/v1/query?model=autoderm_v2_0&language=en" -H  "accept: application/json" -H  "Api-Key: Pk566ZkEQRLr9vNwo2Gkr1uL6pr-4VjZUkvdJHAdFsA" -H  "Content-Type: multipart/form-data" -F "file=@skin.jpg;type=image/jpeg"
import httpx
import asyncio
import os

API_URL = "https://autoderm.firstderm.com/v1/query"

# set sensitive data as environment varibles
API_KEY = os.getenv("API_KEY")

# create an async client and set the timeout a bit higher than the default
client = httpx.AsyncClient(timeout=10)


async def main():

    # send the query
    response = await client.post(
        API_URL,
        headers={"Api-Key": API_KEY},
        # We are opening the image here too.
        files={"file": ("image.jpg", open("skin.jpg", "rb"), "multipart/form-data")},
        params={"language": "en", "model": "autoderm_v2_0"},
    )

    # get the JSON data returned
    data = response.json()

    print(data)

    # get only the predictions
    predictions = data["predictions"]

    print(predictions)

    await client.aclose()


if __name__ == "__main__":
    asyncio.run(main())

# This script works as it is shown here:
# I order to run the script:
# API_KEY=Pk566ZkEQRLr9vNwo2Gkr1uL6pr-4VjZUkvdJHAdFsA python3 python_httpx.py