HTTP API'e'

LocationNotes API paq

web Daq je Android app qelbogh teH HTTP Hemey, tlhobmeH ghItlh parameters, authentication pabmey, je ghItlh wach-paste examples DapoQchugh, navvam yIlo'. HochvaD web Daq, toblu'bogh web Daq flows, je Android client Hoch API surface rap law'vamDaq domain rapDaq ja'chuq.

endpointmey qav product model DaneH'? nuq 'oH lo'wI''e'?, nuq 'oH ghom'e'?, nuq 'oH QIn'e'?, je nuq 'oH tlha' Doch'e'?, je nuq 'oH ngeb QIn'e'?, je nuq 'oH nIn'e'? je QaH poQghach nuq? naQmeyvam Hemey Qatlhbogh Dochmey yIchid. tlha' Doch mIwmey wa' wa' DanobmeH yIlo' tlha' Doch API mIw QonoSta'bogh, tlha' Doch API mIw pongHa', je tlha' Doch Qagh reference navmeyvetlh.

URL wa'DIch je patmey

URL wa'DIch

pagevamDaq mIspu' Hoch DaH production host qel:

https://locationnotes.com

mIw

tlhobghachmey je responses JSON lulo'. GUIDs QInmey, Seghmey, ghommey, je janmey botlh primary identifiers 'oH.

chaw'ghach

pegh, muvmoH, je ghom endpoints require Authorization: Bearer <access token> He bIngDaq HochvaD mojlu'moHbe'chugh header yIlo'.

Hol

HochvaD je SeH laDghachmey chol contentLanguage=en-US pagh supported ngaSbogh Dochmey Hol latlh lo'taHvIS returned QIn/category ngaSbogh Dochmey yIfilter.

QonoSghach je Bearer tokenmey

web Daq 'elmeH navmey je Hur-nobwI' cherghach Dellu' naDev QonoSmoH nav. rItlhwI' LocationNotes ta' ghajbe'taHchugh, wa'DIch muv yIta'. API clientpu' bearer token neHchugh, identity API 'elmeH He cookies QonoSbe'meH yIlo' pIq; Android app pat rap Dalo'.

POST /api/auth/register pegh pagh pong ghajbe'

muv poQ De'

{
  "email": "tester@example.com",
  "password": "StrongP@ssw0rd!"
}

muv mIw

muv QapDI', ta' chenmoHlu', 'ach 'elmeH rapHa'moHbe'. client pegh, muvmoH, ghom, pagh SeH routemeyvaD chaw' token poQDI', bearer 'elmeH He yIlo' pIq.

POST /api/auth/login?useCookies=false&useSessionCookies=false pegh pagh pong ghajbe'

tlhobghach QIn

{
  "email": "tester@example.com",
  "password": "StrongP@ssw0rd!"
}

jang ghItlhHom

{
  "tokenType": "Bearer",
  "accessToken": "eyJhbGciOi..."
}
curl -X POST "https://locationnotes.com/api/auth/login?useCookies=false&useSessionCookies=false" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "tester@example.com",
    "password": "StrongP@ssw0rd!"
  }'

He inventory naQ bIngDaq tu'lu'bogh DaH framework-SeHlu'bogh identity Hemey je Del; /api/auth bIngDaq cha'lu'. full jeSbogh web Daq flow, nobwI' rItlhbackmey, ta'-Qotlh navmey, pagh nobwI'-rar mIw DapoQchugh, yIlo' QonoS nav.

pu'jIn botlhmeyDaq HochvaD QIn'mey

endpointvam HochvaD pu'jIn windows je browse-mo-area experiencesvaD yIlo'. mIwvam'e' juH nav pu'jIn lo'bogh He 'oH.

GET /api/notes/public/bounds pegh pagh pong ghajbe'
  • tlhobmeH ghItlh ghItlh poQlu'bogh: minLatitude, minLongitude, maxLatitude, maxLongitude
  • tlhobmeH ghItlh ghItlh DuH: contentLanguage
  • responses web Daq HochvaD-De' exposure limitmo' botlu', DaHjaj 500 motlh 'oH, je qav Qu' ruchghach botlh wa'DIch Seghlu'.

HochvaD pu'jIn readsvam QInmey Hoch cha'lu'bogh motlh chel, je QInmey VisibleOnceAssociatedTrackableAccessed lo'bogh chel, rarlu'bogh tlha' Dochmey ghajbe'taHvIS neH. tlha' Doch rarDI', QIn pongHa' HochvaD-pu'jIn discoveryvo' mej, SuchwI' rarlu'bogh tlha' Dochmey wa' unlockta'be'pa' nav patlh routeDaq.

curl "https://locationnotes.com/api/notes/public/bounds?minLatitude=41.78&minLongitude=-87.75&maxLatitude=41.96&maxLongitude=-87.54&contentLanguage=en-US"
[
  {
    "noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
    "ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
    "categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
    "title": "Dock gate closed",
    "body": "Security redirected vehicles to the south entrance.",
    "contentLanguage": "en-US",
    "latitude": 41.8818,
    "longitude": -87.6231,
    "visibility": "Public",
    "isDeleted": false,
    "updatedUtc": "2026-03-13T20:10:00Z",
    "clientMutationId": "web-demo-public-1",
    "teamId": null
  }
]

point SumDaq HochvaD QIn'mey

client center point Sovta'taH je rectangular pu'jIn window qaq law'be', distance-limited result set neHchugh endpointvam yIlo'.

GET /api/notes/public/nearby pegh pagh pong ghajbe'
  • tlhobmeH ghItlh ghItlh poQlu'bogh: latitude, longitude
  • tlhobmeH ghItlh ghItlh DuH: radiusKm (motlh 5), contentLanguage
  • retlhDaq results web Daq HochvaD-De' exposure limitmo' botlu', DaHjaj 500 motlh 'oHmo'.

naDev bounds endpoint rap leghlaHghach pab lI'. HochvaD QInmey motlh chellu', je VisibleOnceAssociatedTrackableAccessed QInmey wa'DIch rarlu'bogh tlha' Doch ghajpa' neH chellu'.

curl "https://locationnotes.com/api/notes/public/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"

nuv nav HochvaD je ghom nav QIn tlheghmey

Hemeyvam HochvaD nuv nav je HochvaD ghom pagesDaq HochvaD ghItlhlu'bogh pu'jIn je QIn strip QapmoH. navvetlh QIn-chaw' pabmey rap lulo' je retlhDaq center point pagh full pu'jIn bounds lajlaH.

GET /api/public/profiles/{userName}/notes/nearby pongHa' qoj Bearer
GET /api/public/teams/{teamName}/notes/nearby pongHa' qoj Bearer

tlhobmeH ghItlh ghItlh poQlu'bogh: latitude, longitude pagh full pu'jIn bounds botlh minLatitude, minLongitude, maxLatitude, maxLongitude.

tlhobmeH ghItlh ghItlh DuH: radiusKm (motlh 5), contentLanguage, includeAllLanguages

web Daq motlh DaH He Hol contentLanguage rur ngeH, vaj /en-US je /tlh HochvaD navmey pu'jIn pagh strip rapDaq authored QIn Holmey motlh DuDbe'.

includeAllLanguages=teH yIcher neH, client multilingual browse surface intentionally chenmoHchugh, web Daq nav mirroringbe'taHvIS.

curl "https://locationnotes.com/api/public/profiles/michael-kappel/notes/nearby?minLatitude=41.87&minLongitude=-87.64&maxLatitude=41.89&maxLongitude=-87.62&contentLanguage=en-US"

muvmoH mIw rarHa'

muvmoH clients Daqvam dirty De' wa'DIch pushnIS, vaj lo'wI', lI' ghommey, je DaH areaDaq HochvaD notesvaD server choHmey pullnIS. muvmoH mIw cha' botlhDaq Bearer auth poQlu'.

