Dokumentacja Provider API
Wszystkie punkty końcowe, pola, odpowiedzi i błędy na jednej stronie. Przykłady używają curl i JSON.
Pierwsze kroki
JSON przez HTTPS. Wyślij jedno wywołanie na klienta, gdy zmieni się jego przełącznik. Każde wywołanie można bezpiecznie powtórzyć.
Adres bazowyhttps://api.anuto.app/v1
Endpointy
| Endpoint | Znaczenie |
|---|---|
POST/provider/clients | Aktywuj lub zaktualizuj klienta |
GET/provider/clients/{externalId} | Status jednego klienta |
DELETE/provider/clients/{externalId} | Dezaktywuj klienta i wycofaj jego ogłoszenia |
POST/provider/clients/{externalId}/changes | Powiadom Anuto, że zapasy klienta się zmieniły |
GET/provider/me | Sprawdź klucz: nazwa dostawcy, formaty i status |
Ponawianie jest bezpieczne
Wywołania z tym samym externalId aktualizują tego klienta. Nigdy nie tworzą duplikatów, więc możesz ponowić po przekroczeniu czasu.
Uwierzytelnianie
Wysyłaj klucz w nagłówku Authorization w każdym żądaniu. Klucze zaczynają się od anp_, są pokazywane tylko raz i można je zmienić na stronie kluczy API.
Authorization: Bearer anp_…Aktywuj lub zaktualizuj klienta
POST/provider/clients
Wyślij dane klienta, gdy jego przełącznik się włączy. Powtórzenie wywołania z tym samym externalId aktualizuje tego klienta.
curl -X POST https://api.anuto.app/v1/provider/clients \
-H "Authorization: Bearer $ANUTO_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "12345",
"name": "Casa Sol Real Estate",
"email": "[email protected]",
"phone": "+34 600 000 000",
"website": "https://casasol.es",
"country": "ES",
"listingsCount": 85
}'| Pole | Wymagane | Znaczenie |
|---|---|---|
externalId | Wymagane | Twój identyfikator tego klienta (na przykład jego konta lub firmy w Twoim oprogramowaniu). Od 1 do 100 znaków. |
name | Wymagane | Nazwa firmy (do 120 znaków). |
email | Wymagane | Kontaktowy adres e-mail klienta. Służy do założenia jego konta Anuto, jeśli klient jest nowy w Anuto. |
country | Wymagane | Dwuliterowy kod kraju ISO, np. ES. |
phone | Opcjonalne | Telefon kontaktowy (do 40 znaków). |
website | Opcjonalne | Strona klienta, http lub https. |
format | Opcjonalne | Potrzebne tylko wtedy, gdy Twój dostęp obejmuje kilka integracji. |
connection | Opcjonalne | Pola połączenia dla Twojej integracji, jeśli są potrzebne. Które to są, podamy po zatwierdzeniu dostępu. |
listingsCount | Opcjonalne | Liczba ogłoszeń klienta, do planowania. |
test | Opcjonalne | Tylko waliduje dane i sprawdza połączenie. Nic nie jest tworzone. |
Odpowiedź
Każde wywołanie zwraca status klienta, liczbę ogłoszeń i pakiet.
{
"externalId": "12345",
"clientId": "Xw3kQ9mZr2LpT7vNa4Bc",
"status": "active",
"shopUrl": "https://es.anuto.app/@casa-sol",
"listings": { "active": 10, "waiting": 0, "planWaiting": 75 },
"plan": { "tier": "free", "maxActive": 10, "freeMaxActive": 10 },
"upgradeUrl": "https://es.anuto.app/user/manage/plan",
"lastSyncAt": "2026-10-08T09:30:00.000Z"
}Sprawdzanie statusu klienta
GET/provider/clients/{externalId}
Zwraca bieżący status klienta, liczbę ogłoszeń i plan, w tym samym formacie co odpowiedź po aktywacji.
curl https://api.anuto.app/v1/provider/clients/12345 \
-H "Authorization: Bearer $ANUTO_KEY"Dezaktywuj klienta
DELETE/provider/clients/{externalId}
Usunięcie klienta wyłącza go i wycofuje jego ogłoszenia z Anuto.
curl -X DELETE https://api.anuto.app/v1/provider/clients/12345 \
-H "Authorization: Bearer $ANUTO_KEY"Zgłaszanie zmian
POST/provider/clients/{externalId}/changes
Wywołuj je zawsze, gdy zmieniają się zapasy klienta: ogłoszenie zostaje dodane, zmienione, sprzedane lub usunięte. Synchronizujemy tego klienta w ciągu kilku minut, zamiast czekać na regularną synchronizację co kilka godzin. Wywołania w ciągu 5 minut są łączone, więc można wywoływać je przy każdej zmianie.
- Treść żądania jest opcjonalna. Dodaj itemIds, aby wskazać do 100 identyfikatorów zmienionych nieruchomości lub produktów.
- Udane wywołanie zwraca 202. nextSyncAt to czas (UTC), na który zaplanowano ponowną synchronizację.
- W przypadku nieaktywnego klienta odpowiedź zawiera queued: false i komunikat. Nic nie trafia do kolejki.
curl -X POST https://api.anuto.app/v1/provider/clients/12345/changes \
-H "Authorization: Bearer $ANUTO_KEY" \
-H "Content-Type: application/json" \
-d '{ "itemIds": ["123", "456"] }'{
"queued": true,
"nextSyncAt": "2026-10-08T12:00:00Z"
}Sprawdzanie klucza
GET/provider/me
Zwraca nazwę Twojego dostawcy, formaty objęte Twoim dostępem i status klucza. Wywołaj to najpierw, aby sprawdzić, czy nowy klucz działa.
curl https://api.anuto.app/v1/provider/me \
-H "Authorization: Bearer $ANUTO_KEY"{
"providerId": "Xw3kQ9mZr2LpT7vNa4Bc",
"name": "Your software company",
"formats": ["…"],
"status": "approved"
}Tryb testowy
Ustaw test na true, aby zwalidować dane i sprawdzić połączenie. Nic nie jest tworzone: dostajesz status, jaki by został nadany, oraz wyniki sprawdzeń.
{
"externalId": "12345",
"name": "Casa Sol Real Estate",
"email": "[email protected]",
"country": "ES",
"test": true
}
{
"ok": true,
"wouldBe": "active",
"checks": { "connection": "ok", "owner": "new_account" }
}Statusy klienta
- activeAktywny i zsynchronizowany.
- pendingPołączenie jeszcze nie działa, więc nic nie jest publikowane.
- reviewAnuto to sprawdza, bo e-mail tego nowego klienta należy już do innego konta Anuto.
- inactiveWyłączony przez Ciebie lub usunięty przez Anuto.
Błędy
Nieudane wywołania zwracają JSON ze statusCode, code i message. Reaguj na code; message jest dla ludzi.
{
"statusCode": 404,
"code": "PROVIDER_CLIENT_NOT_FOUND",
"message": "No client with externalId 12345"
}| Kod | HTTP | Znaczenie |
|---|---|---|
PROVIDER_KEY_INVALID | 401 | Brak, niepoprawny lub nieznany klucz. |
PROVIDER_REVOKED | 403 | Dostęp dostawcy został odebrany przez Anuto. |
PROVIDER_FORMAT_REQUIRED | 400 | Twoje oprogramowanie ma kilka formatów, więc treść musi zawierać format. |
PROVIDER_FORMAT_NOT_ALLOWED | 400 | Format nie znajduje się wśród zatwierdzonych dla Ciebie formatów. |
PROVIDER_CLIENT_NOT_FOUND | 404 | Brak klienta o tym externalId u Twojego dostawcy. |
Limity żądań
Po przekroczeniu limitu dostajesz 429 z nagłówkiem Retry-After. Poczekaj tyle sekund i ponów próbę.
Pytania o API lub o Twój dostęp? [email protected]