# Multimedia create

{% hint style="info" %}
To create multimedia via API you need to send the data by a multipart request with `upload` and `query` headers.
{% endhint %}

{% hint style="info" %}
The folder to which multimedia will be uploaded must already exist.
{% endhint %}

{% hint style="info" %}
folderPath parameter is optional, if not included multimedia will be uploaded to the main folder.
{% endhint %}

{% hint style="info" %}
Max allowed file size is 100 MB
{% endhint %}

```graphql
mutation {
  multimediaCreate(
    input: { name: "file_name.extension", folderPath: "folder_path" }
  ) {
    __typename
  }
}
```

#### Example in PHP8

```php
$client = new \GuzzleHttp\Client(); // Guzzle version 6

$resp = $client->post(
    $url,
    [
        'multipart' => [
            [
                'name' => 'upload',
                'contents' => fopen(__DIR__ . '/test.png', 'r'),
            ],
            [
                'name' => 'query',
                'contents' => '
                    mutation {
                        multimediaCreate(input: {name: "new.png", folderPath: null}) {__typename}
                    }
                ',
            ],
        ],
        'headers' => [
            'X-API-KEY' => $apiKey,
        ],
    ],
);
```

#### Example in Python3

```python
from urllib import response
import requests

url = "https://marcin.ergonode.app/api/graphql/"

data = {
    'upload': open('C:\\temp\\temp.png', 'rb'),
    'query': (None, 'mutation{multimediaCreate(input:{name:"<choose_a_name>",folderPath: "<some_folder_path>"}){__typename}}')
}

headers = {
    'X-API-KEY': '<some_api_key>',
}

response = requests.post(url, files=data, headers=headers)

print (response.text)

```