POST /api/sync/push Bearer token
{
  "deviceId": "5dd06ca7-34a5-4f2e-812d-3f1ef3e48290",
  "notes": [
    {
      "noteId": "ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
      "ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
      "categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
      "title": "Offline inspection",
      "body": "Saved while disconnected.",
      "contentLanguage": "en-US",
      "latitude": null,
      "longitude": null,
      "visibility": "Private",
      "externalLinkUrl": "https://example.com/offline-inspection",
      "externalLinkDescription": "",
      "applyExternalLinkChanges": true,
      "isDeleted": false,
      "updatedUtc": "2026-03-13T20:12:00Z",
      "clientMutationId": "android-offline-42",
      "teamId": null
    }
  ],
  "categories": []
}
{
  "appliedNoteIds": [
    "ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb"
  ],
  "appliedCategoryIds": [],
  "conflicts": []
}
POST /api/sync/pull Bearer token
{
  "lastSyncUtc": "2026-03-13T19:45:00Z",
  "publicArea": {
    "minLatitude": 41.78,
    "minLongitude": -87.75,
    "maxLatitude": 41.96,
    "maxLongitude": -87.54
  }
}
{
  "serverSyncUtc": "2026-03-13T20:13:02Z",
  "userNotes": [],
  "userCategories": [],
  "teamCategories": [],
  "publicNotes": [],
  "teamNotes": []
}

muvmoH endpoints pongHa' tlhobghachmey lajbe'. Android beta build qan server botchugh, yIlegh GET /api/system/status minimum compatible version je beta-nav URLvaD

nIteb QIn'mey je Seghmey

Hemeyvam 'elta'bogh web Daq vum Daq je nIteb Android muvmoH state QapmoH. Hoch bearer auth poQ.

nIteb QIn'mey yIlaD

GET /api/notes/mine Bearer token

tlhobmeH ghItlh ghItlh DuH: contentLanguage je full pu'jIn bounds botlh minLatitude, minLongitude, maxLatitude, maxLongitude.

QIn laD payloadmey DaH chel lastActivityUtc vaj clients latest Qu' ruchghach persistence/update timestampsvo' separate cha'laH.

yIchenmoH QIn

POST /api/notes/mine Bearer token
{
  "categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
  "title": "Category-only feedback",
  "body": "This note stays off the map on purpose.",
  "contentLanguage": "en-US",
  "externalLinkUrl": "https://example.com/field-guide",
  "externalLinkDescription": "",
  "latitude": null,
  "longitude": null,
  "visibility": "VisibleOnceAssociatedTrackableAccessed",
  "commentPolicy": "LoggedInUsers"
}

leghlaHghach Seghmey pegh, HochvaD, je VisibleOnceAssociatedTrackableAccessed laj. rarlu'bogh-tlha' Doch mIw HochvaD rurtaH, QIn rarlu'bogh tlha' Dochmey wa' pagh law' ghajbe'taHvIS. pItlhDI', HochvaD discovery je QIn-nav chaw' lo'nIS SuchwI' rarlu'bogh trackablemeyvetlh wa' poSmoHta'pu'chugh.

  • ghobe' rarlu'bogh tlha' Dochmey yet: QIn behaves like HochvaD QIn.
  • wa'DIch association pItlhDI': QIn pongHa' HochvaD discoveryDaq tu'lu'be'choH je motlh HochvaD QIn-nav accessDaq tu'lu'be'choH.
  • viewer yI'ngaQHa'ta'bogh: rarlu'ta'bogh tlha' Doch wa' yI'ngaQHa'ta'pu'bogh ghot, QIn nav yIpoSlaH je HochvaD QIn-nav API mIwmey rarbogh lo'laH.
  • ghajwI' pagh ghom lo'wI' chaw'lu'ta'bogh: ghItlhDaq chaw' motlh je ra'ghach taH.

QIn nav laDghachmey je ta'mey

GET /api/public/notes/{noteId} pongHa' qoj Bearer
GET /api/public/notes/{noteId}/comments pongHa' qoj Bearer
POST /api/public/notes/{noteId}/comments Bearer token
GET /api/public/notes/{noteId}/trackables pongHa' qoj Bearer
POST /api/public/notes/{noteId}/trackables Bearer token
{
  "body": "I found it too."
}
{
  "trackableSecretCodes": "LN4C8R2Z",
  "selectedActiveTrackableIds": [
    "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31"
  ],
  "activeTrackableAttachMode": "Self"
}

QIn-nav Hemeyvam QIn-chaw' pabmey lob, pegh QIn je rarlu'bogh-tlha' Doch accessmo' botlu'bogh QIn je. QIn nav poSlaHchugh rItlhwI', notevetlhvaD API qIDmey je leghlaHbogh tlha' Dochmey noblaH. tlha' Doch rarmeH QIn ghajwI' pagh ghom loHwI' poQlu'.

  • wa'DIch rarlu'bogh tlha' Doch tu'lu'pa', Hemeyvam motlh HochvaD QIn-nav Hemey rurtaH.
  • association wa' tu'lu'ta'DI' neH, wa' rarlu'bogh trackableDaq chaw' ghajbe'bogh rItlhers HochvaD QIn-nav routesDaq 404 loSnIS, QIn taHtaHchugh je.
  • notevetlhvaD 200 noblaHtaH ghajwI', ghom memberpu' chavbogh, qoj tlha' Doch wa' unlockta'bogh leghwI'.

Seghmey yIlaD

GET /api/categories/mine Bearer token
GET /api/categories/mine/tree Bearer token

vum Daq tree helper Hemey

GET /api/categories/mine/tree/sections Bearer token
GET /api/categories/mine/tree/children?parentCategoryId={categoryId} Bearer token

Segh picker lazy-laDlu'bogh je sidebar tree'meyvaD helper Hemey tInHa'vam yIlo'. tree/sections rIv wa'DIch Seghmey contentLanguage botlh ghommoH. tree/children wa' parentvaD nIt puq node'mey cheghmoH je childCategoryCount chel; vaj client expand affordance cha'nIS'a' 'e' wuqlaH, grandchildren laDlu'pa'.

[
  {
    "contentLanguage": "en-US",
    "rootCategories": [
      {
        "categoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
        "name": "Field Reports",
        "contentLanguage": "en-US",
        "parentCategoryId": null,
        "childCategoryCount": 2
      }
    ]
  }
]
[
  {
    "categoryId": "c4b2e65f-5cf2-4ab6-8577-a89dfb51407f",
    "name": "Dock checks",
    "contentLanguage": "en-US",
    "parentCategoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
    "childCategoryCount": 0
  }
]

yIchenmoH pagh vIHghach Seghmey

POST /api/categories/mine Bearer token
POST /api/categories/mine/{categoryId}/move Bearer token
{
  "name": "Field Reports",
  "contentLanguage": "en-US",
  "parentCategoryId": null
}

SoHvaD GPX Daq botlh jemeH mIw

GET /api/notes/mine/gpx Bearer token

GET /api/notes/mine/gpx SoHvaD QIn'mey pu'jInlu'bogh Quvmey polta'bogh neH GPX 1.1 Daq botlhmeyDaq tlhap.

POST /api/notes/mine/gpx Bearer token

POST /api/notes/mine/gpx teywI', leghlaHghach, je contentLanguage DuH ghajbogh multipart form De' chaj. Daq botlh qonta''mey neH laD; QIn'mey pu'jInlu'bogh motlh chenmoH; QIn tu'lu'ta'bogh cherqa'be'.

duplicate checkmey SoHvaD botlh wIvta'boghDaq neH ratlh. pong je Quvmey rap QIn botlh De' rap je, duplicate 'oHlu'. pong je Quvmey rap 'ach QIn botlh De' nImchugh, cherqa'Qo'meH pe'lu'.

curl "https://locationnotes.com/api/notes/mine/gpx" \
  -H "Authorization: Bearer <access token>"
curl -X POST "https://locationnotes.com/api/notes/mine/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@waypoints.gpx;type=application/gpx+xml" \
  -F "visibility=Private" \
  -F "contentLanguage=en-US"

qemghach je lelghach nuq? GPX Daq botlh jemeH mIw chay' JSON Hoch je portable ZIP ta' exportmey nIm net Del.

ghom endpointmey

ghom Hemey membership, invites, DuHmey, ghom QInmey, ghom Seghmey je qel. bearer auth Hoch poQlu', He HochDaq loHwI'/member permissions server pabmoH.

laDghach motlhmey

  • GET /api/teams
  • GET /api/teams/{teamId}/notes
  • GET /api/teams/{teamId}/categories
  • GET /api/teams/{teamId}/categories/tree
  • GET /api/teams/{teamId}/invite-links

ghom je ghom-QIn laD mIw chel lastActivityUtc. HochvaD trimming wa'DIch QonoSmey Qapchu'pu' pItlhbogh wIv.

ghom Segh tree helper Hemey

GET /api/teams/{teamId}/categories/tree/sections Bearer token
GET /api/teams/{teamId}/categories/tree/children?parentCategoryId={categoryId} Bearer token

routemeyvam nIteb vum Daq tree helpermey ay' je puq-node pat rap lo', 'ach De'vetlh ghom laH wIvta'boghDaq ratlhtaH je lI' ghomwI'ghach poQtaH.

