> ## 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.

# AI Wytwarzanie zdjęć identyfikacyjnych API - instrukcja integracji

> AI ID Photo Production 集成指南 - XHuoAPI

Niniejszy dokument przedstawia instrukcję integracji API do wytwarzania zdjęć identyfikacyjnych AI, które można stworzyć, wprowadzając URL zdjęcia portretowego oraz wybrany szablon, aby uzyskać różne style zdjęć identyfikacyjnych.

## Proces aplikacji

Aby skorzystać z API, należy najpierw przejść do strony [AI Wytwarzanie zdjęć identyfikacyjnych API](https://api.xhuoapi.ai/documents/bf7214a3-8447-4157-8a75-f5bb39d5ed1b) i złożyć wniosek o odpowiednią usługę. Po wejściu na stronę, kliknij przycisk „Acquire”, jak pokazano na obrazku:

![](https://cdn.xhuoapi.ai/q6ytrc.png)

Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować. Po zalogowaniu lub rejestracji, automatycznie wrócisz na bieżącą stronę.

Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na bezpłatne korzystanie z tego API.

## Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, czyli wprowadzeniem zdjęcia portretowego, które ma być przetworzone, oraz wybranego szablonu AI zdjęcia identyfikacyjnego, aby uzyskać przetworzony wynik. Najpierw musisz przekazać prosty parametr `image_urls`, który jest tablicą linków do zdjęć portretowych, jak pokazano na obrazku:

<p>
  <img src="https://cdn.zhishuyun.com/2024-11-03-d23744954ca4819503469f04f2268aa0.jpg" width="500" className="m-auto" />
</p>

Następnie musimy wprowadzić wybrany szablon. W artykule przedstawiono osiem popularnych szablonów, które można znaleźć poniżej:

```json theme={null}
{
   "male_portrait":  "męskie zdjęcie portretowe",
   "male_portrait2":  "męskie zdjęcie portretowe (inna wersja)",
   "kindergarten":  "zdjęcie do przedszkola",
   "logo_tshirt": "zdjęcie z logo firmy na koszulce",
   "wedding":  "zdjęcie do rejestracji małżeństwa",
   "business_photo":  "zdjęcie biznesowe",
   "bob_suit": "czarny garnitur z bobem",
   "female_portrait":  "żeńskie zdjęcie portretowe"
}
```

Następnie możemy również określić parametr prędkości generowania `mode`, który dzieli się na dwa rodzaje: wolny `relax` i szybki `fast`, szczegóły przedstawione są poniżej:

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

Możemy zauważyć, że ustawiliśmy nagłówki żądania, w tym:

* `accept`: format odpowiedzi, który chcemy otrzymać, tutaj wpisujemy `application/json`, czyli format JSON.
* `authorization`: klucz do wywołania API, który można wybrać z rozwijanej listy po złożeniu wniosku.

Dodatkowo ustawiliśmy ciało żądania, które obejmuje:

* `mode`: kanał generowania zdjęcia identyfikacyjnego, głównie szybki `fast` i wolny `relax`, przy użyciu `relax` zdecydowanie zaleca się użycie poniższego parametru `callback_url`.
* `template`: styl szablonu zdjęcia identyfikacyjnego.
* `image_urls`: linki do zdjęć portretowych, które mają być przesłane.
* `callback_url`: URL, na który mają być zwracane wyniki.

Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na obrazku:

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

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, a otrzymamy następujący wynik:

```json theme={null}
{
  "success": true,
  "task_id": "ae1e4948-dba1-4a6f-87af-67961b647428",
  "data": [
    {
      "id": "202411031951124776",
      "image_url": "https://platform.cdn.xhuoapi.ai/headshots/ae1e4948-dba1-4a6f-87af-67961b647428.png",
      "template": "męskie zdjęcie portretowe"
    },
    {
      "id": "202411031951128490",
      "image_url": "https://platform.cdn.xhuoapi.ai/headshots/ae1e4948-dba1-4a6f-87af-67961b647428.png",
      "template": "męskie zdjęcie portretowe"
    }
  ]
}
```

Wynik zwrotny zawiera wiele pól, które są opisane poniżej:

* `success`: status zadania generowania zdjęcia identyfikacyjnego.
* `task_id`: ID zadania generowania zdjęcia identyfikacyjnego.
* `data`: lista wyników zadania generowania zdjęcia identyfikacyjnego.
  * `id`: ID zdjęcia zadania generowania zdjęcia identyfikacyjnego.
  * `image_url`: link do zdjęcia zadania generowania zdjęcia identyfikacyjnego.
  * `template`: nazwa szablonu zdjęcia identyfikacyjnego.

Możemy zauważyć, że otrzymaliśmy zadowalające informacje o zdjęciu identyfikacyjnym na podstawie szablonu i zdjęcia portretowego. Wystarczy, że pobierzemy zdjęcie identyfikacyjne z adresu URL w `data`.

Dodatkowo, jeśli chcesz wygenerować odpowiedni kod do integracji, możesz go po prostu skopiować, na przykład kod CURL wygląda następująco:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/headshots/generate' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "mode": "fast",
  "template": "male_portrait",
  "image_urls": ["https://cdn.zhishuyun.com/2024-11-03-d23744954ca4819503469f04f2268aa0.jpg"]
}'
```

## Asynchroniczne wywołanie zwrotne

Ponieważ czas generowania zdjęcia identyfikacyjnego AI jest stosunkowo długi, wynosi około 1-2 minut, jeśli API nie odpowiada przez dłuższy czas, żądanie HTTP będzie utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych. Dlatego to API oferuje również wsparcie dla asynchronicznych wywołań zwrotnych.

Cały proces polega na tym, że klient podczas wysyłania żądania dodatkowo określa pole `callback_url`. Po wysłaniu żądania API natychmiast zwraca wynik, zawierający pole `task_id`, które reprezentuje aktualne ID zadania. Po zakończeniu zadania, wynik generowania zdjęcia identyfikacyjnego zostanie wysłany do określonego przez klienta `callback_url` w formie POST JSON, w tym również pole `task_id`, co pozwala na powiązanie wyniku zadania z ID.

Poniżej przedstawiamy przykład, aby zrozumieć, jak to działa.

Najpierw, Webhook to usługa, która może odbierać żądania HTTP, deweloperzy powinni zastąpić URL własnym serwerem HTTP. Dla wygody demonstracji użyjemy publicznej strony przykładowej Webhook [https://webhook.site/](https://webhook.site/), otwierając tę stronę, otrzymasz URL Webhook, jak pokazano na obrazku:

![](https://cdn.xhuoapi.ai/sb4p3v.png)

Skopiuj ten URL, aby użyć go jako Webhook, przykładowy URL to `https://webhook.site/00f38b26-4289-4899-83d6-0cea7308850a`.

Następnie możemy ustawić pole `callback_url` na powyższy URL Webhook, a także wprowadzić link do zdjęcia portretowego oraz szablon. W artykule zaleca się użycie asynchronicznego wywołania zwrotnego, gdy parametr `mode` jest ustawiony na `relax`, szczegóły przedstawione są na obrazku:

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

Klikając „Uruchom”, można zauważyć, że natychmiast otrzymujemy wynik, jak poniżej:

```
{
  "task_id": "763b1450-8804-434f-acc7-d713be73a28f"
}
```

Po chwili możemy na stronie `https://webhook.site/00f38b26-4289-4899-83d6-0cea7308850a` zobaczyć wyniki generowania zdjęcia, jak pokazano na obrazku:
![](https://cdn.xhuoapi.ai/ym6fw1.png)

Treść jest następująca:

```json theme={null}
{
    "success": true,
    "task_id": "763b1450-8804-434f-acc7-d713be73a28f",
    "data": [
        {
            "id": "202411032010131366",
            "image_url": "https://platform.cdn.xhuoapi.ai/headshots/763b1450-8804-434f-acc7-d713be73a28f.png",
            "template": "męski portret"
        },
        {
            "id": "202411032010132420",
            "image_url": "https://platform.cdn.xhuoapi.ai/headshots/763b1450-8804-434f-acc7-d713be73a28f.png",
            "template": "męski portret"
        }
    ]
}
```

Można zauważyć, że w wynikach znajduje się pole `task_id`, a pozostałe pola są podobne do powyższych, dzięki czemu można powiązać zadanie.

## Obsługa błędów

Podczas wywoływania API, jeśli wystąpi błąd, API zwróci odpowiedni kod błędu i informacje. Na przykład:

* `400 token_mismatched`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `400 api_not_implemented`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `401 invalid_token`: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
* `429 too_many_requests`: Zbyt wiele żądań, przekroczono limit szybkości.
* `500 api_error`: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

### Przykład odpowiedzi błędu

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "pobieranie nie powiodło się"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Wnioski

Dzięki temu dokumentowi zrozumieliście, jak korzystać z API do tworzenia zdjęć identyfikacyjnych AI, które można stworzyć, wprowadzając URL zdjęcia portretowego oraz ulubiony szablon, aby stworzyć różne style zdjęć identyfikacyjnych. Mamy nadzieję, że ten dokument pomoże Wam lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.
