Dokumentacja API danych Airbnb

Witamy w API BNBCalc. Ta dokumentacja pomoże Ci zintegrować analizę nieruchomości krótkoterminowych w Twojej aplikacji.

Użyj API danych Airbnb BNBCalc, aby uzyskać przychody z nieruchomości, obłożenie, ADR, aktywne porównywalne oferty Airbnb, percentyle, metryki inwestycyjne i publiczne adresy URL raportów do aplikacji, raportów, oceny ryzyka i narzędzi zarządzania.


Pierwsze kroki

Aby rozpocząć korzystanie z API danych Airbnb BNBCalc, będziesz musiał:

1. Utwórz konto BNBCalc lub zaloguj się do istniejącego konta

2. Przejdź do ustawień konta, aby wygenerować klucz API

3. Dołącz swój klucz API do wszystkich żądań API, używając nagłówka x-bnbcalc-api-key.

4. Zacznij wysyłać zapytania, aby uzyskać dostęp do danych i analiz nieruchomości.

Wszystkie punkty końcowe API korzystają z HTTPS i zwracają odpowiedzi w formacie JSON. Przechowuj klucze API na swoim serwerze, nie w kodzie przeglądarki lub klienta mobilnego. Zewnętrzne trasy API są obecnie ograniczone do 100 żądań na sekundę i używają standardowych kodów odpowiedzi HTTP, aby wskazać sukces lub porażkę.


Uwierzytelnianie

Wszystkie żądania API wymagają uwierzytelnienia za pomocą klucza API. Klucze API są powiązane z Twoim kontem BNBCalc, powinny być przechowywane po stronie serwera i nigdy nie powinny być ujawniane w kodzie front-end. Dodaj swój klucz API do nagłówka żądania, jak pokazano poniżej:

x-bnbcalc-api-key: YOUR_API_KEY

Możesz wygenerować klucze API samodzielnie z sekcji ustawień konta. Do każdego żądania API dołącz nagłówek x-bnbcalc-api-key, aby się uwierzytelnić.


POST/v1/external/analysis/create/buy

Utwórz analizę zakupu

Utwórz nową analizę zakupu nieruchomości. Wymaga szczegółów dotyczących nieruchomości, informacji o lokalizacji oraz ceny zakupu.

AI requests are slower than standard calls. Allow up to 90 seconds and set your client timeout to at least 300 seconds. AI work is time-bounded, so a request always returns a usable analysis rather than hanging.

AI-selected comparables are available for United States properties and require at least 8 usable listing photos for the address. Listing photos are gathered in the background when an analysis is created, so calling enhance shortly afterwards is faster than requesting comparables during creation.

When an AI step cannot complete, the response still returns 200 with the valid analysis and a warnings array explaining what was skipped. Check warnings rather than assuming AI results are always present.

Each AI function that completes adds $0.10 to the call. AI steps that fail or time out are never charged, and /enhance is billed only for the AI functions that completed — it carries no base call fee.

Parametry Lokalizacji (Warunkowe)

⚠️ Podaj lat I lng, LUB podaj fullAddress. Wymagana jest co najmniej jedna metoda.

latnumberwarunkowe

Współrzędna szerokości geograficznej (musi być podana z lng, jeśli fullAddress nie jest używany)(e.g., 27.7676)

lngnumberwarunkowe

Współrzędna długości geograficznej (musi być podana z lat, jeśli fullAddress nie jest używany)(e.g., -82.6403)

fullAddressstringwarunkowe

Pełny adres nieruchomości (może być używany zamiast współrzędnych lat/lng)(e.g., 4935 2nd Avenue North, St. Petersburg, FL 33703)

Parametry Wymagane

purchasePriceUSDnumberwymagane

Cena zakupu w USD(e.g., 350000)

bedroomsnumberwymagane

Liczba sypialni(e.g., 3)

bathroomsnumberwymagane

Liczba łazienek(e.g., 2)

accomodatesnumberwymagane

Liczba gości, których nieruchomość może pomieścić(e.g., 6)

Parametry Opcjonalne

monthlyRentUSDnumberopcjonalne

Oczekiwany miesięczny czynsz w USD za wynajem długoterminowy(e.g., 2500)

interestRatePercentagenumberopcjonalne

Oprocentowanie w procentach (0-15)(e.g., 5.1)

squareFeetnumberopcjonalne

Powierzchnia nieruchomości w stopach kwadratowych(e.g., 1500)

statestringopcjonalne

Nazwa stanu(e.g., Florida)

citystringopcjonalne

Nazwa miasta(e.g., St. Petersburg)

countystringopcjonalne

Nazwa hrabstwa(e.g., Pinellas County)

postalCodestringopcjonalne

Kod pocztowy(e.g., 33703)

countrystringopcjonalne

Nazwa kraju(e.g., United States)

streetstringopcjonalne

Nazwa ulicy(e.g., 2nd Avenue North)

streetNumberstringopcjonalne

Numer domu(e.g., 4935)

unitstringopcjonalne

Numer jednostki/mieszkania, jeżeli dotyczy

addAICompsbooleanopcjonalne

Select comparables with AI and apply the resulting revenue benchmark. US properties only, and requires at least 8 usable listing photos for the address.(e.g., true)