yIlo' DELETE /api/teams/{teamId}/notes/{noteId} QIn ghom workspacevo' mejnISchugh 'ach ghajwI'vaD taHnISchugh, je yIlo' DELETE /api/teams/{teamId}/notes/{noteId}/delete ghom QIn'e' naQ yIQaw'nISchugh.

yIchenmoH ghom

{
  "name": "Beta Testers",
  "title": "Beta Testers",
  "description": "Public beta release gate for Android validation.",
  "externalLinkUrl": "https://example.com/beta-program",
  "externalLinkDescription": "",
  "joinPolicy": "RequestsAllowed",
  "pageVisibility": "Public",
  "defaultNoteVisibility": "Public",
  "contentLanguage": "en-US"
}

yIchenmoH ghom QIn

POST /api/teams/{teamId}/notes Bearer token
{
  "categoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
  "title": "Shared dock inspection",
  "body": "Visible to the team until we publish it.",
  "contentLanguage": "en-US",
  "externalLinkUrl": "https://example.com/shared-briefing",
  "externalLinkDescription": "",
  "latitude": 41.8818,
  "longitude": -87.6231,
  "visibility": "Private",
  "commentPolicy": "TeamMembers"
}

ghom GPX Daq botlh jemeH mIw

GET /api/teams/{teamId}/notes/gpx Bearer token
POST /api/teams/{teamId}/notes/gpx Bearer token

GET /api/teams/{teamId}/notes/gpx je POST /api/teams/{teamId}/notes/gpx ghom botlh wIvta'boghDaq rap GPX pabmey lo'. duplicate je cherqa' checkmey QIn'mey ghomvetlh neH cha'qa'.

curl "https://locationnotes.com/api/teams/{teamId}/notes/gpx" \
  -H "Authorization: Bearer <access token>"
curl -X POST "https://locationnotes.com/api/teams/{teamId}/notes/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@team-waypoints.gpx;type=application/gpx+xml" \
  -F "visibility=Public" \
  -F "contentLanguage=en-US"

ghomwI'ghach je muvmeH rItlh ta'mey

  • POST /api/teams/{teamId}/memberships/request
  • POST /api/teams/{teamId}/memberships/invite
  • POST /api/teams/{teamId}/memberships/{membershipId}/accept
  • POST /api/teams/{teamId}/memberships/{membershipId}/refuse
  • POST /api/teams/{teamId}/memberships/{membershipId}/approve
  • POST /api/teams/{teamId}/memberships/{membershipId}/deny
  • POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin
  • DELETE /api/teams/{teamId}/memberships/{membershipId}
  • POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join
{
  "isSingleUse": false
}
{
  "inviteLinkId": "9a4726dc-4fb1-4c16-b7b3-5d48ea68fdce",
  "teamId": "0f4ddf5d-f3dc-4417-b96d-8e212d24235e",
  "teamName": "Invite Team",
  "teamSlug": "invite-team",
  "code": "8K4V9T",
  "createdByDisplayName": "invite-admin",
  "createdByCurrentUser": true,
  "inviterIsCurrentlyAdmin": true,
  "isSingleUse": false,
  "createdUtc": "2026-03-18T21:15:00Z"
}
{
  "teamSlug": "invite-team",
  "membershipStatus": "RequestingMembership"
}

tlha' Doch endpointmey

trackablemeyDaq ngogh HochvaD DelmeH laH, ngogh pegh pagh QR chaw' Hotlh neH, pegh cha'ghach wa'logh chenmoHtaHvIS, poH qawlu'boghmey web leghwI'-side lI', qIDmey, je inventory mIwmey ghomlu'ta'bogh tu'lu'. mach pegh ngoghmey je Hotlh neH QR URLmey chenmoH endpointmey bIngDaq neH chegh. laD, lookup, qID, pagh QIjmeH De' mIwmeyDaq cheghqa'be'lu'.

tlha' Doch pabmey potlh:
  • HochvaD ngoghmey mach 'oH; tlha' Dochmey HochDaq pImchu' taH.
  • HochvaD ngoghmey je pegh ngogh machmey rapbe'chu'. vaj ngogh mach wa' botlh cha' pongmey Delbe'.
  • mach pegh ngoghmey je Hotlh neH QR URLmey poSmeH pegh Dochmey 'oH.
  • tlha' Dochmey je tlha' Doch-ghommey yIbuS: wa'logh Daluchavta'DI' cha'lu'bogh pagh HochvaD reH cha'lu'bogh. chaw' pegh 'elmeHbogh accountDaq pollaHtaH, vaj janmey pItlhmey lo'laH.
  • web Daq QIn-attachment formmey wa'leS wa' tlha' Doch ngogh neH laj, 'ej pegh ngogh mach tu'lu'ta'bogh rapchugh neH rarmoH.
  • ngogh Hur muvlu'ta'be'chugh, tlha' Doch wa'DIch yIchenmoH. qonta' QIn-attachment manual ngoghmey latlh tum chu' registerchoHmoHbe'.
  • OwnerUserIdvo' chu'moHghach Sovlu'; persisted chu'moHghach flag pIm tu'lu'be'.
  • chu'moHlu'be'bogh tlha' Dochmey laHbe' moj attached meH QInmey je laHbe' accept qIDmey.
  • tlha' Doch wa' ghom neH ghajlaH. ghom choHmeH, wa'DIch yIteq, vaj yIrarqa'.

ghov ngogh mIwmey je ghantoHmey

mIw ghantoH nej pab
HochvaD ngogh token LN-7K4V9T ngaj HochvaD token qo' HochDaq le'. HochvaD lookup je HochvaD linksvaD Qobbe'.
HochvaD yI'elmeH mIw GET /trackable/LN-7K4V9T HochvaD wav URL mach. base He rap lo'lu' HochvaD ngoghmeyvaD, pegh ngogh machmeyvaD, je QR tokenmey Hotlh neH tIqvaD.
tlha' Doch HochvaD nav Holghomlu'ta'bogh GET /en-US/trackables/LN-7K4V9T wav URL ngogh DelchoHDI', Hol-naQ rendered HochvaD nav pawlu'bogh 'oH.
pegh yI'elmeH mIw GET /trackable/LN4C8R2Z Doch ghajbogh nuvvaD mach possession-based qonta' URL 'oH. HochvaD form je Hotlh form nI' tlhejbogh base He rap <ngogh>/trackable/{code}</code> lo'.
system ngaj pegh ngogh LN4C8R2Z tlha' Dochmey HochDaq le' 'oH; HochvaD ngoghmeyDaq le' je. possession-based manual entryvaD nablu'.
system moHaq pIm GT8M2Q7V <ngogh>GT</code> moHaq lo'bogh sister deploymentsDaq ngaj-pegh pattern rap chenmoHlu'ta'bogh.
SoH ngogh pegh ngogh ITEM42X Hur identifier chu'qu'. tlha' Dochmey HochDaq ngerbe' net poQ; <ngogh>LN</code> pagh <ngogh>GT</code> tagh yIlo'Qo'.
pegh Hotlh He https://locationnotes.com/trackable/AB4D5QW2...<100 chars total>... tlha' Dochmey HochDaq le' 'ej QR scanvo' pawmeH nablu', manual entryvo' ghobe'.

HochvaD ngogh tokenmey chenmoHlu'ta'bogh je ngaj pegh porghmey chenmoHlu'ta'bogh Degh porgh rap lo'. ngogh leghmeH mIw O 0 rur net Har, I pagh L 1 rur, S 5 rur, je U V rur. system ngaj pegh ngoghmeyvaD, motlhmoHmeH mIwvam porgh chenmoHlu'ta'boghDaq neH Qap, moHaq motlhDaq Qo'. HochvaD ngoghmey moHaq rap lo' je dash chel porgh chenmoHlu'ta'boghDaq, vaj ngaj pegh ngoghmeyvo' leghlu'DI' pIm law'.

tlhegh je ghItlh laDghachmey

HochvaD tetlh reads web Daq HochvaD-De' exposure limitmo' botlu', DaHjaj 500 motlh 'oHmo'.

tlha' Doch je tlha' Doch ghom laD models lastActivityUtc ghaj; vaj dashboards je API clients qav Qu' ruchghach Huv cha'laH.

  • GET /api/trackables/public
  • GET /api/trackables/mine
  • GET /api/trackables/{trackableId}
  • POST /api/trackables/{trackableId}/watch
  • DELETE /api/trackables/{trackableId}/watch
  • GET /api/trackables/{trackableId}/journey
  • POST /api/trackables/{trackableId}/journey-stops
  • DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId}

