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/clientsAktywuj 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}/changesPowiadom Anuto, że zapasy klienta się zmieniły
GET/provider/meSprawdź 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_INVALID401Brak, niepoprawny lub nieznany klucz.
PROVIDER_REVOKED403Dostęp dostawcy został odebrany przez Anuto.
PROVIDER_FORMAT_REQUIRED400Twoje oprogramowanie ma kilka formatów, więc treść musi zawierać format.
PROVIDER_FORMAT_NOT_ALLOWED400Format nie znajduje się wśród zatwierdzonych dla Ciebie formatów.
PROVIDER_CLIENT_NOT_FOUND404Brak 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]