API reference

Read-only JSON over HTTPS. No authentication. CORS is open, so you can call it from a browser.

Conventions

Base URL: https://takehome.cortile.com/api/v1. An OpenAPI 3 spec is available.

Lists and pagination

List endpoints return { data: T[], nextCursor: string | null }. To get the next page, pass nextCursor back as cursor. When nextCursor is null you have reached the last page. Use limit to set the page size: the default is 25 and the maximum is 100.

curl "https://takehome.cortile.com/api/v1/packages?limit=100"

{
  "data": [ { "id": "pkg_...", ... } ],
  "nextCursor": "bzoxMDA"
}

Single items

GET /api/v1/<resource>/<id> returns { data: T }, or a 404 if the id does not exist.

Filtering

Most lists accept filters as query parameters, listed under each resource. Filters match exactly. Resources with a timestamp also accept since (inclusive) and until (exclusive) as ISO 8601 values.

Times

All timestamps are ISO 8601 in UTC. Front-desk opening hours are in each community's local time, given by its timezone. The data is a snapshot taken at 2026-09-30T08:00:00.000Z, so bookings after that time are future bookings.

Errors

Errors return a non-2xx status and { error: { code: string, message: string } }. The API runs on modest infrastructure, so expect the occasional 500 or 503 and the occasional slow response. A 503 includes a Retry-After header.

Communities

The buildings we manage. Each community has its own front desk with its own opening hours.

GET/api/v1/communities

GET/api/v1/communities/:id

Sorted by name, A to Z.

Fields

FieldTypeDescription
idstringUnique ID, prefixed com_.
namestringCommunity name.
citystringCity.
addressstringStreet address.
timezonestringIANA timezone the community operates in.
blocksstring[]Block names within the community.
frontDeskHoursobjectWhen the front desk is staffed, in the community timezone.

Homes

Individual flats within a community.

GET/api/v1/homes

GET/api/v1/homes/:id

Sorted by unit, A to Z.

Filters

ParameterTypeDescription
communityIdstringOnly homes in this community.
blockstringOnly homes in this block.

Fields

FieldTypeDescription
idstringUnique ID, prefixed hom_.
communityIdstringCommunity the home belongs to.
blockstringBlock name.
floorintegerFloor number.
unitstringUnit label as residents know it.
bedroomsintegerNumber of bedrooms.

Residents

People who live, or have lived, in a home.

GET/api/v1/residents

GET/api/v1/residents/:id

Sorted by id.

Filters

ParameterTypeDescription
communityIdstringOnly residents of this community.
homeIdstringOnly residents of this home.

Fields

FieldTypeDescription
idstringUnique ID, prefixed res_.
communityIdstringCommunity the resident lives in.
homeIdstringHome the resident lives in.
firstNamestring | nullFirst name, if known.
lastNamestring | nullLast name, if known.
emailstringEmail address.
phonestring | nullPhone number, if known.
moveInDatestring (YYYY-MM-DD)Date the resident moved in.
moveOutDatestring (YYYY-MM-DD) | nullDate the resident moved out, or null if they still live there.

Packages

Parcels received by the front desk on behalf of residents.

GET/api/v1/packages

GET/api/v1/packages/:id

Sorted by receivedAt, newest first. since and until filter on receivedAt.

Filters

ParameterTypeDescription
communityIdstringOnly packages at this community.
residentIdstringOnly packages for this resident.
statusstringOnly packages with this status.

Fields

FieldTypeDescription
idstringUnique ID, prefixed pkg_.
communityIdstringCommunity where the package was received.
residentIdstring | nullResident the package is for. null if the front desk has not matched it to a resident.
carrierstringDelivery company.
size'SMALL' | 'MEDIUM' | 'LARGE'Rough size of the parcel.
status'DELIVERED' | 'COLLECTED' | 'MISSING'DELIVERED means it is at the desk waiting to be collected.
receivedAtstring (ISO 8601)When the front desk received the package.
collectedAtstring (ISO 8601) | nullWhen the resident collected it, or null.

Maintenance tickets

Repair and maintenance requests, raised by residents or staff.

GET/api/v1/tickets

GET/api/v1/tickets/:id

Sorted by createdAt, newest first. since and until filter on createdAt.

Filters

ParameterTypeDescription
communityIdstringOnly tickets at this community.
homeIdstringOnly tickets for this home.
categorystringOnly tickets in this category.
statusstringOnly tickets with this status.

Fields

FieldTypeDescription
idstringUnique ID, prefixed tkt_.
communityIdstringCommunity the ticket is for.
homeIdstring | nullHome the ticket is about. null for communal areas.
reportedByResidentIdstring | nullResident who raised it. null if raised by staff.
category'LEAK' | 'HEATING' | 'ELECTRICAL' | 'LIFT' | 'DOOR_ACCESS' | 'PEST' | 'NOISE' | 'APPLIANCE' | 'OTHER'What kind of problem it is.
priority'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT'Priority set when the ticket was raised.
status'OPEN' | 'IN_PROGRESS' | 'RESOLVED'Current status.
titlestringShort summary, as written by the reporter.
descriptionstringFull description, as written by the reporter.
createdAtstring (ISO 8601)When the ticket was raised.
firstResponseAtstring (ISO 8601) | nullWhen a member of staff first responded, or null.
resolvedAtstring (ISO 8601) | nullWhen the ticket was marked as resolved, or null.

