# Python

## Create API Key from metacopier.io

You can use two types of API keys:

* **Project-level API key**: Navigate to **Your Projects > (Choose a project) > API Keys** (provides access to all accounts in the project)
* **Account API key**: Automatically generated when an account is created (provides access only to that specific account). Retrieve using the [getAccountApiKeys](https://api.metacopier.io/rest/api/documentation/swagger-ui/index.html#/Account%20API/getAccountApiKeys) endpoint.

*Note: Please do not share your API Key to people whom you don't trust.*

## Package Information

Both packages from option 1 or option 2 are based on the following **OpenAPI** configuration:

{% embed url="<https://api.metacopier.io/rest/api/documentation/v3/api-docs>" %}

### Option 1: Install with python package index (PyPi.org)

#### Execute install command

Execute the following command to generate the SDK package:

```
pip install metacopier-api
```

You can also visit the package on the official PyPI site:

{% embed url="<https://pypi.org/project/metacopier-api/>" %}

### Options 2: Install with OpenAPI Generator CLI

See instructions under [generation](https://docs.metacopier.io/rest-api/sdk/generation "mention")

#### Execute CLI command

Execute the following command to generate the SDK package:

<pre><code><strong>openapi-generator-cli generate -i https://api.metacopier.io/rest/api/documentation/v3/api-docs -g python --additional-properties packageName=metacopier_api
</strong></code></pre>

## Example

In the following python program I will use the **metacopier\_api** (OpenCLI or PyPI) package to fetch all accounts of my MetaCopier project.

```python
from metacopier_api.api.account_api_api import AccountAPIApi
from metacopier_api.api_client import ApiClient
from metacopier_api.configuration import Configuration
from metacopier_api.exceptions import ApiException

# Api Key from metacopier.io
apiKey = "YOUR_API_KEY"

configuration = Configuration(
    host = "https://api.metacopier.io"
)

# Set api key for authorization
configuration.api_key['ApiKeyAuth'] = apiKey

# USe Api Client
with ApiClient(configuration) as api_client:

    # Create an instance of the account API class
    accountClient = AccountAPIApi(api_client)

    try:
        # Send request to fetch accounts
        accounts = accountClient.get_accounts()
        
        # Print response
        print(accounts)
    except ApiException as e:
        print("Exception when calling AccountAPIApi: %s\n" % e)
        
```

## Generate your own package

With the following command, you can generate your own package for the metacopier api:

{% hint style="info" %}
Be sure that you have installed the OpenAPI Generator.\
See [generation](https://docs.metacopier.io/rest-api/sdk/generation "mention") page for more information.
{% endhint %}

```bash
openapi-generator-cli generate -i https://api.metacopier.io/rest/api/documentation/v3/api-docs -g python
```

For more information regarding the Open API generator, please visit their offical page:

{% embed url="<https://openapi-generator.tech/>" %}

## What endpoints can I call?

To check all available endpoints see either of the two pages:

{% content-ref url="../../api/readme.io" %}
[readme.io](https://docs.metacopier.io/rest-api/api/readme.io)
{% endcontent-ref %}

{% content-ref url="../../api/swagger" %}
[swagger](https://docs.metacopier.io/rest-api/api/swagger)
{% endcontent-ref %}