GET /api/trackables/public je web Daq HochvaD tlha' Doch browse navmey multilingual taH, vaj He Holmo' HochvaD leng je logistics De' So'be'lu'.

HochvaD tlha' Doch De' rapDaq localized chrome DaneHchugh, web Daq Hol yIchoH.

wa' tlha' Doch yIchenmoH

POST /api/trackables Bearer token
{
  "name": "Promo coin",
  "description": "Launch event inventory item",
  "externalLinkUrl": "https://example.com/promo-coin",
  "externalLinkDescription": "",
  "teamId": null,
  "visibility": "AlwaysVisibleToEveryone",
  "activateImmediately": false,
  "secretCode": ""
}
{
  "trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
  "heading": "Unactivated Trackable",
  "description": "Please activate this trackable item",
  "items": [
    {
      "trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
      "name": "Unactivated Trackable",
      "publicCode": "LN-7K4V9T",
      "secretCode": "LN4C8R2Z",
      "scanUrl": "https://locationnotes.com/trackable/ABCD...<100 characters total>...",
      "qrPayload": "ABCD...<100 characters total>..."
    }
  ]
}

bring lIj Daj pegh ngogh

{
  "name": "Marketing token",
  "description": "Bring-your-own identifier",
  "teamId": null,
  "visibility": "VisibleOnceAccessed",
  "activateImmediately": true,
  "secretCode": "TAG42"
}

server pegh ngoghmey rItlhwI' nobta'bogh laj, LN, GT, pagh GC taghbe'chugh je ngogh pegh tu'lu'ta'bogh pagh ngogh HochvaD tu'lu'ta'bogh rapbe'chugh. ngogh HochvaD cheghlu'bogh system chenmoHta'lu'taH.

yIchenmoH ghom

POST /api/trackables/groups Bearer token
{
  "name": "Gnomes in this hunt",
  "description": "Seasonal hunt inventory",
  "defaultTrackableTitle": "",
  "defaultTrackableDescription": "",
  "defaultExternalLinkUrl": "https://example.com/hunt-rules",
  "defaultExternalLinkDescription": "",
  "trackableCount": 12,
  "teamId": null,
  "visibility": "AlwaysVisibleToEveryone",
  "activateImmediately": false,
  "watchGroupActivityWhenCreated": true
}

wa' ghomDaq 100 tlha' Dochmey potlh neH ngaSlaH. chu'moHlu'pa'bogh Dochmey ghom defaultmeyDaq cheghtaH. chu'moHlu'DI', pongDaj je ghItlhDaj Daj ghajnIS.

tlha' Doch-ghom chenmoHghach watchGroupActivityWhenCreated lajlaH je, chu'moHlu'be'bogh ghomHom chenmoHwI' bej listDaq taghnISchugh.

nejghach je poH qawlu'bogh taHbogh

  • POST /api/trackables/lookup bIngDaq Delu'ta'bogh character choHmey smudged motlh DeQavDI', HochvaD ngogh token qoj pegh ngogh run rurmoH.
  • GET /trackable/{code} naDev ngaj web Daq qonta' He 'oH; userpu' je API clientpu'vaD cha'lu'. HochvaD ngogh, pegh ngogh tIq, qoj QR token tIq lajlaH, 'ej mIw rapboghDaq botlh ghoSmoH.
  • GET /api/trackables/active tu'lu'chugh, client pegh-ngogh poH qawlu'bogh taHbogh DaHbogh Del.
  • GET /api/trackables/active/{trackableId} lI' landing payload nob; chu'moHghach poQghach je grouped Dochmey je, tu'lu'chugh, chennob.
  • POST /api/trackables/active/{trackableId}/message remembered Dotlh text choHmoH.
  • DELETE /api/trackables/active/{trackableId} clientvetlhDaq remembered pegh-ngogh poH qawlu'bogh QavmoH.

pegh-ngogh lookupmey je QR Suchmey Hotlh neH lI' client poH qawlu'bogh chenmoH, pegh mI' cheghmoHQo'. poH qawlu'bogh lI'vetlh pItlh QIn mIwmeyDaq tlha' Doch rarmeH chaw', ngogh Delqa'be'taHvIS.

rItlhwI' authentication ghajchugh, lookup wa'logh luchavta'DI' cha'lu'bogh rap tlha' Dochvetlh accountvetlhDaq rarlaH je, vaj pItlh janmey 'elmeHbogh tlha' Doch, ghom navDaj, je Hemey tlhejqa'ghach motlh poSqa'laH pegh tlhobqa'be'taHvIS.

web Daq deliberately nIt qonta' base He rap lo' wej formsvaD: /trackable/{publicCode}, /trackable/{secretCode}, je /trackable/{qrToken}.

Hol wIv automatic pItlhDI', /{lang}/trackable/{code} He wa' Doch landing renderlu'bogh 'oH, 'ach wav URL qoj printed URL rur cha'lu'be'nIStaH.

HochvaD-ngogh lookup rInDI', HochvaD nav cha'lu'bogh /{lang}/trackable/{publicCode}Daq tu'lu'.

rap qonta' Hevetlh QaptaHlaH, cherlu'ta'bogh ngaj-ngogh lengths pItlh choHchugh je, server ngogh lo'lu'bogh De' resolve-moHmo' je hard-coded web Daq He variationsDaq relybe'mo'.

ghajwI' botlh web Daq tlha' Doch He-mey HochvaD URL patDaq lanlu'be'; chovlu'ta' net.

pojvam QIn navmeyDaq je qap. ngogh HochvaD lo'lu' HochvaD tlha' Doch nav poSmeH; 'ach QIn rarmeH pegh ngogh mach tu'lu'ta'nIS pagh web leghwI' poH qawlu'bogh lI'-ta'.

GET /api/trackables/lookup?code=LN4C8R2Z
{
  "found": true,
  "trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
  "isPublicCodeMatch": false,
  "usesSecretAccess": true,
  "redirectUrl": "/en-US/trackables/active/f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31"
}
GET /trackable/LN-7K4V9T
GET /en-US/trackables/LN-7K4V9T
GET /trackable/ABCD...<100 characters total>...

SoHvaD pagh teamvaD yIchu'moH

POST /api/trackables/{trackableId}/activate Bearer token
{
  "name": "",
  "description": "",
  "useGroupDefaultTitle": true,
  "useGroupDefaultDescription": true,
  "externalLinkUrl": "",
  "externalLinkDescription": "",
  "useGroupDefaultExternalLink": true,
  "teamId": "optional-team-guid"
}

teamId noblu'chugh, tlha' Doch ghom ghajbogh moj; ghom loHwI'pu' SeHlaH, je activating muvwI' control poltaH teamvetlhDaq taHtaHvIS. teamId tu'be'chugh, tlha' Doch nIteb ghajwI' ghajbogh moj.

ghomDaq Doch chu'moHlu'DI', ghajwI' Doch pong je Del le' pollaH pagh ghom motlh pong je Del DaHbogh ngabHa'meH ghItlh wachlaH.

detach je reattach ghommey

  • DELETE /api/trackables/{trackableId}/group DaH ghom rarghach teq.
  • POST /api/trackables/{trackableId}/group tlhej { "trackableGroupId": "..." } associates detached tlha' Doch tlhej chu' ghom.
  • POST /api/trackables/groups/{trackableGroupId}/watch ghom leghlaHbogh muvpu' DaHotchoHmoH. muvwI'-Doch watches same groupDaq botlhDaq ghom watchDaq DelmeH pe'laHtaH, je ghajwI'-pagh-bej overlap lo'wI' HochvaD deduplicatelu'.
  • DELETE /api/trackables/groups/{trackableGroupId}/watch mevDaqmey bejghach ghom.

tlha' Doch wa' ghom neH ghajlaH. detach-first pab server'e' pabmoH. original activator neH detached tlha' Doch rarlaHqa'; je ghoSmeH Daq ghom lo'wI''vetlh pagh eligible ghom loHwI' controlDaq ghaHnIS.

{
  "trackableGroupId": "4bdffcab-bb51-4fd8-8c15-59f7b2d72c3f"
}

tlha' Doch qIDmey

  • GET /api/trackables/{trackableId}/comments
  • POST /api/trackables/{trackableId}/comments
  • PUT /api/trackables/{trackableId}/comments/{commentId}
  • DELETE /api/trackables/{trackableId}/comments/{commentId}

