SearchAccounts
const url = 'https://example.com/wink.partner.v1.Accounts/SearchAccounts';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"skip":1,"take":1,"status":"ACCOUNT_STATUS_UNSPECIFIED","type":"ACCOUNT_TYPE_UNSPECIFIED","nameQuery":"example","sortBy":"example","sortDirection":"SORT_DIRECTION_UNSPECIFIED","imageFormat":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/wink.partner.v1.Accounts/SearchAccounts \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "skip": 1, "take": 1, "status": "ACCOUNT_STATUS_UNSPECIFIED", "type": "ACCOUNT_TYPE_UNSPECIFIED", "nameQuery": "example", "sortBy": "example", "sortDirection": "SORT_DIRECTION_UNSPECIFIED", "imageFormat": "example" }'Search the accounts you can act for
The paged, filterable form of ListAccounts, over exactly the same set of accounts, for when you
hold too many to take in one response. Filter by lifecycle status, by account type, or by the
start of the name, and page with skip and take.
Every filter is optional; sending none is the same as ListAccounts with paging. Results are scoped to the accounts your token can reach — being a platform administrator does not widen it.
Free: this call is not metered.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
How many records to skip. Omit it to start at the beginning.
Paging is page-aligned, so this must be a whole multiple of take — 0, then take, then
2 * take, and so on. A partial offset is rejected with INVALID_ARGUMENT rather than quietly
rounded down, so you can never be handed a page you did not ask for.
How many records to return. Between 1 and 180; omit it to take the default of 30.
Return only accounts with this lifecycle status. Omit it to return every status.
Return only accounts of this type. Omit it to return every type.
Return only accounts whose name STARTS WITH this text, case-insensitively. Matched literally — regular-expression characters carry no special meaning. At most 100 characters.
Prefix rather than substring on purpose: a substring match cannot use the name index and so reads every account on the platform on a call that costs you nothing, which is not a load we are willing to publish. Search for “Siam” to find “Siam Residences”, not for “Residences”.
Field to sort on. One of name, urlName, status, type, createdDate or lastUpdate;
anything else is rejected. Omit it to sort by name.
Direction for sort_by. Omit it to sort ascending. Declared in partner_common.proto and shared
with the Booking surface, so ordering reads the same wherever you page.
IANA media type for image delivery URLs: image/jpeg (the default), image/png, image/webp, or image/* to let the CDN negotiate per client from its Accept header. Empty means image/jpeg.
An unrecognised value is rejected with INVALID_ARGUMENT rather than quietly falling back, so a typo
like “image/jpg” (not a media type) fails loudly instead of serving you JPEG while you believe you
asked for something else. Whatever is served is echoed back on MediaUrlVariant.format.
Responses
Section titled “Responses”The RPC completed with gRPC status OK.
object
The matching accounts for this page.
One Wink account — the business entity that owns properties, receives payouts and controls team access.
This is an identity projection: enough to recognise an account, route a call to it and render it in a picker. It deliberately carries no banking, payout or team-roster detail.
object
Stable identifier for this account. Send it as the managing-entity-id metadata header on every
other call in this API.
Identifier of the user who owns this account.
Identifier of the application that provisioned this account — normally Wink itself.
Whether the account is held by a company or by an individual.
What kind of business this account is.
Display name.
Registered legal name, when it differs from the display name.
URL-friendly slug identifying the account in public profiles and links, e.g.
the-siam-residences-bangkok.
Short human-friendly identifier, used where a UUID would be unwieldy.
Where the account sits in its lifecycle. Only ACCOUNT_STATUS_ACTIVE accounts transact.
ISO 4217 currency the account accounts and settles in, e.g. “THB”.
Short description of the business.
Primary website or social URL.
Business address.
object
Street line 1.
Street line 2, when the property supplies one.
State, province or region.
Postal or ZIP code.
City name.
ISO 3166-1 alpha-2 country code, e.g. “TH”.
Country name in the requested language.
The full address pre-formatted for display, newline-free.
City the account is registered in.
object
Wink’s identifier for this city.
City name.
URL slug, e.g. bangkok-thailand. Accepted by Lookup’s Get with DESTINATION_TYPE_CITY.
ISO 3166-1 alpha-2 country code, e.g. “TH”.
The account’s logo, when it has published one.
object
Stable identifier for this asset. Use this as your cache key.
Identifier of the inventory item this asset belongs to (the property, a guest room, and so on).
Named entity_id rather than identifier to match the *_id convention the rest of this surface
uses, and because “identifier” said nothing about WHOSE identifier it is.
MEDIA_TYPE_IMAGE or MEDIA_TYPE_VIDEO.
Where the asset came from, e.g. the property’s own upload or a syndicated source.
Display order within its gallery, ascending.
Camera angle or shot description, when the property supplied one.
Intrinsic width in pixels.
Intrinsic height in pixels.
Localized captions.
A short piece of localized text.
The API returns descriptions already filtered to the language on your request, so you will normally see
exactly one entry per collection. language_code is still present so you can tell which language you got when
the requested one was unavailable and the property’s default was substituted.
object
Short label for this description.
The description body.
ISO 639-1 language code of name and description.
The lifestyle this asset is meant to illustrate, when tagged.
Ready-to-use delivery URLs, one per variant. Which variants are populated depends on whether the asset is an image, a Cloudinary video or an externally-hosted one — see MediaUrlSet.
object
MULTIMEDIA_KIND_IMAGE only: unscaled, best-quality delivery URL.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_IMAGE only: large variant, max width 1920px.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_IMAGE only: medium variant, max width 1024px.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_IMAGE or MULTIMEDIA_KIND_VIDEO (Cloudinary): thumbnail variant, max width 320px. For video
this is a still frame extracted from the video, so its format is an image type and follows
image_format, not video_format.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_VIDEO (Cloudinary) only: streaming delivery URL, unscaled. Delivered as video_format,
which defaults to video/mp4.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_VIDEO (Cloudinary) only: preview variant, max width 1280px. Delivered as video_format.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_VIDEO (Cloudinary) only: poster frame at medium width. A still EXTRACTED from the video,
so like thumbnail it is an image and follows image_format.
object
Ready-to-use delivery URL for this variant.
Maximum pixel width this variant is scaled to. Unset for variants with no resize (image “original”, video “stream”) — explicit presence so “not resized” is distinguishable from a literal 0px width.
The IANA media type this URL returns: one of image/jpeg, image/png, image/webp, image/* or video/mp4, video/webm. Feed it straight to a Content-Type header or use it to pick a decoder.
This ECHOES what was served, so it reflects the image_format and video_format you sent on the
request. Send neither and images are image/jpeg and video is video/mp4.
image/* is the one value that is not a concrete type: it means the CDN negotiates per client from the Accept header, so the same URL returns WebP, AVIF or JPEG to different callers. It is only ever returned if you asked for it. Everything else is deterministic — the same URL returns the same bytes to every client, which is what makes it safe to cache and re-serve.
MULTIMEDIA_KIND_VIDEO (YouTube) only: pass-through to the YouTube watch URL. Wink generates no variants for externally-hosted media, so no format applies and every MediaUrlVariant field above is unset.
OpenTravel PIC (Picture Category) code, e.g. “2” = Lobby view, “6” = Guest room. What the asset depicts,
which is what you want when laying out a gallery rather than dumping it in sort order. Empty when
the property never categorised the asset. Look codes up at https://wink.travel/developers/taxonomy.
Records skipped to produce this page — echoes the skip you sent.
Page size used — echoes the take you sent, or the default that was applied.
Total accounts matching the filters, across all pages.
Example
{ "accounts": [ { "ownerType": "ACCOUNT_OWNER_TYPE_UNSPECIFIED", "type": "ACCOUNT_TYPE_UNSPECIFIED", "status": "ACCOUNT_STATUS_UNSPECIFIED", "logo": { "kind": "MULTIMEDIA_KIND_UNSPECIFIED", "lifestyleType": "LIFESTYLE_TYPE_UNSPECIFIED" } } ]}