Hostaway API · developer reference · verified June 2026

Can you pull turnover photos from the Hostaway API?

If you are wiring AI damage detection onto your turnovers, the first question is whether you can even get the cleaner's photos out of Hostaway programmatically. We read Hostaway's own API source to find out. The answer is more specific than a yes or no.

The answerNot via the public API

No, not through the documented public API. As of June 2026, Hostaway does not give you a way to download the before/after photos a cleaner attaches to a turnover task. The task object at GET /v1/tasks contains only metadata: status, assignee, timing, checklist items, cost. There is no attachments, photos, files, or images field, and no separate task-attachment endpoint. File attachments do exist in the API, but only on conversation messages, where each carries a URL that expires after seven days. The result: there is no supported way to bulk-export turnover photos from Hostaway for AI review. Operators who run automated photo inspection capture the images in a system built for it and feed an AI layer directly, rather than scraping the PMS.

01What the API actually returns for a task

According to Hostaway's public API reference, the platform shipped task endpoints in August 2023. You authenticate, then call GET /v1/tasks for a list or GET /v1/tasks/{taskId} for one task. Here is the full task object as published in that reference, with one thing worth noticing.

GET/v1/tasks/{taskId}task object · Hostaway API ref
{
  "id": 1,
  "listingMapId": null,
  "reservationId": null,
  "assigneeUserId": null,
  "supervisorUserId": null,
  "title": "Departure clean",
  "description": null,
  "status": "completed",        // pending | confirmed | inProgress | completed | cancelled
  "canStartFromEvent": "departure",
  "completedAt": "2026-06-14 11:40:00",
  "resolutionNote": null,
  "feedbackScore": null,
  "cost": null,
  "checklistItems": [],
  "customFieldValue": [],
  "categoriesMap": null          // category codes when set: 1 cleaning, 2 maintenance, 3 check-in, 4 check-out...
  // no "attachments", "photos", "files", or "images" field exists on this object
}

That is the whole shape (trimmed for length; the real object adds more timing and ranking fields, none of them media). According to Hostaway's published task schema, a task tells you that a clean happened, who did it, and when, but never what it looked like. The checklistItems array holds checklist line items, not photos, and in the documented examples it is empty. There is no GET /v1/tasks/{id}/attachments route anywhere in the reference.

02The capability matrix

Here is what the Hostaway API does and does not hand you, mapped to what an operator building an inspection pipeline actually wants.

What you wantExposed via API?Where it lives
Turnover / cleaning task metadata (status, assignee, timing)YesGET /v1/tasks
Task completion status and timestampYestask.status, task.completedAt
Checklist line items on a taskYestask.checklistItems[]
Before/after photos a cleaner uploaded to a taskNonot in task object; no task-attachment route
A webhook when a task is completedNoonly reservation + message webhooks
File attachments, generallyPartialconversation messages only, includeResources=1
Listing photos (the marketing gallery)Yeslisting image object (guest-facing, not condition)

The last row is the trap worth naming. Hostaway absolutely exposes photos through its listing image endpoints, so a quick skim of the docs can make it look solved. But those are the staged marketing photos you show guests on Airbnb, with caption, vrboCaption, and sortOrder fields. They have nothing to do with the condition of the unit after a checkout.

03The one indirect path, and why it is not an export

The API does model file attachments. According to Hostaway's published attachment-object schema, they appear in the attachments array on conversation messages, the guest-messaging surface. To populate it you must add ?includeResources=1 to the request, otherwise nested resources come back empty. Each attachment looks like this:

idIdentifier of the attachment.
taskIdIdentifier of a task object, if the attachment belongs to a task. This is the only thread in the entire API that links an attachment to a task.
conversationMessageIdThe message the attachment is attached to.
urlDownload URL. For private attachments (isPublic = 0) this is a temporary link.
isImageWhether the attachment is an image.
isPublicWhether the file is publicly accessible. 0 means private.

That taskId field is genuinely interesting: it proves Hostaway's data model can associate a file with a task. But notice what is missing. There is no endpoint that says "give me every attachment for task 1234." You would have to walk conversations, pull messages with includeResources=1, and filter attachments by taskId yourself, and only the attachments that happen to ride along a conversation message would surface at all. That is a messaging feature, not a turnover-photo pipeline.

The seven-day clock

