Reference
Location sharing
A location request belongs to an existing iMessage conversation. The recipient chooses whether and how long to share; the API reports that lifecycle without turning an unanswered request into a location.
- POST/v1/locations/{chat_id}/{recipient}
- GET/v1/locations/{chat_id}/{recipient}
- GET/v1/locations/{chat_id}/{recipient}/watch
Send a native Find My location request.
curl -X POST https://api.missblue.dev/v1/locations/iMessage%3B-%3B%2B15555550100/%2B15555550100 \
-H "Authorization: Bearer $MISS_BLUE_KEY"Response
{ "requested": true }- 404The conversation is not on a number held by this project.
- 503The number's Mac could not send the request.
Pull the sharing lifecycle and newest location fix.
state is not_shared, request_pending, declined, stopped, expired, shared_no_fix_yet, or shared_with_fix. Coordinates are absent until a fix exists; ended_at is present for an ended lifecycle.
curl -X GET https://api.missblue.dev/v1/locations/iMessage%3B-%3B%2B15555550100/%2B15555550100 \
-H "Authorization: Bearer $MISS_BLUE_KEY"Response
{
"handle": "+15555550100",
"state": "shared_with_fix",
"latitude": 40.7411,
"longitude": -73.9897,
"horizontal_accuracy": 12.4,
"observed_at": "2026-08-28T10:04:00Z",
"short_address": "Flatiron District, New York",
"expires_at": "2026-08-28T11:04:00Z",
"requested_at": "2026-08-28T10:00:00Z",
"started_at": "2026-08-28T10:03:12Z"
}Watch changing location state as Server-Sent Events.
A location event is sent only when the JSON snapshot changes. The stream sends a keepalive every 15 seconds. An error event reports a temporary read failure without silently ending the stream.
curl -X GET https://api.missblue.dev/v1/locations/iMessage%3B-%3B%2B15555550100/%2B15555550100/watch \
-H "Authorization: Bearer $MISS_BLUE_KEY"Response
event: location
data: {"handle":"+15555550100","state":"shared_with_fix","latitude":40.7411,"longitude":-73.9897}