chu'moHlu'be'bogh tlha' Dochmey laHbe' receive qIDmey pagh leng mevDaqmey.

Daq'elbogh SuchwI'pu' qIDmey chenmoHlaHchu'. Daq'elbe'bogh SuchwI'pu' je qIDmey chenmoHlaH, 'ach ghItlh HochvaD browservetlhDaq lI' tlha' Doch poH qawlu'bogh tu'nISlu' qoj tlha' DochvetlhvaD pegh ngogh machvetlh qoj pegh QR token ngebqa'nISlu'.

qID yIchoHlaH qID ghItlhwI' neH, Daq'elbogh ghItlhwI' 'oHchugh. tlha' Doch ghajwI'pu' je DaH ghom adminpu' qIDmey qoj leng mevDaqmey Qaw'laH, 'ach latlhpu' mu'mey ghItlhqa'laHbe'.

{
  "body": "Starting the route now.",
  "accessCode": "LN4C8R2Z"
}

leng mevDaqmey nIteb

leng feed DaH immutable mevDaq history ghaH. QInmo' Qapbogh mevDaqmey QIn rarlu'taHvIS Daq snapshot, 'ej QIn chenmoHpa' nIt pu'jIn ja'ghachmey pollu'laH.

rarlu'bogh QIn pItlh Quv pImDaq movechoHchugh, tlha' Doch leng mevDaq snapped wa'DIch poltaHtaH, vaj logistics history peghchoHtaHvIS rewriteQo'.

pongHa' nIt ja'ghachmey pongHa' qIDmey pab rap tlhej: rItlhwI' web leghwI'vetlh lI' tlha' Doch poH qawlu'bogh yIlo'nIS pagh write requestDaq mach pegh ngogh je pegh QR token yInobqa'nIS.

{
  "latitude": 41.8819,
  "longitude": -87.6278,
  "accessCode": "LN4C8R2Z"
}

GET /api/trackables/{trackableId}/journey per-first place facts nob. Hoch point coordinateId, locationLabel, currentNotesAtCoordinate je tlhegh, vaj pa' coordinateDaq DaH leghlaHbogh QIn'mey cha'anglaH clientmey, 'ach reH wa' poltaHghach QIn ghajbogh mevDaq'e' DaHotnISbe'.

leng responses city, stateOrProvince, country je fieldmeyDaq outward place contract botlhHa'be' qaStaHvIS. locationLabel je Quvmey yIlaD.

[
  {
    "journeyStopId": "8a274ad6-5dd4-45c4-969a-c13cc1b8d92c",
    "coordinateId": "565c42dd-2e12-49b4-a16b-c89ff4502b8e",
    "latitude": 41.8819,
    "longitude": -87.6278,
    "associatedUtc": "2026-04-05T18:30:00Z",
    "isLocationOnly": false,
    "isAnonymous": false,
    "canDelete": false,
    "canConvertToNote": false,
    "locationLabel": "Chicago, Illinois, United States",
    "creatorDisplayText": "Jordan",
    "creatorProfileUserName": "jordan",
    "currentNotesAtCoordinate": [
      {
        "noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
        "title": "Lobby drop",
        "contentLanguage": "en-US",
        "thumbnailUrl": "/api/images/notes/4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3/thumbnail"
      }
    ]
  }
]

cha'ghach je leng cha'angghach

leng navmey tlha' Doch pu'jInDaq lanlu'bogh Daqmey cha'laH, QIn 'op peghchugh je. DotlhmeyvetlhDaq leghwI'pu' unauthorized Daq point tlhaplaH, 'ach QIn De' Hubta'bogh tlhaplaHbe'.

authorized viewersvaD QIn pong, ghItlh, je QIn rarwI' noblu'chu' leng payload preloadedvo' je pu'jIn pin popupmeyvo'.

Qaw'ghach je poltaHghach

ta' wa' Qaw'lu'DI', tlha' Dochmey accountvetlhDaq qeqta'bogh Hoch Qaw'lu'be' ruch'egh. tlha' Dochmey chuqbogh pagh ghom ghajbogh taHlaH, lo'wI' Qaw'lu'ta'bogh nIteb Qu' ruchghach teqlaHbogh neH teqlu'taHvIS.

DaH retention botlhmey DaSovmeH, De' Qaw' nav je ta'-Qaw' API botlh yIlaD.

tlha' Doch mIw paqmey

tlha' Doch APIDaq 'elta'bogh ghajghach mIw naQ je pongHa' reporting mIw peghDaq Qapbogh mach tu'lu'. rItlhmey tlheghmey tlheghlu'bogh, wuqmeH Daqmey, je ghItlh wach-paste examples DapoQchugh He catalog qaq law'be', bIngDaq dedicated navmey yIlo'.

QonoSta'bogh mIw

Doch Samlu'bogh lookupvo' web leghwI' pegh accessDaq, 'elmeH, chu'moHghach, QIn rarghach, nIt leng logging, SeHnuDghach, lelghach/deletion qelghach je qeltaH.

yIpoS toblu'bogh tlha' Doch api flow guide

mIw pongHa'

'elmeH Qo'bogh rItlhers 'ach pegh ngogh qar pagh pegh QR token ghajbogh, nIt Daq ja'ghach pagh qID HungtaHvIS postmeH.

yIpoS pongHa' tlha' Doch api flow guide

Qagh nejghach

DaH tlha' Doch Seng-De' responsemeyDaq stable machine-readable ngogh De' Daq chellu'. Qagh reference nav yIlo'; failuremeyvaD likely causemey je fixes yISam.

yIpoS tlha' Doch api Qagh reference

nIn endpointmey

nIn chabe'ghach reH qup'a' Doch tlhej. rItlhwI' connected profilenav, notenav, ghomnav, trackablenav, pagh tlha' Doch-ghomnav poSlaHchugh, nInmeyDaj poSlaH je. qup'a' itemDaq chaw' tu'be'chugh, nIn tetlhDoch pagh chegh, je nIn SuqmeHmey nIt 404 nob.

lo'wI' mIwmey je qaw'nIS: chelghachmey polpa' naDlu', wa'DIch Dochmey poltaHbe', je server JPEG Seghmey size choHlu'ta'bogh neH poltaH. web Daq je Android app API pabmey rap je teywI' Hemey rap lulo'.

nInmey ghajwI' botlh yItlhegh

GET /api/images/profiles/{userId} pongHa' qoj Bearer
GET /api/images/notes/{noteId} pongHa' qoj Bearer
GET /api/images/teams/{teamId} pongHa' qoj Bearer
GET /api/images/trackables/{trackableId} pongHa' qoj Bearer
GET /api/images/trackable-groups/{trackableGroupId} pongHa' qoj Bearer

readsva'meH galleries yIpopulate. Doch Hoch mIllogh GUID, original dimensions, je mIlloghHom, small, medium, je large stored copies relative URLs qeng.

originalWidth je originalHeight, uploaded Hal mIllogh qechvaD Del. downloadlaHlu'bogh teywI'mey'e' resized stored variants neH 'oH, thumbnailUrl, smallUrl, mediumUrl, je largeUrl botlh rarbogh.

curl "https://locationnotes.com/api/images/notes/4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3"
[
  {
    "contentImageId": "f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1",
    "targetType": 1,
    "noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
    "originalWidth": 1600,
    "originalHeight": 1200,
    "createdUtc": "2026-03-18T21:15:00Z",
    "thumbnailUrl": "/Images/Thumbnail/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-64.jpg",
    "smallUrl": "/Images/Small/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-306.jpg",
    "mediumUrl": "/Images/Medium/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-612.jpg",
    "largeUrl": "/Images/Large/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-1024.jpg"
  }
]

bytes polta'bogh yIDownload

GET /api/images/{contentImageId}/{variant} pongHa' qoj Bearer

variant mI'mey Qapbogh: mIlloghHom, small, medium, large. jang mIllogh/jpeg cheghmoH.

/Images/{Variant}/{guid}-{size}.jpg bIngDaq web Daq teywI' URLmey qup'a'-leghlaHghach pab rap lupoQ mIllogh bytes jablu'pa'. vaj nIt mIllogh rarwI'mey nuv nav, QIn, ghom, tlha' Doch, qoj tlha' Doch-ghom permissions rarboghDaq qaDtaH.

curl -L "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1/large" --output note-large.jpg

nInmey yIghItlh