addAIExpenseEstimatesbooleanopcjonalne

Estimate operating expenses with AI instead of using category defaults(e.g., true)

Przykładowe zapytanie

curl -X POST \ https://atlas.bnbcalc.com/v1/external/analysis/create/buy \ -H "x-bnbcalc-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "lat": 27.7676, "lng": -82.6403, "bedrooms": 3, "bathrooms": 2, "accomodates": 6, "purchasePriceUSD": 400000 }'

Przykładowa odpowiedź

{ "success": true, "data": { "_id": "000000000000000000000000", "url": "https://www.bnbcalc.com/analysis/example-property/000000000000000000000000", "currency": "USD", "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48, "bedrooms": 4, "bathrooms": 4, "commonSpaces": 1, "accomodates": 12, "fullAddress": "4935 2nd Avenue North, St. Petersburg, FL 33703", "location": { "type": "Point", "coordinates": [ -82.6403, 27.7676 ] }, "revenue": { "p25": 48210, "p50": 58440, "p75": 63944.76398163934, "p90": 74280, "avg": 60310 }, "adr": { "p25": 214, "p50": 288, "p75": 364.73770491803276, "p90": 431, "avg": 318 }, "occupancy": { "p25": 0.38, "p50": 0.44, "p75": 0.48, "p90": 0.56, "avg": 0.46 }, "quartiles": { "25th_percentile": { "average_daily_rate": 214, "occupancy_rate": 38, "revenue": 48210 }, "50th_percentile": { "average_daily_rate": 288, "occupancy_rate": 44, "revenue": 58440 }, "75th_percentile": { "average_daily_rate": 364.73770491803276, "occupancy_rate": 48, "revenue": 63944.76398163934 }, "90th_percentile": { "average_daily_rate": 431, "occupancy_rate": 56, "revenue": 74280 } }, "comparables": [ { "airbnbId": "12345678", "name": "Modern 4BR near downtown", "listingUrl": "https://www.airbnb.com/rooms/12345678", "bedrooms": 4, "bathrooms": 3, "accommodates": 10, "annualRevenueUSD": 68420, "occupancyRatePercentage": 52, "averageDailyRateUSD": 361, "distanceMiles": 0.4, "photo_urls": [ "https://a0.muscache.com/im/pictures/example/cover.jpg", "https://a0.muscache.com/im/pictures/example/living-room.jpg", "https://a0.muscache.com/im/pictures/example/kitchen.jpg" ] } ], "downPaymentPercentage": 20, "mortgageLength": 30, "yearsRemainingOnMortgage": 30, "interestRatePercentage": 4, "propertyTaxPercentage": 0.75, "monthlyRevenueUSD": 5328.730331803278, "monthlyExpensesUSD": 1474.1603364983607, "monthlyTaxesUSD": 250, "yearOneRevenueUSD": 63944.76398163934, "yearOneOperatingIncomeUSD": 46254.83994365901, "yearOneMorgageAndTaxesUSD": 21324, "yearOneCashFlowUSD": 24930.83994365901, "yearOneCashOnCashPercentage": 24.86817214984141, "yearOneCapRatePercentage": 11.563709985914752, "yearOneReturnOnInvestmentPercentage": 63.78402823049849, "yearOnePrincipalPaydownUSD": 85635.31658640636, "yearOneAppreciationUSD": 12000, "totalCashInvestment": 100252, "ltrPerMonthUSD": 1500, "ltrMonthlyExpensesPercentage": 10 } }

POST/v1/external/analysis/create/arb

Utwórz analizę arbitrażu

Utwórz nową analizę arbitrażu (arbitraż najmu) dla nieruchomości. Używa tych samych wymaganych pól co analiza zakupu.

AI requests are slower than standard calls. Allow up to 90 seconds and set your client timeout to at least 300 seconds. AI work is time-bounded, so a request always returns a usable analysis rather than hanging.

AI-selected comparables are available for United States properties and require at least 8 usable listing photos for the address. Listing photos are gathered in the background when an analysis is created, so calling enhance shortly afterwards is faster than requesting comparables during creation.

When an AI step cannot complete, the response still returns 200 with the valid analysis and a warnings array explaining what was skipped. Check warnings rather than assuming AI results are always present.

Each AI function that completes adds $0.10 to the call. AI steps that fail or time out are never charged, and /enhance is billed only for the AI functions that completed — it carries no base call fee.

Parametry Lokalizacji (Warunkowe)

⚠️ Podaj lat I lng, LUB podaj fullAddress. Wymagana jest co najmniej jedna metoda.

latnumberwarunkowe

Współrzędna szerokości geograficznej (musi być podana z lng, jeśli fullAddress nie jest używany)(e.g., 27.7676)

lngnumberwarunkowe

Współrzędna długości geograficznej (musi być podana z lat, jeśli fullAddress nie jest używany)(e.g., -82.6403)

fullAddressstringwarunkowe

Pełny adres nieruchomości (może być używany zamiast współrzędnych lat/lng)(e.g., 4935 2nd Avenue North, St. Petersburg, FL 33703)

Parametry Wymagane

monthlyRentUSDnumberwymagane

Oczekiwany miesięczny czynsz w USD za wynajem długoterminowy(e.g., 2500)

bedroomsnumberwymagane

Liczba sypialni(e.g., 3)

bathroomsnumberwymagane

Liczba łazienek(e.g., 2)

accomodatesnumberwymagane

Liczba gości, których nieruchomość może pomieścić(e.g., 6)

Parametry Opcjonalne

purchasePriceUSDnumberopcjonalne

Cena zakupu w USD(e.g., 350000)

squareFeetnumberopcjonalne

Powierzchnia nieruchomości w stopach kwadratowych(e.g., 1500)

statestringopcjonalne

Nazwa stanu(e.g., Florida)

citystringopcjonalne

Nazwa miasta(e.g., St. Petersburg)

countystringopcjonalne

Nazwa hrabstwa(e.g., Pinellas County)

postalCodestringopcjonalne

Kod pocztowy(e.g., 33703)

countrystringopcjonalne

Nazwa kraju(e.g., United States)

streetstringopcjonalne

Nazwa ulicy(e.g., 2nd Avenue North)

streetNumberstringopcjonalne

Numer domu(e.g., 4935)

unitstringopcjonalne

Numer jednostki/mieszkania, jeżeli dotyczy

addAICompsbooleanopcjonalne

Select comparables with AI and apply the resulting revenue benchmark. US properties only, and requires at least 8 usable listing photos for the address.(e.g., true)

addAIExpenseEstimatesbooleanopcjonalne

Estimate operating expenses with AI instead of using category defaults(e.g., true)

Przykładowe zapytanie

curl -X POST \ https://atlas.bnbcalc.com/v1/external/analysis/create/arb \ -H "x-bnbcalc-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "lat": 27.7676, "lng": -82.6403, "bedrooms": 3, "bathrooms": 2, "accomodates": 6, "monthlyRentUSD": 2000 }'

Przykładowa odpowiedź

{ "success": true, "data": { "_id": "000000000000000000000000", "url": "https://www.bnbcalc.com/analysis/example-property/000000000000000000000000", "currency": "USD", "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48, "bedrooms": 4, "bathrooms": 4, "commonSpaces": 1, "accomodates": 12, "fullAddress": "4935 2nd Avenue North, St. Petersburg, FL 33703", "location": { "type": "Point", "coordinates": [ -82.6403, 27.7676 ] }, "revenue": { "p25": 48210, "p50": 58440, "p75": 63944.76398163934, "p90": 74280, "avg": 60310 }, "adr": { "p25": 214, "p50": 288, "p75": 364.73770491803276, "p90": 431, "avg": 318 }, "occupancy": { "p25": 0.38, "p50": 0.44, "p75": 0.48, "p90": 0.56, "avg": 0.46 }, "quartiles": { "25th_percentile": { "average_daily_rate": 214, "occupancy_rate": 38, "revenue": 48210 }, "50th_percentile": { "average_daily_rate": 288, "occupancy_rate": 44, "revenue": 58440 }, "75th_percentile": { "average_daily_rate": 364.73770491803276, "occupancy_rate": 48, "revenue": 63944.76398163934 }, "90th_percentile": { "average_daily_rate": 431, "occupancy_rate": 56, "revenue": 74280 } }, "comparables": [ { "airbnbId": "12345678", "name": "Modern 4BR near downtown", "listingUrl": "https://www.airbnb.com/rooms/12345678", "bedrooms": 4, "bathrooms": 3, "accommodates": 10, "annualRevenueUSD": 68420, "occupancyRatePercentage": 52, "averageDailyRateUSD": 361, "distanceMiles": 0.4, "photo_urls": [ "https://a0.muscache.com/im/pictures/example/cover.jpg", "https://a0.muscache.com/im/pictures/example/living-room.jpg", "https://a0.muscache.com/im/pictures/example/kitchen.jpg" ] } ], "monthlyRentUSD": 2000, "yearOneRentUSD": 24000, "monthlyRevenueUSD": 13432.825977452352, "monthlyExpensesUSD": 2263.6108575197586, "yearOneRevenueUSD": 161193.91172942822, "yearOneOperatingIncomeUSD": 134030.58143919113, "yearOneCashFlowUSD": 110030.58143919116, "yearOneCashOnCashPercentage": 1317.415965507557, "totalCashInvestment": 8352 } }

POST/v1/external/analysis/create/owned

Utwórz własną analizę

Utwórz nową analizę posiadanej nieruchomości. Wykorzystuje te same wymagane pola, co analiza zakupu.

AI requests are slower than standard calls. Allow up to 90 seconds and set your client timeout to at least 300 seconds. AI work is time-bounded, so a request always returns a usable analysis rather than hanging.

AI-selected comparables are available for United States properties and require at least 8 usable listing photos for the address. Listing photos are gathered in the background when an analysis is created, so calling enhance shortly afterwards is faster than requesting comparables during creation.

When an AI step cannot complete, the response still returns 200 with the valid analysis and a warnings array explaining what was skipped. Check warnings rather than assuming AI results are always present.

Each AI function that completes adds $0.10 to the call. AI steps that fail or time out are never charged, and /enhance is billed only for the AI functions that completed — it carries no base call fee.

Parametry Lokalizacji (Warunkowe)

⚠️ Podaj lat I lng, LUB podaj fullAddress. Wymagana jest co najmniej jedna metoda.

latnumberwarunkowe

Współrzędna szerokości geograficznej (musi być podana z lng, jeśli fullAddress nie jest używany)(e.g., 27.7676)

lngnumberwarunkowe

Współrzędna długości geograficznej (musi być podana z lat, jeśli fullAddress nie jest używany)(e.g., -82.6403)

fullAddressstringwarunkowe

Pełny adres nieruchomości (może być używany zamiast współrzędnych lat/lng)(e.g., 4935 2nd Avenue North, St. Petersburg, FL 33703)

Parametry Wymagane

purchasePriceUSDnumberwymagane

Cena zakupu w USD(e.g., 350000)

downPaymentPercentagenumberwymagane

Procentowy wkład własny (0-40)(e.g., 20)

interestRatePercentagenumberwymagane

Oprocentowanie w procentach (0-15)(e.g., 5.1)

mortgageLengthnumberwymagane

Okres kredytowania hipotecznego w latach (0-30)(e.g., 30)

yearsRemainingOnMortgagenumberwymagane

Pozostałe lata kredytu hipotecznego (Nie mogą być wyższe niż okres kredytu hipotecznego)

bedroomsnumberwymagane

Liczba sypialni(e.g., 3)

bathroomsnumberwymagane

Liczba łazienek(e.g., 2)

accomodatesnumberwymagane

Liczba gości, których nieruchomość może pomieścić(e.g., 6)

Parametry Opcjonalne

monthlyRentUSDnumberopcjonalne

Oczekiwany miesięczny czynsz w USD za wynajem długoterminowy(e.g., 2500)

squareFeetnumberopcjonalne

Powierzchnia nieruchomości w stopach kwadratowych(e.g., 1500)

statestringopcjonalne

Nazwa stanu(e.g., Florida)

citystringopcjonalne

Nazwa miasta(e.g., St. Petersburg)

countystringopcjonalne

Nazwa hrabstwa(e.g., Pinellas County)

postalCodestringopcjonalne

Kod pocztowy(e.g., 33703)

countrystringopcjonalne

Nazwa kraju(e.g., United States)

streetstringopcjonalne

Nazwa ulicy(e.g., 2nd Avenue North)

streetNumberstringopcjonalne

Numer domu(e.g., 4935)

unitstringopcjonalne

Numer jednostki/mieszkania, jeżeli dotyczy

addAICompsbooleanopcjonalne

Select comparables with AI and apply the resulting revenue benchmark. US properties only, and requires at least 8 usable listing photos for the address.(e.g., true)

addAIExpenseEstimatesbooleanopcjonalne

Estimate operating expenses with AI instead of using category defaults(e.g., true)

Przykładowe zapytanie

curl -X POST \ https://atlas.bnbcalc.com/v1/external/analysis/create/owned \ -H "x-bnbcalc-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "lat": 27.7676, "lng": -82.6403, "bedrooms": 3, "bathrooms": 2, "accomodates": 6, "purchasePriceUSD": 350000, "downPaymentPercentage": 20, "interestRatePercentage": 5.1, "mortgageLength": 30, "yearsRemainingOnMortgage": 30 }'

Przykładowa odpowiedź

{ "success": true, "data": { "_id": "000000000000000000000000", "url": "https://www.bnbcalc.com/analysis/example-property/000000000000000000000000", "currency": "USD", "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48, "bedrooms": 4, "bathrooms": 4, "commonSpaces": 1, "accomodates": 12, "fullAddress": "4935 2nd Avenue North, St. Petersburg, FL 33703", "location": { "type": "Point", "coordinates": [ -82.6403, 27.7676 ] }, "revenue": { "p25": 48210, "p50": 58440, "p75": 63944.76398163934, "p90": 74280, "avg": 60310 }, "adr": { "p25": 214, "p50": 288, "p75": 364.73770491803276, "p90": 431, "avg": 318 }, "occupancy": { "p25": 0.38, "p50": 0.44, "p75": 0.48, "p90": 0.56, "avg": 0.46 }, "quartiles": { "25th_percentile": { "average_daily_rate": 214, "occupancy_rate": 38, "revenue": 48210 }, "50th_percentile": { "average_daily_rate": 288, "occupancy_rate": 44, "revenue": 58440 }, "75th_percentile": { "average_daily_rate": 364.73770491803276, "occupancy_rate": 48, "revenue": 63944.76398163934 }, "90th_percentile": { "average_daily_rate": 431, "occupancy_rate": 56, "revenue": 74280 } }, "comparables": [ { "airbnbId": "12345678", "name": "Modern 4BR near downtown", "listingUrl": "https://www.airbnb.com/rooms/12345678", "bedrooms": 4, "bathrooms": 3, "accommodates": 10, "annualRevenueUSD": 68420, "occupancyRatePercentage": 52, "averageDailyRateUSD": 361, "distanceMiles": 0.4, "photo_urls": [ "https://a0.muscache.com/im/pictures/example/cover.jpg", "https://a0.muscache.com/im/pictures/example/living-room.jpg", "https://a0.muscache.com/im/pictures/example/kitchen.jpg" ] } ], "downPaymentPercentage": 20, "mortgageLength": 30, "yearsRemainingOnMortgage": 30, "interestRatePercentage": 5.1, "propertyTaxPercentage": 0.75, "monthlyRevenueUSD": 5328.730331803278, "monthlyExpensesUSD": 1474.1603364983607, "monthlyTaxesUSD": 250, "yearOneRevenueUSD": 63944.76398163934, "yearOneOperatingIncomeUSD": 46254.83994365901, "yearOneMorgageAndTaxesUSD": 21324, "yearOneCashFlowUSD": 24930.83994365901, "yearOneCashOnCashPercentage": 24.86817214984141, "yearOneCapRatePercentage": 11.563709985914752, "yearOneReturnOnInvestmentPercentage": 63.78402823049849, "yearOnePrincipalPaydownUSD": 85635.31658640636, "yearOneAppreciationUSD": 12000, "totalCashInvestment": 100252, "ltrPerMonthUSD": 1500, "ltrMonthlyExpensesPercentage": 10 } }

POST/v1/external/analysis/create/cohost

Utwórz analizę Cohost

Utwórz historię współgospodarzy

AI requests are slower than standard calls. Allow up to 90 seconds and set your client timeout to at least 300 seconds. AI work is time-bounded, so a request always returns a usable analysis rather than hanging.

AI-selected comparables are available for United States properties and require at least 8 usable listing photos for the address. Listing photos are gathered in the background when an analysis is created, so calling enhance shortly afterwards is faster than requesting comparables during creation.

When an AI step cannot complete, the response still returns 200 with the valid analysis and a warnings array explaining what was skipped. Check warnings rather than assuming AI results are always present.

Each AI function that completes adds $0.10 to the call. AI steps that fail or time out are never charged, and /enhance is billed only for the AI functions that completed — it carries no base call fee.

Parametry Lokalizacji (Warunkowe)

⚠️ Podaj lat I lng, LUB podaj fullAddress. Wymagana jest co najmniej jedna metoda.

latnumberwarunkowe

Współrzędna szerokości geograficznej (musi być podana z lng, jeśli fullAddress nie jest używany)(e.g., 27.7676)

lngnumberwarunkowe

Współrzędna długości geograficznej (musi być podana z lat, jeśli fullAddress nie jest używany)(e.g., -82.6403)

fullAddressstringwarunkowe

Pełny adres nieruchomości (może być używany zamiast współrzędnych lat/lng)(e.g., 4935 2nd Avenue North, St. Petersburg, FL 33703)

Parametry Wymagane

bedroomsnumberwymagane

Liczba sypialni(e.g., 3)

bathroomsnumberwymagane

Liczba łazienek(e.g., 2)

accomodatesnumberwymagane

Liczba gości, których nieruchomość może pomieścić(e.g., 6)

Parametry Opcjonalne

cohostCommissionPercentagenumberopcjonalne

Procent prowizji współgospodarza(e.g., 10)

squareFeetnumberopcjonalne

Powierzchnia nieruchomości w stopach kwadratowych(e.g., 1500)

statestringopcjonalne

Nazwa stanu(e.g., Florida)

citystringopcjonalne

Nazwa miasta(e.g., St. Petersburg)

countystringopcjonalne

Nazwa hrabstwa(e.g., Pinellas County)

postalCodestringopcjonalne

Kod pocztowy(e.g., 33703)

countrystringopcjonalne

Nazwa kraju(e.g., United States)

streetstringopcjonalne

Nazwa ulicy(e.g., 2nd Avenue North)

streetNumberstringopcjonalne

Numer domu(e.g., 4935)

unitstringopcjonalne

Numer jednostki/mieszkania, jeżeli dotyczy

addAICompsbooleanopcjonalne

Select comparables with AI and apply the resulting revenue benchmark. US properties only, and requires at least 8 usable listing photos for the address.(e.g., true)

addAIExpenseEstimatesbooleanopcjonalne

Estimate operating expenses with AI instead of using category defaults(e.g., true)

Przykładowe zapytanie

curl -X POST \ https://atlas.bnbcalc.com/v1/external/analysis/create/cohost \ -H "x-bnbcalc-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "lat": 27.7676, "lng": -82.6403, "bedrooms": 3, "bathrooms": 2, "accomodates": 6 }'

Przykładowa odpowiedź

{ "success": true, "data": { "_id": "000000000000000000000000", "url": "https://www.bnbcalc.com/analysis/example-property/000000000000000000000000", "currency": "USD", "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48, "bedrooms": 4, "bathrooms": 4, "commonSpaces": 1, "accomodates": 12, "fullAddress": "4935 2nd Avenue North, St. Petersburg, FL 33703", "location": { "type": "Point", "coordinates": [ -82.6403, 27.7676 ] }, "revenue": { "p25": 48210, "p50": 58440, "p75": 63944.76398163934, "p90": 74280, "avg": 60310 }, "adr": { "p25": 214, "p50": 288, "p75": 364.73770491803276, "p90": 431, "avg": 318 }, "occupancy": { "p25": 0.38, "p50": 0.44, "p75": 0.48, "p90": 0.56, "avg": 0.46 }, "quartiles": { "25th_percentile": { "average_daily_rate": 214, "occupancy_rate": 38, "revenue": 48210 }, "50th_percentile": { "average_daily_rate": 288, "occupancy_rate": 44, "revenue": 58440 }, "75th_percentile": { "average_daily_rate": 364.73770491803276, "occupancy_rate": 48, "revenue": 63944.76398163934 }, "90th_percentile": { "average_daily_rate": 431, "occupancy_rate": 56, "revenue": 74280 } }, "comparables": [ { "airbnbId": "12345678", "name": "Modern 4BR near downtown", "listingUrl": "https://www.airbnb.com/rooms/12345678", "bedrooms": 4, "bathrooms": 3, "accommodates": 10, "annualRevenueUSD": 68420, "occupancyRatePercentage": 52, "averageDailyRateUSD": 361, "distanceMiles": 0.4, "photo_urls": [ "https://a0.muscache.com/im/pictures/example/cover.jpg", "https://a0.muscache.com/im/pictures/example/living-room.jpg", "https://a0.muscache.com/im/pictures/example/kitchen.jpg" ] } ], "yearOneRevenueUSD": 161193.91172942825, "yearOneCohostReturnUSD": 116059.61644518835, "yearOneCohostCommissionUSD": 32238.78234588565 } }

POST/v1/external/analysis/enhance

Enhance Analysis with AI

Runs AI enrichment against an analysis you already created and returns the recalculated analysis. Use this when you want AI-selected comparables or AI expense estimates applied after the fact, or when you would rather keep the original create call fast.

AI requests are slower than standard calls. Allow up to 90 seconds and set your client timeout to at least 300 seconds. AI work is time-bounded, so a request always returns a usable analysis rather than hanging.

AI-selected comparables are available for United States properties and require at least 8 usable listing photos for the address. Listing photos are gathered in the background when an analysis is created, so calling enhance shortly afterwards is faster than requesting comparables during creation.

When an AI step cannot complete, the response still returns 200 with the valid analysis and a warnings array explaining what was skipped. Check warnings rather than assuming AI results are always present.

Each AI function that completes adds $0.10 to the call. AI steps that fail or time out are never charged, and /enhance is billed only for the AI functions that completed — it carries no base call fee.

Jeśli wszystkie żądane funkcje AI zawiodą, wywołanie jest bezpłatne, a odpowiedź zawiera tylko warnings — bez data. Zapisana analiza pozostaje wtedy niezmieniona, więc kopia, którą już masz, jest nadal aktualna. Endpointy tworzące zawsze zwracają data, ponieważ ich opłata bazowa pokrywa sam raport.

Parametry Wymagane

analysisIdstringwymagane

The _id of an analysis previously created with your API key(e.g., 000000000000000000000000)

Parametry Opcjonalne

addAICompsbooleanopcjonalne

Select comparables with AI and apply the resulting revenue benchmark. US properties only, and requires at least 8 usable listing photos for the address.(e.g., true)

addAIExpenseEstimatesbooleanopcjonalne

Estimate operating expenses with AI instead of using category defaults(e.g., true)

Przykładowe zapytanie

curl -X POST \ https://atlas.bnbcalc.com/v1/external/analysis/enhance \ -H "x-bnbcalc-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "analysisId": "000000000000000000000000", "addAIComps": true, "addAIExpenseEstimates": true }'

Przykładowa odpowiedź

{ "success": true, "data": { "_id": "000000000000000000000000", "url": "https://www.bnbcalc.com/analysis/example-property/000000000000000000000000", "currency": "USD", "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48, "bedrooms": 4, "bathrooms": 4, "commonSpaces": 1, "accomodates": 12, "fullAddress": "4935 2nd Avenue North, St. Petersburg, FL 33703", "location": { "type": "Point", "coordinates": [ -82.6403, 27.7676 ] }, "revenue": { "p25": 48210, "p50": 58440, "p75": 63944.76398163934, "p90": 74280, "avg": 60310 }, "adr": { "p25": 214, "p50": 288, "p75": 364.73770491803276, "p90": 431, "avg": 318 }, "occupancy": { "p25": 0.38, "p50": 0.44, "p75": 0.48, "p90": 0.56, "avg": 0.46 }, "quartiles": { "25th_percentile": { "average_daily_rate": 214, "occupancy_rate": 38, "revenue": 48210 }, "50th_percentile": { "average_daily_rate": 288, "occupancy_rate": 44, "revenue": 58440 }, "75th_percentile": { "average_daily_rate": 364.73770491803276, "occupancy_rate": 48, "revenue": 63944.76398163934 }, "90th_percentile": { "average_daily_rate": 431, "occupancy_rate": 56, "revenue": 74280 } }, "comparables": [ { "airbnbId": "12345678", "name": "Modern 4BR near downtown", "listingUrl": "https://www.airbnb.com/rooms/12345678", "bedrooms": 4, "bathrooms": 3, "accommodates": 10, "annualRevenueUSD": 68420, "occupancyRatePercentage": 52, "averageDailyRateUSD": 361, "distanceMiles": 0.4, "photo_urls": [ "https://a0.muscache.com/im/pictures/example/cover.jpg", "https://a0.muscache.com/im/pictures/example/living-room.jpg", "https://a0.muscache.com/im/pictures/example/kitchen.jpg" ] } ], "propertyTaxPercentage": 0.75, "internetAndTVUSD": 90, "waterUSD": 85, "electricUSD": 180, "propertyInsuranceUSD": 210, "HOAUSD": 0, "repairsUSD": 125, "suppliesUSD": 60, "cleaningCostPercentage": 8.5, "monthlyRevenueUSD": 5328.730331803278, "monthlyExpensesUSD": 1474.1603364983607, "yearOneRevenueUSD": 63944.76398163934, "yearOneCashFlowUSD": 24930.83994365901, "yearOneCashOnCashPercentage": 24.86817214984141 }, "aiComps": { "selectedCompIds": [ "12345678", "23456789" ], "benchmark": { "annualRevenueUSD": 63944.76398163934, "ratePerNightUSD": 364.73770491803276, "occupancyRatePercentage": 48 }, "rationale": "Selected comparables matching bedroom count, pool and waterfront access.", "warnings": [], "applied": true } }

Zachowanie wzbogacania AI

Wzbogacanie AI jest opcjonalne dla każdego żądania za pomocą addAIComps i addAIExpenseEstimates, a każdy krok AI ma ograniczenie czasowe i w przypadku niepowodzenia nie przerywa działania (fails open). Żądanie z włączonym AI nadal zwraca 200 z pełną, całkowicie przeliczoną analizą; wszystko, co nie mogło zostać wykonane, jest raportowane w tablicy warnings na najwyższym poziomie zamiast powodować błąd.

Limity czasu i ograniczenia liczby żądań

Prace AI mają budżet 90 sekund liczony od rozpoczęcia żądania, a nie od momentu rozpoczęcia kroku AI — geokodowanie i tworzenie analizy wliczają się do tego budżetu. Gdy budżet się wyczerpie, analiza jest zwracana bez niedokończonego kroku AI i z ostrzeżeniem o przekroczeniu czasu.

Ustaw timeout klienta na co najmniej 300 sekund. Większość wywołań AI zwraca odpowiedź znacznie szybciej, ale klient, który przerywa wcześniej niż termin serwera, powoduje, że rozliczalna, ukończona analiza staje się utraconą odpowiedzią.

Wywołanie modelu wymaga co najmniej 45 sekund pozostałego budżetu, aby się rozpocząć. Żądanie, które zużyło większość budżetu czekając na zdjęcia oferty, zwraca ai_comps_timed_out bez wywoływania modelu, zamiast rozpoczynać uruchomienie, którego nie dałoby się dokończyć.

Żądania z włączoną flagą AI są ograniczone per klucz API: 10 na minutę, maksymalnie 2 równocześnie. Przekroczenie któregokolwiek z limitów powoduje zwrot 429 z nagłówkiem Retry-After, a nagłówki X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset są ustawiane dla każdego żądania AI. Wywołania bez flagi AI nie podlegają temu limitowi.

Aby ponowić pominięty krok AI, wywołaj POST /v1/external/analysis/enhance z tym samym analysisId zamiast tworzyć analizę od nowa. Enhance nie ma podstawowej opłaty za wywołanie, więc ponowienie kosztuje tylko te funkcje AI, które się wykonają.

Ostrzeżenia w odpowiedzi

Odpowiedź 200 może nadal zawierać tablicę warnings. Traktuj ją jako zapis tego, co nie zostało uruchomione i sprawdź ją zanim założysz, że wyniki AI są dostępne. Każdy krok tu raportowany został pominięty, a pominięte kroki nigdy nie są rozliczane.

ai_comps_requires_user_scoped_api_key

AI comps wymagają klucza API powiązanego z kontem użytkownika. Nie udało się przypisać klucza do właściciela, więc comp selector nigdy się nie uruchomił.


ai_comps_unavailable_for_property

AI comps są dostępne tylko dla nieruchomości w Stanach Zjednoczonych, a przechowywana analiza znajduje się poza tym zakresem.


ai_comps_photos_not_ready

Użyteczne zdjęcia oferty dla adresu nie były gotowe na czas — nie znaleziono żadnych, znaleziono za mało nadających się lub galeria nadal przetwarzała zdjęcia, gdy budżet się skończył. Zdjęcia są zbierane w tle po utworzeniu analizy, więc ponowna próba z /enhance wkrótce po utworzeniu zwykle się uda.


ai_comps_timed_out

Budżet AI wyczerpał się zanim model odpowiedział, więc zachowano deterministyczne porównania i prognozę przychodów.


ai_comps_benchmark_fallback

Model się uruchomił, ale wybrał zbyt mało porównywalnych ofert, by utworzyć benchmark, więc zachowano istniejącą prognozę przychodów. Nic nie zostało zapisane w analizie i krok nie został obciążony.


ai_comps_model_unavailable

Dostawca modelu był niedostępny. To zjawisko przejściowe — spróbuj ponownie z /enhance.


ai_comps_already_applied

Ta analiza ma już prawidłowy benchmark AI, więc nic nie zostało uruchomione ponownie ani naliczone. Edycja nieruchomości unieważnia go, a kolejne wywołanie wykona się naprawdę.


ai_comps_run_in_progress

Inne uruchomienie AI comps już pracuje nad tą analizą. Poczekaj przed ponowną próbą — uruchomienie utrzymuje blokadę do 10 minut.


ai_comps_analysis_changed

Analiza została zmieniona w trakcie działania modelu, więc benchmark nie został zapisany zamiast nadpisać nowsze wartości. Spróbuj ponownie z /enhance.


ai_comps_forbidden

Analiza nie została utworzona tym kluczem API, więc AI comps nie mogły zostać na niej uruchomione.


ai_comps_failed

AI comps nie mogły zostać ukończone z innego powodu. Sama analiza jest ważna i niezmieniona.


ai_expense_estimates_timed_out

Budżet AI wyczerpał się zanim estimator kosztów zwrócił wynik, więc zachowano domyślne koszty operacyjne.


ai_expense_estimates_no_proposals

Estimator nie wygenerował propozycji kosztów dla tej nieruchomości, więc żaden koszt operacyjny nie został zmieniony.


ai_expense_estimates_stale_preview

Analiza zmieniła się w trakcie przygotowywania estymatu, więc estymat został odrzucony zamiast zostać zastosowany do nieaktualnych danych. Spróbuj ponownie z /enhance.


ai_expense_estimates_model_unavailable

Dostawca modelu był niedostępny. To zjawisko przejściowe — spróbuj ponownie z /enhance.


ai_expense_estimates_already_applied

Ta analiza ma już koszty oszacowane przez AI, więc nic nie zostało uruchomione ponownie ani naliczone.


ai_expense_estimates_unavailable_for_property

Żadne pole kosztów operacyjnych w tej analizie nie kwalifikowało się do szacowania przez AI, więc zachowano jej domyślne koszty.


ai_expense_estimates_forbidden

Analiza nie została utworzona tym kluczem API, więc szacunki kosztów AI nie mogły zostać na niej uruchomione.


ai_expense_estimates_failed

Szacunki kosztów AI nie mogły zostać zastosowane. Analiza zachowuje swoje domyślne koszty operacyjne.

Dopasowuj na podstawie prefiksów ai_comps_ i ai_expense_estimates_, a nie dokładnego ciągu znaków: każdy inny kod z tymi prefiksami oznacza, że dany krok nie powiódł się, nie został zastosowany i nie został obciążony.

Przykładowa odpowiedź

{ "success": true, "warnings": [ "ai_comps_photos_not_ready" ], "data": { "_id": "000000000000000000000000", "monthlyRevenueUSD": 5328.730331803278, "monthlyExpensesUSD": 1474.1603364983607 } }

aiComps.warnings

Zagnieżdżona tablica aiComps.warnings to inny sygnał niż tablica na najwyższym poziomie: opisuje jakość puli porównywalnych ofert, na której pracował model, a nie krok, który się nie powiódł. Sprawdź aiComps.applied, aby dowiedzieć się, czy benchmark AI został faktycznie zapisany w analizie.

thin_benchmark_pool

Benchmark opierał się na mniej niż czterech porównaniach, więc bazuje na małej próbie.


no_benchmark_comps

Żadne porównanie nie przeszło selekcji. Benchmark jest pusty, a prognoza przychodów pozostała niezmieniona.


ai_benchmark_fallback_to_projected_revenue

Wybrano mniej niż trzy porównania, więc zamiast benchmarku AI zachowano istniejącą prognozę przychodów. Jest to ten sam wynik zgłaszany na najwyższym poziomie jako ai_comps_benchmark_fallback.


minimum_benchmark_pool_backfill

Pula benchmarkowa została uzupełniona porównaniami, których model nie wybrał, aby osiągnąć minimalną liczbę.

Rozliczanie przy częściowych operacjach AI

Każda funkcja AI, która zostanie wykonana, dolicza $0.10 do opłaty za wywołanie. Kroki, które przekroczyły czas, nie powiodły się lub wróciły do istniejącej prognozy, nie są obciążane — aiComps.applied ustawione na false oznacza, że AI comps nie zostały rozliczone — a wywołanie /enhance, w którym każdy żądany krok został pominięty, w ogóle nie jest obciążane.


Kody błędów

API BNBCalc używa standardowych kodów statusu odpowiedzi HTTP, aby wskazać sukces lub porażkę żądań API. Pomyślnie utworzone raporty zwracają kody 2xx, podczas gdy błędy zwracają kody 4xx lub 5xx z dodatkowymi informacjami o błędzie w treści odpowiedzi. Będziesz obciążany tylko za pomyślnie utworzone raporty.

200

Sukces


400

Błędne żądanie - Nieprawidłowe parametry


401

Nieautoryzowany - Nieprawidłowy klucz API


403

Forbidden - The analysis does not belong to your API key, or AI estimates are disabled


404

Not Found - No analysis matches the supplied analysisId


409

Conflict - An AI run is already in progress for this analysis, or its values changed mid-request


429

Zbyt wiele żądań - Przekroczono limit trasy API zewnętrznego


500

Wewnętrzny błąd serwera


502

Bad Gateway - The AI model returned an unusable response


503

Service Unavailable - The AI model is temporarily unavailable