Welcome
The Taxis uploader API provides endpoints for uploading reservations to Government’s Short Term Rental Registry and filing the Climate Crisis Resilience Fee Statement (TAKK).OpenAPI Specification
View the complete OpenAPI specification
Overview
This API allows you to:- Upload short-term rental records
- Query an STR task’s upload status
- Upload Climate Crisis Resilience Fee Statement
- Query a TAKK statement’s upload task status
Authentication
All API endpoints require JWT Bearer token authentication. The applicable roles for this API are:str-uploader, takk-uploader, client-manager.
How to get a JWT token:
- Use your client ID and client secret obtained from your administrator
- Send a POST request to
/auth/tokenwith your credentials - Use the returned
access_tokenin the Authorization header:Bearer <access_token>
Example with curl:
Using the token:
Token refresh:
When your access token expires, use the refresh token:{server} with your actual server URL (e.g., https://api.yourdomain.com or http://localhost:8080 for local development).
Response Formats
All responses are in JSON format. Successful responses use HTTP 2xx status codes:- 200: Successful operation with response body
- 201: Resource created
- 202: Request accepted for processing
- 204: Successful operation with no response body
Error Responses
Unsuccessful requests return a response with an error-indicating status code, and a json object with a ‘errorMessage’ and requestId field:Error Values
When upload tasks fail, the system provides specific error classifications through theerrorValue field. These help identify the cause of the failure:
Retryable vs. non-retryable
Uploads are retried up to 8 times with exponential backoff for retryable errors. Non-retryable errors fail immediately on the first attempt so the system doesn’t waste cycles on a guaranteed failure. Non-retryable (fail fast):duplicate_declaration, tax_id_not_found, invalid_guest_name, not_a_short_term_booking, invalid_end_date, failed_to_authenticate, property_discontinued, property_cessation_date_exceeded, field_value_too_long.
Retryable (up to 8 attempts): timed_out, failed_to_navigate, concurrent_modification, property_not_finalized, session_expired, portal_ajax_stuck, internal_error, unknown.