POST /api/images/profiles Bearer token
POST /api/images/notes/{noteId} Bearer token
POST /api/images/teams/{teamId} Bearer token
POST /api/images/trackables/{trackableId} Bearer token
POST /api/images/trackable-groups/{trackableGroupId} Bearer token

wa' multipart teywI' De' Daq pongbogh teywI' neH yIngeH. target SeHlaHmeH chaw' Daghajta'nIS, ghom navmeyvaD ghom-loHwI' chaw' je qup'a' Seghmey latlhvaD choHmoHmeH chaw' motlh botlh. uploads naDlu' polpa', vaj JPEG copies size choHlu'ta'bogh neH polta'lu'.

curl -X POST "https://locationnotes.com/api/images/trackables/721f5205-ed2c-43e8-8ecd-1502d5bb7b56" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@tracker.jpg"
{
  "image": {
    "contentImageId": "f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1",
    "targetType": 3,
    "trackableId": "721f5205-ed2c-43e8-8ecd-1502d5bb7b56",
    "originalWidth": 1600,
    "originalHeight": 1200,
    "createdUtc": "2026-03-18T21:15:00Z",
    "thumbnailUrl": "/Images/Thumbnail/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-64.jpg",
    "smallUrl": "/Images/Small/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-306.jpg",
    "mediumUrl": "/Images/Medium/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-612.jpg",
    "largeUrl": "/Images/Large/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-1024.jpg"
  }
}

yIQaw' mIlloghmey

DELETE /api/images/{contentImageId} Bearer token

Qaw'ghach qup'a'-SeHghach chav rap poQ, chelghach rap. Qaw'lu'chu'DI', ngaSbogh Dochmey-mIllogh tlhegh je variants resized polta'lu'bogh Hoch rap teqlu'.

API lo'wI'pu' HTTP Qaw' ngeHnIS naDev. URLvam web leghwI' Quv barDaq yIlanQo'; pa' GET ngeHlu', vaj 405 chegh. Hevam SuqmeH nav 'oHbe'.

web leghwI' gallery Qaw' mIwmey anti-forgery protection polmeH, web Daq Qaw' leQmey localized form He /{culture}/images/{contentImageId}/delete lo'.

curl -X DELETE "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1" \
  -H "Authorization: Bearer <access token>"

nuq 'oH nIn'e'? mIwmeyvam qav cha'ghach, naDghach, ja'ghach ghItlhghach, size choHghach, lelghach, je Qaw'ghach pabmey Del.

compliance ja'ghach ghItlhghach

rapbe'bogh-ngaSbogh Dochmey ja'ghachmey, tracked system Qaghmey, je web Daq QaH tlhobghach flow QapmoHbogh QaH-ticket QonoSmey rapvaD Hemeyvam yIlo'. pongHa' rItlhers ja'ghachmey noblaH, 'ach pIq API botlh Dotlh updates je super-loHwI' resolutions tlhejlaH 'elta'bogh reporters neH.

ja'ghach yInob

POST /api/compliance/reports pongHa' qoj Bearer

web Daq cookie pagh bearer tokenmo' rItlhwI' 'ollu'chugh, ja'ghach chenmoHlu'bogh accountvetlhDaq rarlu'; vaj GET /api/compliance/reports/mine bIngDaq nargh.

{
  "pageType": 2,
  "contentType": 5,
  "pageTitle": "Reported note title",
  "pageUrl": "/en-US/Note/2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a#note-page-title",
  "pageReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a",
  "contentLabel": "Note Page title and content",
  "contentReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a:page-content",
  "contentPreview": "Title: Reported note title\n\nContent: Reported note body",
  "reportTitle": "Needs review",
  "reportExplanation": "This title is not appropriate for a public note."
}

API ticket yIbeH qoj app Qagh yIreport

POST /api/compliance/errors pongHa' qoj Bearer

API He unexpected 500 botlh QapHa'ta' je Seng-De' JSONDaq ticketNumber nobta'chugh, pa' ticketvetlh naDev yIghItlh; cha'logh Qagh QonoS tlhegh yIchenmoHQo'. rItlhwI' super-loHwI' tlhejqa'ghach neHchugh, userExplanation yIchel 'ej trackInSupportTickets yIcher.

{
  "ticketNumber": "ERR-1M7Q4D9K2X5R8V6N",
  "userExplanation": "Android app hit this right after I tapped refresh twice.",
  "trackInSupportTickets": true,
  "clientContext": {
    "platform": "Android",
    "screen": "My Journeys",
    "appVersion": "1.0.0-beta.20260318.1"
  }
}

Qagh Android app bIngDaq neH ghertlhu'chugh je server ticket tu'lu'be'taHchugh, Qagh QonoS chu' yIchenmoH, marker app nuqDaq 'oHbogh Delbogh je.

{
  "pageMarkerType": "Android screen",
  "pageMarker": "My Journeys",
  "requestCulture": "en-US",
  "requestUrl": "https://locationnotes.com/api/trackables/active/721f5205-ed2c-43e8-8ecd-1502d5bb7b56?includeHistory=true",
  "httpMethod": "GET",
  "responseStatusCode": 503,
  "exceptionType": "Java.Lang.IllegalStateException",
  "exceptionMessage": "Journey list render failed.",
  "stackTrace": "at com.locationnotes.trackables.MyJourneysFragment.render(MyJourneysFragment.kt:42)",
  "userExplanation": "This happened right after scanning a QR code.",
  "trackInSupportTickets": true,
  "clientContext": {
    "platform": "Android",
    "deviceModel": "Pixel 9",
    "osVersion": "Android 17",
    "appVersion": "1.0.0-beta.20260318.1"
  }
}
{
  "ticketNumber": "ERR-1M7Q4D9K2X5R8V6N",
  "usedExistingTicket": false,
  "explanationSaved": true,
  "trackedInSupportTickets": true,
  "trackedContentReportId": "d91f6e1c-b8e2-4e38-9e96-f2de0cc4f0e2"
}

pageMarkerType lo'lu'bogh De'mey URL, Android jIH, pagh Android background task rur yIlo'. server-chenmoHlu'bogh ticketsvaD, original URL marker yIpol 'ej cheghta'bogh ticketNumber naDev yInobqa', vaj API URL ghItlhta'bogh ticketvetlhDaq ratlhtaH.

reporter Dotlh laDghachmey

GET /api/compliance/reports/mine Bearer token
GET /api/compliance/reports/{contentReportId} Bearer token

Hemeyvam rItlhwI' reportDaj neH nob, rItlhwI' super-loHwI' 'oHbe'chugh. ngaSbogh Dochmey ja'ghachmey je tracked system Qaghmey botlh Reported, Reviewing, pagh Resolved cha'meH lulo'laH, je qav resolution QIn cha'laH.

{
  "contentReportId": "3ab419ab-4b71-4d43-b52c-303d6039f01f",
  "reporterUserId": "6d650c55-b235-4370-8572-e4b772cd1aea",
  "pageType": 2,
  "pageTypeLabel": "Note Page",
  "contentType": 5,
  "contentTypeLabel": "Title and content",
  "status": 2,
  "statusLabel": "Resolved",
  "pageTitle": "Reported note title",
  "pageUrl": "/en-US/Note/2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a#note-page-title",
  "pageReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a",
  "contentLabel": "Note Page title and content",
  "contentReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a:page-content",
  "contentPreview": "Title: Reported note title\n\nContent: Reported note body",
  "reportTitle": "Needs review",
  "reportExplanation": "This title is not appropriate for a public note.",
  "resolutionText": "Reviewed and recorded for moderation follow-up.",
  "reporterDisplayName": "site-compliance-reporter",
  "reviewerDisplayName": "site-compliance-admin",
  "createdUtc": "2026-03-18T18:00:00Z",
  "reviewedUtc": "2026-03-18T18:10:00Z"
}

super-loHwI' naDghach

GET /api/compliance/reports Bearer je SuperAdmin
PUT /api/compliance/reports/{contentReportId} Bearer je SuperAdmin

loHwI' listDaq ja'ghach rarwI', nav De', offending-ngaSbogh Dochmey De', reporter identity tu'lu'chugh, je nuD QIn motlh chellu'. updates DaH nuD state je leghlaHbogh resolution text ghItlh.

{
  "status": 1,
  "resolutionText": "Review opened and queued for follow-up."
}

ja'ghach resolved DachoHmoHDI', Dotlh cha' yIghajmoH je resolutionText chImbe'bogh yIchel.