There is one more catch for anyone who thinks they can cache their way around this. For private attachments, Hostaway's documentation states the url is a temporary link that expires seven days after it is generated. You cannot store the URL; once it lapses you have to re-fetch the message to mint a fresh one. If you want to keep the file, you have to download the bytes and store them on your side before the link dies.

04For completeness: auth and the task list call

None of the above means the API is weak. It is well-built for what it covers. Authentication is OAuth2 client-credentials: you exchange your Hostaway account ID and API key for a bearer token that is valid for 24 months.

POST/v1/accessTokensget a bearer token
# mint a token (valid 24 months)
curl -X POST https://api.hostaway.com/v1/accessTokens \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_ACCOUNT_ID" \
  -d "client_secret=YOUR_API_KEY" \
  -d "scope=general"

# then list completed tasks
curl https://api.hostaway.com/v1/tasks?status=completed \
  -H "Authorization: Bearer YOUR_TOKEN"

So a realistic, fully-supported Hostaway integration can tell you that the departure clean for a reservation is marked complete, who completed it, and when. It simply cannot tell you whether the unit is actually in good condition, because the photographic evidence never crosses the API boundary.

05So how do operators get turnover photos into AI?

If the goal is automated damage detection on every turnover, the practical answer is to stop treating the PMS as the photo source and capture the images where they can actually flow into an AI step.

1

Capture condition photos in a system built for inspection

Breezeway and Turno are designed around required-photo turnover and inspection tasks, so the documentation is structured and consistent rather than scattered across guest threads. Breezeway in particular has become the system of record for turnover photos at many mid-to-large operations, which is exactly why a consistent capture standard matters. See our turnover inspection and documentation checklist for what to shoot.

2

Trigger your pipeline off the reservation lifecycle

Hostaway does expose reservation and unified webhooks, and every reservation carries its departure date. Use those to time your review around checkout, then collect the photos from wherever they were captured. You are using Hostaway for the signal it is good at (the booking lifecycle), not for media it does not serve.

3

Send the photos to a tool that ingests turnover documentation directly

Rather than rebuilding photo extraction, deduplication, and baseline comparison from scratch against a PMS that was never meant to export condition media, route the captured photos to a layer purpose-built to read them. That is the job an inspection-intelligence tool does.

This is exactly the gap RapidEye was built to close

RapidEye is AI inspection intelligence for vacation rental managers. It ingests the turnover documentation your cleaners already capture and runs computer-vision damage detection over it, comparing each turnover against the property's own baseline to surface new scratches, stains, and missing items. The point is that you do not have to solve the messy photo-plumbing problem, including the parts a PMS API was never designed to serve, to get AI eyes on every checkout.

If you are evaluating whether this fits your operation, start with is there AI that reviews Airbnb turnover photos or how to review turnover photos at scale.

06Will this change?

Possibly, and the API itself hints at it. The presence of a taskId on the attachment object means Hostaway's data model already links files to tasks; exposing a clean task-attachment endpoint would be a natural extension. Until Hostaway publishes one, treat turnover task photos as not retrievable through the public API. If you are scoping a build that depends on it, confirm current behavior with Hostaway's API or partnerships team rather than assuming, because undocumented behavior can change without notice. Everything on this page reflects Hostaway's published API reference as of June 14, 2026.

Sources

  1. Hostaway Public API Reference – the live, authoritative documentation for authentication, the task object, the attachment object, webhooks, and listing images.https://api.hostaway.com/documentation
  2. Hostaway/api – the open-source repository that generates the API reference. Task object, attachment object (including the taskId field and seven-day private-URL expiry), and the OAuth2 client-credentials flow with 24-month token TTL were read directly from this source.https://github.com/Hostaway/api
  3. Tasks: Create, Manage & Assign Tasks – Hostaway Support (covers in-app task photo uploads by cleaners).https://support.hostaway.com/hc/en-us/articles/360036506093-Tasks-Create-Manage-Assign-Tasks
  4. Using Hostaway Webhooks – Hostaway Support (reservation and conversation-message webhook events).https://support.hostaway.com/hc/en-us/articles/360009022653-Using-Hostaway-Webhooks

Last verified: June 14, 2026, against Hostaway's published public API reference and its open-source documentation repository. APIs change; if a task-photo capability ships after this date, this page will be out of date until updated. This is an independent technical reference and is not affiliated with or endorsed by Hostaway.