Visitors

People who visited a home, as recorded by the door entry system.

GET/api/v1/visitors

GET/api/v1/visitors/:id

Sorted by arrivedAt, newest first. since and until filter on arrivedAt.

Filters

ParameterTypeDescription
communityIdstringOnly visitors to this community.
homeIdstringOnly visitors to this home.

Fields

FieldTypeDescription
idstringUnique ID, prefixed vis_.
communityIdstringCommunity visited.
homeIdstringHome visited.
visitorNamestringName given by the visitor.
purpose'GUEST' | 'CONTRACTOR' | 'VIEWING' | 'CARER' | 'OTHER'Reason for the visit.
preRegisteredbooleanWhether the resident registered the visitor in advance.
signedInAtDeskbooleanWhether the visitor was signed in by the front desk.
arrivedAtstring (ISO 8601)When the visitor arrived.
departedAtstring (ISO 8601) | nullWhen the visitor left, or null if no departure was recorded.

Amenities

Shared facilities residents can book.

GET/api/v1/amenities

GET/api/v1/amenities/:id

Sorted by name, A to Z.

Filters

ParameterTypeDescription
communityIdstringOnly amenities at this community.

Fields

FieldTypeDescription
idstringUnique ID, prefixed amn_.
communityIdstringCommunity the amenity is in.
namestringDisplay name.
type'GYM' | 'GUEST_SUITE' | 'MEETING_ROOM' | 'ROOF_TERRACE' | 'CINEMA_ROOM'Kind of amenity.
capacityintegerMaximum people (or, for a guest suite, concurrent bookings).

Amenity bookings

Bookings of shared facilities, including future bookings already made.

GET/api/v1/bookings

GET/api/v1/bookings/:id

Sorted by startsAt, latest first. since and until filter on startsAt.

Filters

ParameterTypeDescription
communityIdstringOnly bookings at this community.
amenityIdstringOnly bookings of this amenity.
residentIdstringOnly bookings made by this resident.

Fields

FieldTypeDescription
idstringUnique ID, prefixed bkg_.
communityIdstringCommunity of the amenity.
amenityIdstringAmenity booked.
residentIdstringResident who made the booking.
status'CONFIRMED' | 'CANCELLED'Booking status.
startsAtstring (ISO 8601)Start of the booking.
endsAtstring (ISO 8601)End of the booking.
createdAtstring (ISO 8601)When the booking was made.
checkedInAtstring (ISO 8601) | nullWhen the resident checked in, or null.

Community posts

Posts on each community's resident noticeboard.

GET/api/v1/posts

GET/api/v1/posts/:id

Sorted by createdAt, newest first. since and until filter on createdAt.

Filters

ParameterTypeDescription
communityIdstringOnly posts in this community.

Fields

FieldTypeDescription
idstringUnique ID, prefixed pst_.
communityIdstringCommunity the post was made in.
authorResidentIdstringResident who wrote the post.
bodystringPost text.
reactionCountintegerNumber of reactions.
replyCountintegerNumber of replies.
createdAtstring (ISO 8601)When the post was made.

Feedback

Satisfaction scores from residents, either about a specific ticket or about the building in general.

GET/api/v1/feedback

GET/api/v1/feedback/:id

Sorted by createdAt, newest first. since and until filter on createdAt.

Filters

ParameterTypeDescription
communityIdstringOnly feedback for this community.
ticketIdstringOnly feedback about this ticket.

Fields

FieldTypeDescription
idstringUnique ID, prefixed fdb_.
communityIdstringCommunity the feedback is about.
residentIdstringResident who left the feedback.
ticketIdstring | nullTicket the feedback is about, or null for general feedback.
scoreintegerScore from 1 (very unhappy) to 5 (very happy).
commentstring | nullOptional comment.
createdAtstring (ISO 8601)When the feedback was left.

Package summary deprecated

Package counts per community, precomputed once a day so dashboards do not have to page through every package.

GET/api/v1/packages/summary

Deprecated. Kept for older integrations and will be removed. Prefer /api/v1/packages for live data.

FieldTypeDescription
generatedAtstring (ISO 8601)When the counts were computed.
communities[].communityIdstringCommunity the counts are for.
communities[].receivedintegerPackages received.
communities[].collectedintegerPackages collected.
communities[].missingintegerPackages marked missing.
communities[].awaitingCollectionintegerPackages at the desk waiting to be collected.
communities[].unassignedintegerPackages not matched to a resident.