enum mI'ghachmey

  • pageType: 0 nuv nav nav'e', 1 ghom nav'e', 2 QIn nav'e', 3 tlha' Doch nav'e', 4 tlha' Doch ghom nav'e', 5 system Qagh, 6 QaH nav
  • contentType: 0 pong, 1 ghItlh, 2 qID QIn, 3 QIn, 4 bio De', 5 pong je ghItlh, 6 Qagh De', 7 mIllogh Doch, 8 QaH poQghach
  • status: 0 QInlu'ta', 1 naDlu'taH, 2 rurbogh

web Daq nav patlh ja'ghachmey DaH 5 lo', vaj ja'ghach leQ wa' leghlaHbogh pong je leghlaHbogh Delghach/body wa'logh qaplaH. qID-patlh ja'ghachmey qID-naQ ngaSbogh Dochmey types lo'taH.

web Daq QaH ra'mey motlh QaH nav je QaH tlhobghach tickets yIchenmoHtaH COMPLIANCE.ContentReports store rapDaq, 'ach web leghwI' form QaH nav lo' taH, tlhol API Hevam lo'be'.

tracked web Daq, API, je Android app Qaghmey QonoS.QaghmeyDaq pollu'. trackInSupportTickets chaw'lu'DI', rarlu'bogh QaH ticket COMPLIANCE.ContentReportsDaq je cha'lu', vaj super-loHwI' nuD je reporter Dotlh mIw rap tlhej.

system je beta De'

GET /api/system/status pegh pagh pong ghajbe'

health checkmey, Android compatibility gating, beta-nav URL DaHtaHbogh, je DaH tlhobghach pu'jIn/privacy stateQe'Daq Dochvam yIlo'.

GET /api/system/beta-android pegh pagh pong ghajbe'

staged Android beta De' cheghmoH: display version, version ngogh, version compat minimum, je release QInmey ngaS.

GET /api/system/ip-location pegh pagh pong ghajbe'

pu'jIn centering je troubleshootingvaD, DaH tlhobghach IP botlh Daq law' potlhbogh nob. client IP pegh, Daqvam, pagh trustedbe'chugh, HTTP 200 ratlh jang je lujghach failureReason transport Qagh chenmoHbe'taHvIS.

GET /api/system/coordinate-locality pegh pagh pong ghajbe'

mevDaq-planner je pu'jIn-selection flowmeyvaD, latitude/longitude rarbogh city, state/province, je country pongmeyvaD reverse-geocode. coordmey QaghDaq, payload nothrow noblu' resolved=false je failureReason=invalid-coordinates.

  • requestedExperienceMode 'ej effectiveExperienceMode comparelu'DI', 'elmeH preference tlhobghach-time peghghach pabmey QaptaH'a' pagh no_3rd_partiesDaq forcedlu'pu'' net SovmoH.
  • requestedMapSource, preferredMapSource, je fallbackMapSource tell SoH lo'wI' nobwI' nuq tlhobta', server nobwI' nuq wa'DIch QattaH, je preferred Hal Qapbe'chugh nobwI' nuq QapnIS.
  • thirdPartyBrowserCallsAllowed, googleMapsAllowed, je openStreetMapAllowed tell SoH tlhobghachvam web leghwI'-side providerpu' Dalo'laH''.
  • hostedMapsForcedByPrivacy botlh hostedMapTileUrlTemplate tell SoH tlhobghach same-origin pa'vamDaq tilemeyDaq forcedlu'pu'bogh, DaH /maps/tiles/{z}/{x}/{y}.png.

pegh-network, Daqvam-network, je IPmey resolution ghajbe'bogh deliberate mIw stricter lo'. vaj localhost pagh office-network test no_3rd_parties je hosted_maps cha'laH, Qonlu'bogh-Daq preference nImtaHchugh je.

curl "https://locationnotes.com/api/system/status"
{
  "status": "online",
  "utcNow": "2026-03-13T21:15:00Z",
  "androidMinimumCompatibleDisplayVersion": "1.0.0-beta.20260313.2",
  "androidMinimumCompatibleVersionCode": "2026031302",
  "androidCompatibilityMessage": "The API changed after older beta builds were published. Update to the latest beta before syncing or using live team management.",
  "androidBetaPageUrl": "https://locationnotes.com/tlh-US/account/beta",
  "requestedExperienceMode": "latest_and_greatest",
  "effectiveExperienceMode": "no_3rd_parties",
  "usesSavedExperienceModePreference": false,
  "usesVisitorExperienceModePreferenceCookie": false,
  "thirdPartyBrowserCallsAllowed": false,
  "requestedMapSource": "openstreetmap",
  "preferredMapSource": "hosted_maps",
  "fallbackMapSource": "hosted_maps",
  "usesSavedMapPreference": false,
  "usesVisitorMapPreferenceCookie": false,
  "googleMapsAllowed": false,
  "googleMapsConfigured": false,
  "openStreetMapAllowed": false,
  "openStreetMapConfigured": true,
  "hostedMapsConfigured": true,
  "hostedMapsForcedByPrivacy": true,
  "hostedMapTileUrlTemplate": "/maps/tiles/{z}/{x}/{y}.png"
}
curl "https://locationnotes.com/api/system/ip-location"
{
  "resolved": true,
  "clientIpAddress": "50.77.187.28",
  "lookupIpAddress": "50.77.187.28",
  "usedDevelopmentFallbackIp": false,
  "sourceKind": "IpAddress",
  "coordinateSourceProvider": "IpInfoDb",
  "localitySourceProvider": "IpInfoDb",
  "latitude": 41.8758,
  "longitude": -87.6206,
  "city": "Chicago",
  "stateOrProvince": "Illinois",
  "country": "United States of America",
  "isApproximate": true,
  "accuracyRadiusKm": null,
  "failureReason": ""
}
curl "https://locationnotes.com/api/system/coordinate-locality?latitude=41.8818&longitude=-87.6231"
{
  "resolved": true,
  "sourceKind": "Coordinates",
  "coordinateSourceProvider": "StopPlanner",
  "localitySourceProvider": "HostedMapPostGIS",
  "latitude": 41.8818,
  "longitude": -87.6231,
  "city": "Chicago",
  "stateOrProvince": "Illinois",
  "country": "United States",
  "isApproximate": false,
  "accuracyRadiusKm": null,
  "failureReason": ""
}

He inventory pat

qechvam DaH LocationNotes API surfacevaD verb je He checklist naQ 'oH; framework SeHbogh identity Hemey /api/auth bIngDaq cheltaHvIS. nuHDaq ay'mey botlh mIwmey Del. inventoryvam He patlh Hal bopbogh truth 'oH, 'ej QaptaHbogh endpoint table rapnIS.

identity auth je ta' Qotlh

  • POST /api/auth/register pegh pagh pong ghajbe'
  • POST /api/auth/login pegh pagh pong ghajbe'
  • POST /api/auth/refresh pegh pagh pong ghajbe'
  • GET /api/auth/confirmEmail pegh pagh pong ghajbe'
  • POST /api/auth/resendConfirmationEmail pegh pagh pong ghajbe'
  • POST /api/auth/forgotPassword pegh pagh pong ghajbe'
  • POST /api/auth/resetPassword pegh pagh pong ghajbe'
  • GET /api/auth/manage/info Bearer token
  • POST /api/auth/manage/info Bearer token
  • POST /api/auth/manage/2fa Bearer token

ta', system, muvmoH, je Hur rarwI'mey

  • DELETE /api/account Bearer token
  • GET /api/system/status pegh pagh pong ghajbe'
  • GET /api/system/beta-android pegh pagh pong ghajbe'
  • GET /api/system/ip-location pegh pagh pong ghajbe'
  • GET /api/system/coordinate-locality pegh pagh pong ghajbe'
  • POST /api/sync/push Bearer token
  • POST /api/sync/pull Bearer token
  • POST /api/external-links/verify Bearer token

QIn je HochvaD QIn navmey

  • GET /api/notes/public/bounds pegh pagh pong ghajbe'
  • GET /api/notes/public/nearby pegh pagh pong ghajbe'
  • GET /api/notes/mine Bearer token
  • POST /api/notes/mine Bearer token
  • GET /api/notes/mine/gpx Bearer token
  • POST /api/notes/mine/gpx Bearer token
  • POST /api/notes/mine/{noteId}/move Bearer token
  • DELETE /api/notes/mine/{noteId} Bearer token
  • GET /api/public/profiles/{userName}/notes/nearby pongHa' qoj Bearer
  • GET /api/public/teams/{teamName}/notes/nearby pongHa' qoj Bearer
  • GET /api/public/notes/{noteId} pongHa' qoj Bearer
  • GET /api/public/notes/{noteId}/comments pongHa' qoj Bearer
  • POST /api/public/notes/{noteId}/comments Bearer token
  • GET /api/public/notes/{noteId}/trackables pongHa' qoj Bearer
  • POST /api/public/notes/{noteId}/trackables Bearer token

