# 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 %}


---

# 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://documentation.deep-image.ai/quick-start.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.
