# SDK Documentation

<figure><picture><source srcset="https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/cover/sdk_banner_dark.png" media="(prefers-color-scheme: dark)"><img src="https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/cover/sdk_banner.png" alt=""></picture><figcaption></figcaption></figure>

We provide a Python SDK to interface programmatically with Ango Hub.

## SDK Installation

#### How to Install the Ango SDK

To start using the Ango SDK, you will need to install the latest version of the `imerit-ango` python package, available on [PyPI](https://pypi.org/project/imerit-ango/).

To download and add the package to your current Python environment, use the following command:&#x20;

```
pip install imerit-ango
```

#### How to upgrade the Ango SDK

To upgrade the `imerit-ango` package to its latest version in your current Python environment, use the following command:

```
pip install -U imerit-ango
```

{% hint style="info" %}
It is strongly recommended to use the latest version of the `imerit-ango` package to ensure compatibility with current features, avoid potential issues, and benefit from the latest fixes and improvements.
{% endhint %}

#### Obtaining your API Key

In order to interact with Ango Hub programmatically, you'll need an API key which can be directly obtained from the account page.

{% hint style="warning" %}
API keys in Ango Hub are generated per user within each organization. When authenticating requests, ensure you are using the API key that associates with the correct organization, as keys are not valid across different organizations.
{% endhint %}

To retrieve your API Key from the UI:

1. Navigate to your [Account](https://imerit.ango.ai/account/api) page in Ango Hub.
2. Go to the API tab.
3. Create a new API key or copy your existing key.

For more information, please visit the [How to get your API key](https://docs.imerit.net/how-to/manage-projects/get-your-api-key) page.&#x20;

{% hint style="info" %}
Creating a new API key will revoke the existing one.
{% endhint %}

#### Obtaining Organization, Project, Asset, and Task IDs

Ango Hub assigns unique identifiers to [organizations](https://docs.imerit.net/core-concepts/organizations), [projects](https://docs.imerit.net/core-concepts/projects), [assets](https://docs.imerit.net/core-concepts/assets), and [tasks](https://docs.imerit.net/core-concepts/tasks). These IDs are commonly required when interacting with the SDK.

#### Organization IDs

To retrieve your Organization ID from the UI:

1. Navigate to the [Account](https://imerit.ango.ai/account) page.
2. Locate the **Organization ID** field under the Profile tab.
3. Click the Copy icon next to the field to copy the ID to your clipboard.

#### Project IDs

To retrieve a Project ID from the UI:

1. Navigate to [Projects](https://imerit.ango.ai/projects) page.&#x20;
2. Search for your project and click to open it.&#x20;
3. On the project page, click the copy icon next to the project title to copy the ID to your clipboard.

Alternatively, you can obtain the Project ID from the URL. Project URLs follow this format:

`https://imerit.ango.ai/projects/<project_id>`

Simply copy the \<project\_id> portion from the URL.

#### Task and Asset IDs

To retrieve a Task or Asset ID from the UI:

1. Navigate to the Tasks or Assets tab within your project.
2. Click on the task or asset you want to inspect.
3. Open the **Task Info** section from the rightmost panel.
4. Find the Task or Asset ID and use the Copy icon to easily copy it to your clipboard.

#### Host and Base URL

This section explains how to configure the API and SDK when working with different Ango Hub instances.

* **EU Instance (Default):** Use the default host configuration when your workspace is hosted in the EU region.
* **Other Instances:** If your workspace is hosted in a different region (e.g., US), specify the appropriate host parameter when initializing the SDK and update the base URL accordingly in your API requests.

Using the correct host and base URL ensures that your requests are routed to the appropriate regional environment.

<table><thead><tr><th width="206.04296875">Deployment</th><th width="264.34765625">Domain</th><th>Host</th></tr></thead><tbody><tr><td>iMerit (Default)</td><td><kbd>https://imerit.ango.ai</kbd></td><td><kbd>https://imeritapi.ango.ai</kbd></td></tr><tr><td>EU Instance (Default)</td><td><kbd>https://imerit.ango.ai</kbd></td><td><kbd>https://eu-api.ango.ai</kbd></td></tr><tr><td>US Instance</td><td><kbd>https://us.ango.ai</kbd></td><td><kbd>https://us-api.ango.ai</kbd></td></tr><tr><td>India Instance</td><td><kbd>https://in.ango.ai</kbd></td><td><kbd>https://in-api.ango.ai</kbd></td></tr><tr><td>Test Instance</td><td><kbd>https://test.ango.ai</kbd></td><td><kbd>https://testapi.ango.ai</kbd></td></tr></tbody></table>

SDK & API usage example in EU instance:

{% tabs %}
{% tab title="python" %}

```python
from imerit_ango.sdk import SDK

api_key = "$ANGO_API_KEY"

ango_sdk = SDK(api_key=api_key)
response = ango_sdk.create_project(name="Example Project")
```

{% endtab %}

{% tab title="curl" %}

```bash
curl -X POST "https://imeritapi.ango.ai/v2/project" \
  -H "Content-Type: application/json" \
  -H "apikey: $ANGO_API_KEY" \
  -d '{
    "name": "Example Project"
  }'
```

{% endtab %}
{% endtabs %}

SDK & API usage example in other instances:

{% tabs %}
{% tab title="python" %}

```python
from imerit_ango.sdk import SDK

api_key = "$ANGO_API_KEY"
host = "https://us.ango.ai"

ango_sdk = SDK(api_key=api_key, host=host)
response = ango_sdk.create_project(name="Example Project")
```

{% endtab %}

{% tab title="curl" %}

```bash
curl -X POST "https://us-api.ango.ai/v2/project" \
  -H "Content-Type: application/json" \
  -H "apikey: $ANGO_API_KEY" \
  -d '{
    "name": "Example Project"
  }'
```

{% endtab %}
{% endtabs %}

## Environmental Variables

Snippets on this page make the assumption that you have your API key and other variables set as environmental variables.

To set environmental variables, install the `python-dotenv` package from pip by running

```
pip install python-dotenv
```

in your Python environment.

Then, create a file called `.env` in your environment's root folder. The contents of this `.env` file will look like this:

```
API_KEY=00af1132-0558-4ec7-93e3-46826a455ac0
ORGANIZATION_ID=12a12345678b1234567aa12a
PROJECT_ID=1233453123dsfdf012
```

{% file src="<https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F6DqISejFN0gAE2mOhj70%2Fvariables.env?alt=media&token=9efc418b-07cf-45f0-80fc-f1149e4a1864>" %}
Sample .env file
{% endfile %}

In your Python scripts, import the package and load the environmental variables by running `load_dotenv()` before using the variables in your script.

```python
import os
from dotenv import load_dotenv

load_dotenv('variables.env')
```

You will then be able to access your environmental variables by using `os.getenv("VAR_NAME")`, like so:

```python
API_KEY = os.getenv('API_KEY')
```

## SDK Functions

### Project

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_project" %}
[create\_project](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_project)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_project" %}
[get\_project](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_project)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/delete\_project" %}
[delete\_project](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/delete_project)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/list\_projects" %}
[list\_projects](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/list_projects)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_label\_set" %}
[create\_label\_set](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_label_set)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/requeue\_tasks" %}
[requeue\_tasks](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/requeue_tasks)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/rerun\_webhook" %}
[rerun\_webhook](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/rerun_webhook)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/review\_task" %}
[review\_task](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/review_task)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/update\_label\_validation" %}
[update\_label\_validation](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/update_label_validation)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/update\_workflow\_stages" %}
[update\_workflow\_stages](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/update_workflow_stages)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/update\_tasks\_priority" %}
[update\_tasks\_priority](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/update_tasks_priority)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/upload\_instructions" %}
[upload\_instructions](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/upload_instructions)
{% endcontent-ref %}

### Storage

{% content-ref url="sdk-documentation/organization-level-sdk-functions/create\_storage" %}
[create\_storage](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/create_storage)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/get\_storages" %}
[get\_storages](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/get_storages)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/delete\_storage" %}
[delete\_storage](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/delete_storage)
{% endcontent-ref %}

### Upload Data

{% content-ref url="sdk-documentation/project-level-sdk-functions/upload\_files" %}
[upload\_files](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/upload_files)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/upload\_files\_cloud" %}
[upload\_files\_cloud](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/upload_files_cloud)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/upload\_files\_with\_asset\_builder" %}
[upload\_files\_with\_asset\_builder](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/upload_files_with_asset_builder)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_asset\_builder\_template" %}
[create\_asset\_builder\_template](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_asset_builder_template)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_asset\_builder\_templates" %}
[get\_asset\_builder\_templates](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_asset_builder_templates)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/upload\_chat\_assets" %}
[upload\_chat\_assets](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/upload_chat_assets)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/import\_labels" %}
[import\_labels](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/import_labels)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_attachment" %}
[create\_attachment](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_attachment)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/delete\_assets" %}
[delete\_assets](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/delete_assets)
{% endcontent-ref %}

### Batch

{% content-ref url="sdk-documentation/project-level-sdk-functions/assign\_batches" %}
[assign\_batches](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/assign_batches)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_batch" %}
[create\_batch](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_batch)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_batches" %}
[get\_batches](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_batches)
{% endcontent-ref %}

### Members

{% content-ref url="sdk-documentation/organization-level-sdk-functions/invite\_members\_to\_org" %}
[invite\_members\_to\_org](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/invite_members_to_org)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/add\_members\_to\_project" %}
[add\_members\_to\_project](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/add_members_to_project)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/get\_organization\_invites" %}
[get\_organization\_invites](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/get_organization_invites)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/get\_organization\_members" %}
[get\_organization\_members](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/get_organization_members)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/update\_organization\_members\_role" %}
[update\_organization\_members\_role](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/update_organization_members_role)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/delete\_organization\_invites" %}
[delete\_organization\_invites](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/delete_organization_invites)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/organization-level-sdk-functions/delete\_organization\_members" %}
[delete\_organization\_members](https://docs.imerit.net/sdk/sdk-documentation/organization-level-sdk-functions/delete_organization_members)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/assign\_task" %}
[assign\_task](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/assign_task)
{% endcontent-ref %}

### Issue

{% content-ref url="sdk-documentation/project-level-sdk-functions/create\_issue" %}
[create\_issue](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/create_issue)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_issues" %}
[get\_issues](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_issues)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/delete\_issue" %}
[delete\_issue](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/delete_issue)
{% endcontent-ref %}

### Export Data

{% content-ref url="sdk-documentation/project-level-sdk-functions/export" %}
[export](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/export)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_assets" %}
[get\_assets](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_assets)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_task" %}
[get\_task](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_task)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_tasks" %}
[get\_tasks](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_tasks)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_task\_history" %}
[get\_task\_history](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_task_history)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_metrics" %}
[get\_metrics](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_metrics)
{% endcontent-ref %}

{% content-ref url="sdk-documentation/project-level-sdk-functions/get\_project\_performance" %}
[get\_project\_performance](https://docs.imerit.net/sdk/sdk-documentation/project-level-sdk-functions/get_project_performance)
{% endcontent-ref %}

### Utility Functions

{% content-ref url="sdk-documentation/utility-functions/list\_storage\_files" %}
[list\_storage\_files](https://docs.imerit.net/sdk/sdk-documentation/utility-functions/list_storage_files)
{% endcontent-ref %}