Seghmey je vum Daq tree'mey

  • GET /api/categories/mine Bearer token
  • GET /api/categories/mine/tree Bearer token
  • GET /api/categories/mine/tree/sections Bearer token
  • GET /api/categories/mine/tree/children Bearer token
  • POST /api/categories/mine Bearer token
  • POST /api/categories/mine/{categoryId}/move Bearer token
  • DELETE /api/categories/mine/{categoryId} Bearer token

ghommey, membershipmey, je muvmeH rItlh rarwI'mey

  • GET /api/teams Bearer token
  • POST /api/teams Bearer token
  • PUT /api/teams/{teamId}/settings Bearer token
  • GET /api/teams/{teamId}/notes Bearer token
  • GET /api/teams/{teamId}/notes/gpx Bearer token
  • DELETE /api/teams/{teamId}/notes/{noteId} Bearer token
  • POST /api/teams/{teamId}/notes Bearer token
  • POST /api/teams/{teamId}/notes/gpx Bearer token
  • POST /api/teams/{teamId}/notes/{noteId}/move Bearer token
  • DELETE /api/teams/{teamId}/notes/{noteId}/delete Bearer token
  • GET /api/teams/{teamId}/categories Bearer token
  • GET /api/teams/{teamId}/categories/tree Bearer token
  • GET /api/teams/{teamId}/categories/tree/sections Bearer token
  • GET /api/teams/{teamId}/categories/tree/children Bearer token
  • POST /api/teams/{teamId}/categories Bearer token
  • POST /api/teams/{teamId}/categories/{categoryId}/move Bearer token
  • DELETE /api/teams/{teamId}/categories/{categoryId} Bearer token
  • POST /api/teams/{teamId}/memberships/request Bearer token
  • POST /api/teams/{teamId}/memberships/invite Bearer token
  • POST /api/teams/{teamId}/memberships/{membershipId}/accept Bearer token
  • POST /api/teams/{teamId}/memberships/{membershipId}/refuse Bearer token
  • POST /api/teams/{teamId}/memberships/{membershipId}/approve Bearer token
  • POST /api/teams/{teamId}/memberships/{membershipId}/deny Bearer token
  • POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin Bearer token
  • DELETE /api/teams/{teamId}/memberships/{membershipId} Bearer token
  • GET /api/teams/{teamId}/invite-links Bearer token
  • POST /api/teams/{teamId}/invite-links Bearer token
  • DELETE /api/teams/{teamId}/invite-links/{inviteLinkId} Bearer token
  • POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join Bearer token
  • DELETE /api/teams/{teamId} Bearer token

tlha' Dochmey je lI' pegh-backed poH qawlu'boghmey

  • GET /api/trackables/public pongHa' qoj Bearer
  • GET /api/trackables/mine Bearer token
  • GET /api/trackables/{trackableId} pongHa' qoj Bearer
  • GET /api/trackables/{trackableId}/journey pongHa' qoj Bearer
  • POST /api/trackables Bearer token
  • POST /api/trackables/groups Bearer token
  • POST /api/trackables/{trackableId}/activate Bearer token
  • POST /api/trackables/{trackableId}/watch Bearer token
  • DELETE /api/trackables/{trackableId}/watch Bearer token
  • DELETE /api/trackables/{trackableId}/group Bearer token
  • POST /api/trackables/{trackableId}/group Bearer token
  • POST /api/trackables/groups/{trackableGroupId}/watch Bearer token
  • DELETE /api/trackables/groups/{trackableGroupId}/watch Bearer token
  • GET /api/trackables/lookup pegh pagh pong ghajbe'
  • POST /api/trackables/lookup pegh pagh pong ghajbe'
  • GET /api/trackables/active pegh pagh pong ghajbe'
  • GET /api/trackables/active/{trackableId} pegh pagh pong ghajbe'
  • POST /api/trackables/active/{trackableId}/message pegh pagh pong ghajbe'
  • DELETE /api/trackables/active/{trackableId} pegh pagh pong ghajbe'
  • GET /api/trackables/{trackableId}/comments pongHa' qoj Bearer
  • POST /api/trackables/{trackableId}/comments pongHa' qoj Bearer
  • PUT /api/trackables/{trackableId}/comments/{commentId} Bearer token
  • DELETE /api/trackables/{trackableId}/comments/{commentId} Bearer token
  • POST /api/trackables/{trackableId}/journey-stops pongHa' qoj Bearer
  • DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId} Bearer token

nInmey je compliance

  • GET /api/images/profiles/{userId} pongHa' qoj Bearer
  • GET /api/images/notes/{noteId} pongHa' qoj Bearer
  • GET /api/images/teams/{teamId} pongHa' qoj Bearer
  • GET /api/images/trackables/{trackableId} pongHa' qoj Bearer
  • GET /api/images/trackable-groups/{trackableGroupId} pongHa' qoj Bearer
  • GET /api/images/{contentImageId}/{variant} pongHa' qoj Bearer
  • POST /api/images/profiles Bearer token
  • POST /api/images/notes/{noteId} Bearer token
  • POST /api/images/teams/{teamId} Bearer token
  • POST /api/images/trackables/{trackableId} Bearer token
  • POST /api/images/trackable-groups/{trackableGroupId} Bearer token
  • DELETE /api/images/{contentImageId} Bearer token
  • POST /api/compliance/reports pongHa' qoj Bearer
  • POST /api/compliance/errors pongHa' qoj Bearer
  • GET /api/compliance/reports/mine Bearer token
  • GET /api/compliance/reports/{contentReportId} Bearer token
  • GET /api/compliance/reports Bearer je SuperAdmin
  • PUT /api/compliance/reports/{contentReportId} Bearer je SuperAdmin

yIQaw' ta' vo' api

QonoSta'bogh clients API botlh DaH ta' je synced nIteb De' permanently Qaw'laH. yIlaD De' yIQaw' ghom ghajbogh De' je exportsvaD retention yIpabmeH mIw Hoch DaneHchugh, wa'DIch nav yIlegh.

tlha' Doch cleanup Hoch pagh pagh 'oHbe'. server lo'wI' Qaw'lu'ta'bogh nIteb Qu' ruchghach trackablevetlhDaq teqlaHbogh teq, 'ach tlha' Dochmey chuqbogh, ghom ghajbogh tlha' Dochmey, pagh qun lo'wI'pu' latlhpu' teqbe', ta' wa' Qaw'lu'mo' neH. ghom ghajbogh tlha' Doch teamvaD potlhtaHchugh, teamvetlhDaq taH. latlh nuv Qu' ruchghach trackableDaq ratlhtaHchugh, tlha' Dochvetlh systemDaq taH.

DELETE /api/account Bearer token
curl -X DELETE "https://locationnotes.com/api/account" \
  -H "Authorization: Bearer <access token>"
{
  "deletedAccount": true,
  "notesDeleted": 14,
  "categoriesDeleted": 6,
  "linkedProvidersDeleted": 2
}

Qaghmey je Seng ghItlhmey

naDHa'ghach, chavHa'ghach, je nejHa'ghach Qaghmey standard HTTP Dotlh ngoghmey cheghmoH. vum Daq mIwmey law' RFC 7807 style Seng-De' JSON nob; pong, QIjmeH De', je Dotlh ghaj.

{
  "title": "Forbidden",
  "code": "trackable_access_code_required",
  "detail": "Sign in, keep this trackable active on this browser, or provide this trackable's secret code or QR access code before posting comments or location reports.",
  "status": 403
}
  • 400 validation pagh business-pab rejectionvaD
  • 401 QonoSghach tu'be'lu'bogh qoj Qapbe'boghvaD
  • 403 chaw' ghajbe'bogh toblu'bogh usersvaD
  • 404 QIn'mey, Seghmey, ghommey, ghomwI'ghachmey, qoj muvmeH rItlh QInmey tu'be'lu'boghvaD

tlha' Doch write Hemey stable ngogh property je chel, vaj API clients casesvam'e' wIchovlaH trackable_access_code_required, trackable_access_code_invalid, trackable_activation_required, je trackable_already_activated English text parsebe'taHvIS. mapping Hoch Dellu' naDev tlha' Doch Qagh reference nav.