> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrazione e utilizzo dell'API Midjourney Tasks

> Midjourney generation 集成指南 - XHuoAPI

La principale funzionalità dell'API Midjourney Tasks è quella di interrogare lo stato di esecuzione di un'attività utilizzando l'ID attività generato dall'API Midjourney Imagine o dall'API Midjourney Describe.

Questo documento fornirà una guida dettagliata sull'integrazione dell'API Midjourney Tasks, aiutandoti a integrare facilmente e sfruttare appieno le potenti funzionalità di questa API. Con l'API Midjourney Tasks, puoi facilmente interrogare lo stato di esecuzione delle attività dell'API Midjourney Imagine o dell'API Midjourney Describe.

## Procedura di richiesta

Per utilizzare l'API Midjourney Tasks, è necessario prima andare alla pagina di richiesta [Midjourney Imagine API](https://api.xhuoapi.ai/documents/e52c028d-897a-4d51-b110-60fccbe6118d) per richiedere il servizio corrispondente, quindi copiare l'ID attività dell'Imagine API, come mostrato nell'immagine:

<p>
  <img src="https://cdn.xhuoapi.ai/lx4mwb.png" width="500" className="m-auto" />
</p>

Infine, accedi alla pagina dell'API Tasks [Midjourney Tasks API](https://api.xhuoapi.ai/documents/58ea7cc1-c685-40c3-a619-f29f9ac5d8f4) per richiedere il servizio corrispondente. Una volta entrato nella pagina, fai clic sul pulsante "Acquire", come mostrato nell'immagine:

