Get my status
curl --request GET \
--url https://api.staging.blackbird.xyz/flynet/v1/users/me/statusconst options = {method: 'GET'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/users/me/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/users/me/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Users
Get my status
GET
/
users
/
me
/
status
Get my status
curl --request GET \
--url https://api.staging.blackbird.xyz/flynet/v1/users/me/statusconst options = {method: 'GET'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/users/me/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET'};
fetch('https://api.staging.blackbird.xyz/flynet/v1/users/me/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Returns the authenticated member’s membership status: their tier,
benefits, and progress toward the next level. The subject is resolved
from the access token, so there is no member ID in the path.
Auth: OAuth access token with the
Tasting note -
tier is a display string and may contain a
newline (e.g. "$FLY\nwith us"). Render the break or strip it, but don’t
treat it as a flat label.From the kitchen -
progress.*_threshold is the bar to clear to
advance; the matching progress.* value is where the member stands
now. Pair them for a progress bar.read:profile scope. A token
missing that scope returns 403 with error="insufficient_scope" in
the WWW-Authenticate header. A member with no active status record
returns 404 with code: "resource_not_found".
Example
curl https://api.staging.blackbird.xyz/flynet/v1/users/me/status \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response
{
"id": "54245b01-5de2-4608-91d3-be7ddabf28ea",
"object": "status",
"user": "be9caffa-7f30-462a-b7ab-9cca9edb8ab8",
"tier": "$FLY\nwith us",
"level": 1,
"track": "regular",
"fly_multiplier": 3,
"state": "active",
"benefits": [
{ "title": "Dining Points", "description": "Earn 3X on Blackbird Pay." },
{ "title": "Coffee Club", "description": "Earn 10X points at all Blackbird coffee shops." }
],
"progress": {
"check_ins": 1,
"check_in_threshold": 0,
"spend": { "value": 0, "currency": "usd" },
"spend_threshold": { "value": 0, "currency": "usd" },
"fly_deposit": { "value": "0", "currency": "fly" },
"fly_deposit_threshold": { "value": "0", "currency": "fly" }
},
"year_start": 1767225600,
"year_end": 1798761600,
"started_at": "2026-05-12T18:06:00.660572Z",
"created_at": "2026-05-12T18:06:00.665635Z",
"updated_at": "2026-05-12T18:06:00.665646Z"
}
Schema
| Field | Type | Notes |
|---|---|---|
id | UUID | Status record ID. |
object | string | Always "status". |
user | UUID | The member’s ID (the token sub). |
tier | string | Display string; may contain \n. |
level | integer | 1 to 7. |
track | string | regular or pro. |
fly_multiplier | integer | Points multiplier for the member’s track. |
state | string | One of active, expired, replaced, deactivated. |
benefits | array | Each item is { title, description }. |
progress | object | check_ins / check_in_threshold (integers), spend / spend_threshold (USD cents), fly_deposit / fly_deposit_threshold (FLY wei strings). |
year_start | integer | Unix epoch seconds, not an ISO string. |
year_end | integer | Unix epoch seconds, not an ISO string. |
started_at | ISO 8601 timestamp | When this status period began. |
created_at | ISO 8601 timestamp | Created time. |
updated_at | ISO 8601 timestamp | Last update time. |
See also
- Money and tokens: how FLY wei strings and USD cents are encoded.
- List memberships: per-restaurant check-in counts and tiers.