# Quick Start

We've developed a seamless transition process for the deployment of the product that will allow you to onboard without stress or delay. Our internal team will work with you to establish a specific timeline for complete deployment and will support you throughout the process.

## Get your API keys

Your API requests are authenticated using API key. Any request that doesn't include an API key will return an error.

You need to replace API\_KEY variable with your real API KEY from <https://deep-image.ai/app/my-profile/api>

You can get your API key in your profile after creating an account in [Deep-image.ai](https://deep-image.ai/).

## Python library

We also provide python library which simplifies usage of the deep-image.ai API. You can get it here: &#x20;

<https://github.com/deep-image-ai/python-client>

## Make your first request

The API comes in two flavours: form-data and json.

{% hint style="info" %}
When sending the image in json request, image can be put into url field and has to be base64 encoded.
{% endhint %}

Let's see example for denoising, deblurring, enhancing lighting and upscaling to width equals 2000px.

{% tabs %}
{% tab title="curl json" %}

```bash
curl --request POST \
     --url https://deep-image.ai/rest_api/process_result \
     --header 'content-type: application/json' \
     --header 'x-api-key: API_KEY' \
     --data '{
         "url": "https://deep-image.ai/api-example.png",
         "enhancements": ["denoise", "deblur", "light"],
         "width": 2000
      }'

curl --request POST
    --url https://deep-image.ai/rest_api/process_result \
    --header 'content-type: application/json' \
    --header 'x-api-key: API_KEY' \
    --data '{
        "url": "base64,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MgECABQAAACqAAAAaYcEAAEAAAC+AAAAAAAAAAgACAAIACwBAAABAAAALAEAAAEAAABHSU1QIDIuMTAuMzQAADIwMjQ6MDM6MTMgMTQ6MTY6MjMAAQABoAMAAQAAAAEAAAAAAAAAWE1QIPAMAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjdiYzdlY2IwLWMyODUtNDcxZS04NDVkLTA4NmI2MWU4MjEzNCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTkxNGYwNC1mZjg1LTQ4ZmMtOTkwYy02MTVlYzNhNjc1M2YiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4NGI1NjQ1Mi0wMTgwLTRjNDctOWMxYy04OWYyYjlkNDIyMDIiIGRjOkZvcm1hdD0iaW1hZ2Uvd2VicCIgR0lNUDpBUEk9IjIuMCIgR0lNUDpQbGF0Zm9ybT0iTGludXgiIEdJTVA6VGltZVN0YW1wPSIxNzEwMzM1NzkxODEwNDkyIiBHSU1QOlZlcnNpb249IjIuMTAuMzQiIHRpZmY6T3JpZW50YXRpb249IjEiIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0OjAzOjEzVDE0OjE2OjIzKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNDowMzoxM1QxNDoxNjoyMyswMTowMCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjY2MTk5YzNhLWM1YTItNGI1ZS04NGMyLTQ4NGU4NDI1NTk3YSIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiIHN0RXZ0OndoZW49IjIwMjQtMDMtMTNUMTQ6MTY6MzErMDE6MDAiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz4=",
        "enhancements": ["denoise", "deblur", "light"],
        "width": 2000
    }'
```

{% endtab %}

{% tab title="curl form-data" %}

```bash
curl --location \
     --request POST \
     --url https://deep-image.ai/rest_api/process_result \
     --header 'x-api-key: API_KEY' \
     --form 'file=@"LOCAL_FILE_PATH"' \
     --form parameters="{\"width\": 1000}"
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const fs = require('fs');
const path = require('path');
const axios = require('axios');
const https = require('https');
const http = require('http');

const API_KEY = 'REPLACE_WITH_YOUR_API_KEY';
const YOUR_LOCAL_FILE_TO_SEND = 'YOUR_LOCAL_FILE_TO_SEND'; // Replace with your file path

const headers = {
  'x-api-key': API_KEY,
};

const requestData = {
  enhancements: ['denoise', 'deblur', 'light'],
  url: 'https://deep-image.ai/api-example.png', // Replace with your image URL if different
  width: 2000,
};

const dataDumped = { parameters: JSON.stringify(requestData) };

const downloadFile = (url, outputPath) => {
  const file = fs.createWriteStream(outputPath);
  const protocol = url.startsWith('https') ? https : http;

  protocol.get(url, (response) => {
    response.pipe(file);
    file.on('finish', () => {
      file.close();
    });
  });
};

const processImage = async () => {
  try {
    const response = await axios.post('https://deep-image.ai/rest_api/process_result', dataDumped, {
      headers,
    });

    if (response.status === 200 && response.data.status === 'complete') {
      const resultUrl = response.data.result_url;
      const fileName = path.basename(resultUrl);
      downloadFile(resultUrl, fileName);
    } else if (['received', 'in_progress', 'not_started'].includes(response.data.status)) {
      let jobResponse = response.data;
      while (['received', 'in_progress', 'not_started'].includes(jobResponse.status)) {
        const jobStatusResponse = await axios.get(
          `https://deep-image.ai/rest_api/result/${jobResponse.job}`,
          { headers }
        );
        jobResponse = jobStatusResponse.data;
        if (['received', 'in_progress', 'not_started'].includes(jobResponse.status)) {
          await new Promise((resolve) => setTimeout(resolve, 1000)); // Wait for 1 second
        }
      }

      if (jobResponse.status === 'complete') {
        const resultUrl = jobResponse.result_url;
        const fileName = path.basename(resultUrl);
        downloadFile(resultUrl, fileName);
      }
    }
  } catch (error) {
    console.error('Error:', error);
  }
};

processImage();

```

{% endtab %}

{% tab title="Python" %}

```python
import time
import json
from pathlib import Path

from urllib.request import urlretrieve

# using requests library
import requests

API_KEY = REPLACE_WITH_YOUR_API_KEY

headers = {
    'x-api-key': API_KEY,
}

data = {
    "enhancements": ["denoise", "deblur", "light"],
    "width": 2000
}

data_dumped = {"parameters": json.dumps(data)}

with open(YOUR_LOCAL_FILE_TO_SEND, 'rb') as f:
    response = requests.post('https://deep-image.ai/rest_api/process_result', headers=headers,
                             files={'image': f},
                             data=data_dumped)
    if response.status_code == 200:
        response_json = response.json()
        if response_json.get('status') == 'complete':
            p = Path(response_json['result_url'])
            urlretrieve(response_json['result_url'], p.name)
        elif response_json['status'] in ['received', 'in_progress', 'not_started']:
            while response_json['status'] in ['received', 'in_progress', 'not_started']:
                response = requests.get(f'https://deep-image.ai/rest_api/result/{response_json["job"]}',
                                        headers=headers)
                response_json = response.json()
                time.sleep(1)
            if response_json['status'] == 'complete':
                p = Path(response_json['result_url'])
                urlretrieve(response_json['result_url'], p.name)

```

{% endtab %}

{% tab title="Python client" %}
{% code overflow="wrap" %}

```bash
import os

import deep_image_ai_client

configuration = deep_image_ai_client.Configuration(
    host="https://deep-image.ai"
)

configuration.api_key['ApiKeyAuth'] = os.environ["API_KEY"]

with deep_image_ai_client.ApiClient(configuration) as api_client:
    api_instance = deep_image_ai_client.DefaultApi(api_client)
    process_payload = {
        "url": "https://deep-image.ai/api-example.png",
        "enhancements": ["denoise", "deblur", "light"],
        "width": 2000
    }
    api_response = api_instance.rest_api_process_result_post(process_payload)

```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
All data examples in this documentation are JSON based. You can replace above JSON data with that ones from the examples.
{% endhint %}