![Pagina di richiesta](https://cdn.xhuoapi.ai/rci31i.png)

Se non hai ancora effettuato il login o la registrazione, verrai automaticamente reindirizzato alla [pagina di login](https://api.xhuoapi.ai) che ti invita a registrarti e accedere. Dopo aver effettuato il login o la registrazione, verrai automaticamente riportato alla pagina corrente.

Alla prima richiesta, verrà offerto un credito gratuito, che ti consente di utilizzare gratuitamente questa API.

## Esempio di richiesta

L'API Midjourney Tasks può essere utilizzata per interrogare i risultati delle API Midjourney Imagine e Midjourney Describe. Per informazioni su come utilizzare l'API Midjourney Imagine, fare riferimento al documento [Midjourney Imagine API](https://api.xhuoapi.ai/documents/b0e32002-2707-41cc-b103-a15b1f1efdc1). Per informazioni su come utilizzare l'API Midjourney Describe, fare riferimento a [Midjourney Describe API](https://api.xhuoapi.ai/documents/d2a04242-507c-4a49-a17a-01bc382c5756).

Prendiamo come esempio un ID attività restituito dal servizio Midjourney Imagine API e dimostriamo come utilizzare questa API. Supponiamo di avere un ID attività: 7489df4c-ef03-4de0-b598-e9a590793434, e ora dimostriamo come passare un ID attività.

### Esempio di attività

<p>
  <img src="https://cdn.xhuoapi.ai/lx4mwb.png" width="500" className="m-auto" />
</p>

### Impostazione dell'intestazione della richiesta e del corpo della richiesta

**Request Headers** includono:

* `accept`: specifica di ricevere la risposta in formato JSON, qui si compila con `application/json`.
* `authorization`: la chiave per chiamare l'API, che può essere selezionata direttamente dopo la richiesta.

**Request Body** include:

* `id`: l'ID dell'attività caricata.
* `ids`: array di ID attività per la query in batch.
* `action`: il modo di operare sull'attività, supporta `retrieve` (singola query) e `retrieve_batch` (query in batch).

Impostato come mostrato nell'immagine:

<p>
  <img src="https://cdn.xhuoapi.ai/ybek58.png" width="500" className="m-auto" />
</p>

### Esempio di codice

Si può notare che sul lato destro della pagina sono già stati generati automaticamente vari codici in diverse lingue, come mostrato nell'immagine:

<p>
  <img src="https://cdn.xhuoapi.ai/46ookb.png" width="500" className="m-auto" />
</p>

Alcuni esempi di codice sono i seguenti:

#### CURL

```bash theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/midjourney/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "id": "7489df4c-ef03-4de0-b598-e9a590793434",
  "action": "retrieve"
}'
```

#### Python

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/midjourney/tasks"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "id": "7489df4c-ef03-4de0-b598-e9a590793434",
    "action": "retrieve"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

### Esempio di risposta

Dopo una richiesta riuscita, l'API restituirà le informazioni dettagliate sull'attività dell'immagine qui. Ad esempio:

```json theme={null}
{
  "_id": "668aae3f550a4144a540803b",
  "id": "7489df4c-ef03-4de0-b598-e9a590793434",
  "application_id": "9dec7b2a-1cad-41ff-8536-d4ddaf2525d4",
  "created_at": 1720364607.967,
  "credential_id": "68253cc8-505d-47f4-97ad-0050a62e4975",
  "request": {
    "mode": "fast",
    "prompt": "Un gatto seduto su un tavolo",
    "action": "generate"
  },
  "type": "imagine",
  "hold": false,
  "image_id": "1259525319472185344",
  "job_id": "da317da6-f500-48e6-bf32-dd48b3e6f84f",
  "response": {
    "image_url": "https://platform.cdn.xhuoapi.ai/midjourney/7489df4c-ef03-4de0-b598-e9a590793434.png?imageMogr2/thumbnail/!50p",
    "image_width": 1024,
    "image_height": 1024,
    "actions": [
      "upscale1",
      "upscale2",
      "upscale3",
      "upscale4",
      "reroll",
      "variation1",
      "variation2",
      "variation3",
      "variation4"
    ],
    "raw_image_url": "https://platform.cdn.xhuoapi.ai/midjourney/7489df4c-ef03-4de0-b598-e9a590793434.png",
    "raw_image_width": 2048,
    "raw_image_height": 2048,
    "progress": 100,
    "image_id": "1259525319472185344",
    "task_id": "7489df4c-ef03-4de0-b598-e9a590793434",
    "success": true,
    "job_id": "da317da6-f500-48e6-bf32-dd48b3e6f84f",
    "hold": false
  },
  "duration": 29.437000036239624,
  "finished_at": 1720364637.404
}
```

Il risultato restituito contiene diversi campi, il campo request è il corpo della richiesta inviato per avviare l'attività, mentre il campo response è il corpo della risposta restituito al termine dell'attività. Se type = imagine, il risultato è coerente con la richiesta e la risposta dell'API Midjourney Imagine, se type = describe, il risultato è coerente con la richiesta e la risposta dell'API Midjourney Describe. La descrizione dei campi è la seguente.

* `id`, l'ID dell'attività di generazione dell'immagine, utilizzato per identificare univocamente questa attività di generazione dell'immagine.
* `type`, se type = imagine rappresenta il risultato dell'API Midjourney Imagine, se type = describe rappresenta il risultato dell'API Midjourney Describe.
* `job_id`, l'ID dell'attività di query dell'immagine generata, utilizzato per identificare univocamente questa attività di query dell'immagine.
* `image_id`, l'identificatore univoco dell'attività di immagine interrogata, necessario per le operazioni di modifica dell'immagine in futuro.
* `request`, informazioni sulla richiesta nell'attività di query dell'immagine.
* `response`, informazioni sulla risposta nell'attività di query dell'immagine.

## Operazione di query in batch

Questa è per interrogare i dettagli delle attività di immagine per più ID attività, a differenza di quanto sopra, è necessario selezionare l'azione come retrieve\_batch.

**Request Body** include:

* `ids`: array degli ID attività caricati.
* `action`: il modo di operare sull'attività.

Impostato come mostrato nell'immagine:

<p>
  <img src="https://cdn.xhuoapi.ai/ljmy8w.png" width="500" className="m-auto" />
</p>

### Esempio di codice

Si può notare che, sul lato destro della pagina, sono stati generati automaticamente vari codici in diverse lingue, come mostrato nell'immagine:

<p>
  <img src="https://cdn.xhuoapi.ai/ljmy8w.png" width="500" className="m-auto" />
</p>

Alcuni esempi di codice sono i seguenti:

### Esempio di risposta

Dopo una richiesta riuscita, l'API restituirà i dettagli specifici di tutti i compiti di immagini in batch. Ad esempio:

```json theme={null}
{
  "items": [
    {
      "_id": "668aae3f550a4144a540803b",
      "id": "7489df4c-ef03-4de0-b598-e9a590793434",
      "application_id": "9dec7b2a-1cad-41ff-8536-d4ddaf2525d4",
      "created_at": 1720364607.967,
      "credential_id": "68253cc8-505d-47f4-97ad-0050a62e4975",
      "request": {
        "mode": "fast",
        "prompt": "Un gatto seduto su un tavolo",
        "action": "generate"
      },
      "type": "imagine",
      "hold": false,
      "image_id": "1259525319472185344",
      "job_id": "da317da6-f500-48e6-bf32-dd48b3e6f84f",
      "response": {
        "image_url": "https://platform.cdn.xhuoapi.ai/midjourney/7489df4c-ef03-4de0-b598-e9a590793434.png?imageMogr2/thumbnail/!50p",
        "image_width": 1024,
        "image_height": 1024,
        "actions": [
          "upscale1",
          "upscale2",
          "upscale3",
          "upscale4",
          "reroll",
          "variation1",
          "variation2",
          "variation3",
          "variation4"
        ],
        "raw_image_url": "https://platform.cdn.xhuoapi.ai/midjourney/7489df4c-ef03-4de0-b598-e9a590793434.png",
        "raw_image_width": 2048,
        "raw_image_height": 2048,
        "progress": 100,
        "image_id": "1259525319472185344",
        "task_id": "7489df4c-ef03-4de0-b598-e9a590793434",
        "success": true,
        "job_id": "da317da6-f500-48e6-bf32-dd48b3e6f84f",
        "hold": false
      },
      "duration": 29.437000036239624,
      "finished_at": 1720364637.404
    },
    {
      "_id": "668b41d6550a4144a551d996",
      "id": "807f62de-c63e-4add-8345-7f0ae6dd18e7",
      "application_id": "9dec7b2a-1cad-41ff-8536-d4ddaf2525d4",
      "created_at": 1720402390.341,
      "credential_id": "6fd3e1d5-4bd6-47e8-8872-fab89a183b53",
      "request": {
        "mode": "fast",
        "prompt": "Una bella ragazza",
        "action": "generate"
      },
      "type": "imagine",
      "hold": false,
      "image_id": "1259683790612070400",
      "job_id": "ede5c805-e231-498c-8f74-3aa76d5d6d12",
      "response": {
        "image_url": "https://platform.cdn.xhuoapi.ai/midjourney/807f62de-c63e-4add-8345-7f0ae6dd18e7.png?imageMogr2/thumbnail/!50p",
        "image_width": 1024,
        "image_height": 1024,
        "actions": [
          "upscale1",
          "upscale2",
          "upscale3",
          "upscale4",
          "reroll",
          "variation1",
          "variation2",
          "variation3",
          "variation4"
        ],
        "raw_image_url": "https://platform.cdn.xhuoapi.ai/midjourney/807f62de-c63e-4add-8345-7f0ae6dd18e7.png",
        "raw_image_width": 2048,
        "raw_image_height": 2048,
        "progress": 100,
        "image_id": "1259683790612070400",
        "task_id": "807f62de-c63e-4add-8345-7f0ae6dd18e7",
        "success": true,
        "job_id": "ede5c805-e231-498c-8f74-3aa76d5d6d12",
        "hold": false
      },
      "duration": 29.471999883651733,
      "finished_at": 1720402419.813
    }
  ],
  "count": 2
}
```

Il risultato restituito ha diversi campi, dove `items` contiene i dettagli specifici dei compiti di immagini in batch, ogni informazione specifica di un compito di immagine è simile ai campi sopra menzionati, le informazioni sui campi sono le seguenti.

* `items`, tutti i dettagli specifici dei compiti di immagini in batch. È un array, ogni elemento dell'array ha lo stesso formato del risultato della query di un singolo compito sopra.
* `count`, il numero di compiti di immagini in batch richiesti.

#### CURL

```bash theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/midjourney/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "retrieve_batch",
  "id": "",
  "ids": ["7489df4c-ef03-4de0-b598-e9a590793434","807f62de-c63e-4add-8345-7f0ae6dd18e7"]
}'
```

#### Python

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/midjourney/tasks"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "retrieve_batch",
    "id": "",
    "ids": ["7489df4c-ef03-4de0-b598-e9a590793434","807f62de-c63e-4add-8345-7f0ae6dd18e7"]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

## Gestione degli errori

Quando si chiama l'API, se si verifica un errore, l'API restituirà il codice di errore e le informazioni corrispondenti. Ad esempio:

* `400 token_mismatched`: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
* `400 api_not_implemented`: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
* `401 invalid_token`: Non autorizzato, token di autorizzazione non valido o mancante.
* `429 too_many_requests`: Troppe richieste, hai superato il limite di frequenza.
* `500 api_error`: Errore interno del server, qualcosa è andato storto sul server.

### Esempio di risposta di errore

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusione

Attraverso questo documento, hai compreso come utilizzare l'API Midjourney Tasks per interrogare i dettagli specifici di compiti di immagini singoli o in batch. Speriamo che questo documento possa aiutarti a integrare e utilizzare meglio questa API. Se hai domande, non esitare a contattare il nostro team di supporto tecnico.
