pegh wIvDu'

visitvam consent tlhobbogh SepDaq botlh'a' net SovlaHbe'mo', LocationNotes third-party calls mevmoHtaH visitvam nuq chaw'nIS net chovlu'pa'.

mIw recommended yIchovmeH yIghoS, pagh mapmey qoj browser analytics Datemchugh visit choices below yIpoS.

visitvamvaD mIw recommended

HTTP API'e'

LocationNotes API paq

website je Android app qelbogh real HTTP routes, query parameters, authentication rules, je copy-paste examples DapoQchugh, pagevam yIlo'. public site, authenticated website flows, je Android client Hoch API surface rap law'vamDaq domain rapDaq ja'chuq.

endpointmey qav product model DaneH'a? nuq 'oH user'e'?, nuq 'oH team'e'?, nuq 'oH note'e'?, je nuq 'oH trackable'e'?, je nuq 'oH ngeb QIn'e'?, je nuq 'oH nIn'e'? je QaH poQghach nuq? naQmeyvam routes Qatlhbogh Dochmey yIchid. trackable mIwmey wa' wa' DanobmeH yIlo' trackable API mIw QonoSta'bogh, trackable API mIw anonymous, je trackable Qagh reference pagesvetlh.

URL wa'DIch je patmey

URL wa'DIch

pagevamDaq mIspu' Hoch DaH production host qel:

https://www.locationnotes.com

mIw

requests je responses JSON lulo'. GUIDs notes, categories, teams, je devices botlh primary identifiers 'oH.

chaw'ghach

pegh, sync, and team endpoints require an Authorization: Bearer <access token> route bIngDaq public mojlu'moHbe'chugh header yIlo'.

Hol

public je SeH laDghachmey chol contentLanguage=en-US pagh supported content language latlh lo'taHvIS returned note/category content yIfilter.

QonoSghach je Bearer tokens

website sign-in pages je external-provider setup Dellu' naDev QonoSmoH nav. caller LocationNotes account ghajbe'taHchugh, wa'DIch register yIta'. API clientpu' bearer token neHchugh, identity API login route cookies QonoSbe'meH yIlo' pIq; Android app pat rap Dalo'.

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

register poQ De'

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

register mIw

register QapDI', account chenmoHlu', 'ach login rapHa'moHbe'. client private, sync, ghom, pagh manage routemeyvaD access token poQDI', bearer login route yIlo' pIq.

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

request QIn

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

jang ghItlhHom

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

route inventory naQ bIngDaq tu'lu'bogh current framework-managed identity routemey je Del; /api/auth bIngDaq cha'lu'. full interactive website flow, provider callbackmey, account-Qotlh navmey, pagh provider-rar mIw DapoQchugh, yIlo' QonoS page.

map botlhmeyDaq public note'mey

endpointvam public map windows je browse-by-area experiencesvaD yIlo'. mIwvam'e' homepage map lo'bogh route 'oH.

GET /api/notes/public/bounds pegh pagh pong ghajbe'
  • query ghItlh poQlu'bogh: minLatitude, minLongitude, maxLatitude, maxLongitude
  • query ghItlh optional: contentLanguage
  • responses site public-data exposure limitmo' botlu', DaHjaj 500 default 'oH, je recent activity botlh wa'DIch Seghlu'.

public map readsvam notes Hoch cha'lu'bogh motlh chel, je notes VisibleOnceAssociatedTrackableAccessed lo'bogh chel, associated trackablemey ghajbe'taHvIS neH. trackable rarDI', note anonymous public-map discoveryvo' mej, SuchwI' associated trackablemey wa' unlockta'be'pa' page-level routeDaq.

curl "https://www.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 public note'mey

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

GET /api/notes/public/nearby pegh pagh pong ghajbe'
  • query ghItlh poQlu'bogh: latitude, longitude
  • query ghItlh optional: radiusKm (motlh 5), contentLanguage
  • nearby results site public-data exposure limitmo' botlu', DaHjaj 500 default 'oHmo'.

naDev bounds endpoint rap visibility rule lI'. public notes motlh chellu', je VisibleOnceAssociatedTrackableAccessed notes wa'DIch associated trackable ghajpa' neH chellu'.

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

profile public je ghom page note tlheghmey

routesvam public profile je public team pagesDaq published map je note strip QapmoH. pagevetlh note-access rules rap lulo' je nearby center point pagh full map bounds lajlaH.

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

query ghItlh poQlu'bogh: latitude, longitude pagh full map bounds botlh minLatitude, minLongitude, maxLatitude, maxLongitude.

query ghItlh optional: radiusKm (motlh 5), contentLanguage, includeAllLanguages

website motlh current route language contentLanguage rur ngeH, vaj /en-US je /tlh public pages map pagh strip rapDaq authored note Holmey motlh DuDbe'.

includeAllLanguages=true yIcher neH, client multilingual browse surface intentionally chenmoHchugh, website page mirroringbe'taHvIS.

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

sync mIw offline

sync clients local dirty data wa'DIch pushnIS, vaj user, active teams, je current areaDaq public notesvaD server choHmey pullnIS. sync 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": []
}

sync endpoints anonymous requests lajbe'. Android beta build qan server botchugh, yIlegh GET /api/system/status minimum compatible version je beta-page URLvaD

personal note'mey je categorymey

routesvam signed-in website workspace je personal Android sync state QapmoH. Hoch bearer auth poQ.

personal note'mey yIlaD

GET /api/notes/mine Bearer token

query ghItlh optional: contentLanguage je full map bounds botlh minLatitude, minLongitude, maxLatitude, maxLongitude.

note laD payloadmey DaH chel lastActivityUtc vaj clients latest activity persistence/update timestampsvo' separate cha'laH.

yIchenmoH a note

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"
}

visibility Seghmey Private, Public, je VisibleOnceAssociatedTrackableAccessed laj. associated-trackable mIw Public rurtaH, note associated trackablemey wa' pagh law' ghajbe'taHvIS. pItlhDI', public discovery je note-page access lo'nIS SuchwI' associated trackablemeyvetlh wa' poSmoHta'pu'chugh.

  • no associated trackablemey yet: the note behaves like a public note.
  • wa'DIch association pItlhDI': note anonymous public discoveryDaq tu'lu'be'choH je normal public note-page accessDaq tu'lu'be'choH.
  • viewer yI'ngaQHa'ta'bogh: rarlu'ta'bogh trackable wa' yI'ngaQHa'ta'pu'bogh ghot, note nav yIpoSlaH je public note-nav API mIwmey rarbogh lo'laH.
  • ghajwI' pagh team lo'wI' chaw'lu'ta'bogh: ghItlhDaq chaw' motlh je ra'ghach taH.

note page laDghachmey je ta'mey

GET /api/public/notes/{noteId} anonymous qoj Bearer
GET /api/public/notes/{noteId}/comments anonymous qoj Bearer
POST /api/public/notes/{noteId}/comments Bearer token
GET /api/public/notes/{noteId}/trackables anonymous 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"
}

note-page routesvam note-access pabmey lob, pegh note je associated-trackable accessmo' botlu'bogh note je. note page poSlaHchugh caller, notevetlhvaD API commentmey je visible trackablemey noblaH. trackable rarmeH note ghajwI' pagh team admin poQlu'.

  • wa'DIch associated trackable tu'lu'pa', routesvam motlh public note-page routes rurtaH.
  • association wa' tu'lu'ta'DI' neH, wa' associated trackableDaq access ghajbe'bogh callers public note-page routesDaq 404 loSnIS, note taHtaHchugh je.
  • notevetlhvaD 200 noblaHtaH ghajwI', ghom memberpu' chavbogh, qoj trackable wa' unlockta'bogh leghwI'.

categorymey yIlaD

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

workspace tree helper routemey

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

category picker lazy-loadlu'bogh je sidebar tree'meyvaD helper routemey tInHa'vam yIlo'. tree/sections root categorymey contentLanguage botlh ghommoH. tree/children wa' parentvaD direct child node'mey cheghmoH je childCategoryCount chel; vaj client expand affordance cha'nIS'a' 'e' wuqlaH, grandchildren loadlu'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 or move categories

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 note'mey maplu'bogh coordinatemey polta'bogh neH GPX 1.1 Daq botlhmeyDaq tlhap.

POST /api/notes/mine/gpx Bearer token

POST /api/notes/mine/gpx file, visibility, je contentLanguage optional ghajbogh multipart form data chaj. Daq botlh entry'mey neH laD; note'mey maplu'bogh motlh chenmoH; note tu'lu'ta'bogh cherqa'be'.

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

curl "https://www.locationnotes.com/api/notes/mine/gpx" \
  -H "Authorization: Bearer <access token>"
curl -X POST "https://www.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"

Import je Export nuq? GPX Daq botlh jemeH mIw chay' JSON Hoch je portable ZIP account exportmey nIm net Del.

ghom endpointmey

team routes membership, invites, settings, team notes, team categories je qel. bearer auth Hoch poQlu', route HochDaq admin/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-note laD mIw chel lastActivityUtc. public trimming wa'DIch records Qapchu'pu' pItlhbogh wIv.

ghom category tree helper routemey

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

routemeyvam personal workspace tree helpermey section je child-node pat rap lo', 'ach De'vetlh ghom scope wIvta'boghDaq ratlhtaH je active ghomwI'ghach poQtaH.

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

yIchenmoH a team

{
  "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 a team note

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 rules lo'. duplicate je cherqa' checkmey note'mey ghomvetlh neH cha'qa'.

curl "https://www.locationnotes.com/api/teams/{teamId}/notes/gpx" \
  -H "Authorization: Bearer <access token>"
curl -X POST "https://www.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 invite 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"
}

trackable endpointmey

trackablemeyDaq ngogh public DelmeH laH, ngogh pegh pagh QR access scan-only, pegh cha'ghach wa'logh chenmoHtaHvIS, sessions browser-side active, commentmey, je inventory mIwmey ghomlu'ta'bogh tu'lu'. mach pegh ngoghmey je scan-only QR URLmey create endpointmey bIngDaq neH chegh. read, lookup, comment, pagh detail mIwmeyDaq cheghqa'be'lu'.

trackable pabmey potlh:
  • public ngoghmey mach 'oH; trackablemey HochDaq pImchu' taH.
  • public ngoghmey je pegh ngogh machmey rapbe'chu'. vaj ngogh mach wa' botlh cha' pongmey Delbe'.
  • mach pegh ngoghmey je scan-only QR URLmey poSmeH pegh Dochmey 'oH.
  • trackablemey je trackable-ghommey yIbuS: wa'logh Daluchavta'DI' cha'lu'bogh pagh HochvaD reH cha'lu'bogh. access pegh sign-inbogh accountDaq pollaHtaH, vaj devices pItlhmey lo'laH.
  • website note-attachment formmey wa'leS wa' trackable ngogh neH laj, 'ej pegh ngogh mach tu'lu'ta'bogh rapchugh neH rarmoH.
  • ngogh external registerlu'ta'be'chugh, trackable wa'DIch yIchenmoH. entry note-attachment manual ngoghmey third-party chu' registerchoHmoHbe'.
  • OwnerUserIdvo' chu'moHghach Sovlu'; persisted activation flag pIm tu'lu'be'.
  • unactivated trackablemey cannot be attached to notes and cannot accept commentmey.
  • trackable wa' ghom neH ghajlaH. ghom choHmeH, wa'DIch yIteq, vaj yIrarqa'.

ghov ngogh mIwmey je ghantoHmey

mIw ghantoH nej pab
public ngogh token LN-7K4V9T short public token qo' HochDaq unique. public lookup je public linksvaD Qobbe'.
public yI'elmeH mIw GET /trackable/LN-7K4V9T public share URL mach. base route rap lo'lu' public ngoghmeyvaD, pegh ngogh machmeyvaD, je QR tokenmey scan-only tIqvaD.
trackable public page Holghomlu'ta'bogh GET /en-US/trackables/LN-7K4V9T share URL ngogh DelchoHDI', language-specific rendered public page pawlu'bogh 'oH.
pegh yI'elmeH mIw GET /trackable/LN4C8R2Z Doch ghajbogh nuvvaD mach possession-based entry URL 'oH. public form je scan form nI' tlhejbogh base route rap <code>/trackable/{code}</code> lo'.
system short pegh ngogh LN4C8R2Z trackablemey HochDaq unique 'oH; public ngoghmeyDaq unique je. possession-based manual entryvaD nablu'.
system prefix pIm GT8M2Q7V <code>GT</code> prefix lo'bogh sister deploymentsDaq short-secret pattern rap chenmoHlu'ta'bogh.
bring-your-own pegh ngogh ITEM42X external identifier chu'qu'. trackablemey HochDaq ngerbe' net poQ; <code>LN</code> pagh <code>GT</code> tagh yIlo'Qo'.
pegh scan route https://locationnotes.com/trackable/AB4D5QW2...<100 chars total>... trackablemey HochDaq unique 'ej QR scanvo' pawmeH nablu', manual entryvo' ghobe'.

public ngogh tokens chenmoHlu'ta'bogh je short 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 short pegh ngoghmeyvaD, motlhmoHmeH mIwvam porgh chenmoHlu'ta'boghDaq neH Qap, prefix motlhDaq Qo'. public ngoghmey prefix rap lo' je dash chel porgh chenmoHlu'ta'boghDaq, vaj short pegh ngoghmeyvo' leghlu'DI' pIm law'.

tlhegh je ghItlh laDghachmey

public list reads site public-data exposure limitmo' botlu', DaHjaj 500 default 'oHmo'.

Trackable je trackable-group read models lastActivityUtc ghaj; vaj dashboards je API clients recent activity clear 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 website public trackable browse navmey multilingual taH, vaj route Holmo' public journey je logistics data So'be'lu'.

public trackable data rapDaq localized chrome DaneHchugh, website Hol yIchoH.

wa' trackable 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 your own pegh ngogh

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

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

yIchenmoH a 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 trackablemey potlh neH ngaSlaH. chu'moHlu'pa'bogh Dochmey ghom defaultmeyDaq cheghtaH. chu'moHlu'DI', pongDaj je ghItlhDaj Daj ghajnIS.

trackable-ghom chenmoHghach watchGroupActivityWhenCreated lajlaH je, unactivated batch chenmoHwI' watch listDaq taghnISchugh.

nejghach je session taHbogh

  • POST /api/trackables/lookup bIngDaq Delu'ta'bogh character choHmey smudged motlh DeQavDI', public ngogh token qoj pegh ngogh run rurmoH.
  • GET /trackable/{code} naDev short website entry route 'oH; userpu' je API clientpu'vaD cha'lu'. public ngogh, pegh ngogh tIq, qoj QR token tIq lajlaH, 'ej mIw rapboghDaq botlh ghoSmoH.
  • GET /api/trackables/active tu'lu'chugh, client pegh-ngogh session taHbogh DaHbogh Del.
  • GET /api/trackables/active/{trackableId} active landing payload nob; chu'moHghach poQghach je grouped itemmey je, tu'lu'chugh, chennob.
  • POST /api/trackables/active/{trackableId}/message remembered status text choHmoH.
  • DELETE /api/trackables/active/{trackableId} clientvetlhDaq remembered secret-code session QavmoH.

pegh-ngogh lookupmey je QR visits scan-only active client session chenmoH, pegh mI' cheghmoHQo'. session activevetlh pItlh note mIwmeyDaq trackable rarmeH chaw', ngogh Delqa'be'taHvIS.

caller authentication ghajchugh, lookup wa'logh luchavta'DI' cha'lu'bogh rap trackablevetlh accountvetlhDaq rarlaH je, vaj pItlh devices sign-inbogh trackable, ghom navDaj, je routes follow-up motlh poSqa'laH pegh tlhobqa'be'taHvIS.

website deliberately direct entry base route rap lo' wej formsvaD: /trackable/{publicCode}, /trackable/{secretCode}, je /trackable/{qrToken}.

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

public-code lookup rInDI', public page cha'lu'bogh /{lang}/trackable/{publicCode}Daq tu'lu'.

shared entry routevetlh QaptaHlaH, configured short-code lengths pItlh choHchugh je, server code value resolve-moHmo' je hard-coded website path variationsDaq relybe'mo'.

ghajwI' botlh website trackable route-mey public URL patDaq lanlu'be'; chovlu'ta' net.

pojvam note navmeyDaq je qap. ngogh public lo'lu' public trackable nav poSmeH; 'ach note rarmeH pegh ngogh mach tu'lu'ta'nIS pagh browser session active-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, trackable team ghajbogh moj; team admins SeHlaH, je activating member control poltaH teamvetlhDaq taHtaHvIS. teamId tu'be'chugh, trackable personal ghajwI' ghajbogh moj.

when a grouped item is chu'moHlu'ta', the ghajwI' can either yIpol an explicit item pong and ghItlh or intentionally copy the ghom's current default pong and ghItlh into the item.

detach and reattach ghommey

  • DELETE /api/trackables/{trackableId}/group DaH ghom rarghach teq.
  • POST /api/trackables/{trackableId}/group tlhej { "trackableGroupId": "..." } associates a detached trackable with a new ghom.
  • POST /api/trackables/groups/{trackableGroupId}/watch ghom visible members DaHotchoHmoH. member-item watches same groupDaq botlhDaq ghom watchDaq DelmeH pe'laHtaH, je ghajwI'-or-watch overlap user HochvaD deduplicatelu'.
  • DELETE /api/trackables/groups/{trackableGroupId}/watch stops monitoring the ghom.

trackable wa' ghom neH ghajlaH. detach-first rule server'e' pabmoH. original activator neH detached trackable rarlaHqa'; je destination ghom uservetlh pagh eligible team admin controlDaq ghaHnIS.

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

trackable commentmey

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

unactivated trackablemey cannot receive commentmey or journey stops.

Daq'elbogh SuchwI'pu' commentmey chenmoHlaHchu'. Daq'elbe'bogh SuchwI'pu' je commentmey chenmoHlaH, 'ach ghItlh HochvaD browservetlhDaq active trackable session tu'nISlu' qoj trackablevetlhvaD pegh ngogh machvetlh qoj pegh QR token ngebqa'nISlu'.

comment yIchoHlaH comment ghItlhwI' neH, Daq'elbogh ghItlhwI' 'oHchugh. trackable ghajwI'pu' je DaH team adminpu' commentmey qoj journey stopmey Qaw'laH, 'ach latlhpu' mu'mey ghItlhqa'laHbe'.

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

leng stopmey nIteb

journey feed DaH immutable stop history ghaH. note-backed stopmey note rarlu'taHvIS location snapshot, 'ej note chenmoHpa' direct map reports pollu'laH.

linked note pItlh coordinate pImDaq movechoHchugh, trackable journey stop snapped wa'DIch poltaHtaH, vaj logistics history peghchoHtaHvIS rewriteQo'.

anonymous direct reports anonymous commentmey pab rap tlhej: caller browservetlh active trackable session 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 label-first place facts nob. Hoch point coordinateId, locationLabel, currentNotesAtCoordinate je tlhegh, vaj pa' coordinateDaq DaH visible note'mey cha'anglaH clientmey, 'ach reH wa' poltaHghach note ghajbogh stop'e' DaHotnISbe'.

Journey responses city, stateOrProvince, country je fieldmeyDaq outward place contract botlhHa'be' qaStaHvIS. locationLabel je coordinatemey 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

journey navmey trackable mapped locations cha'laH, note 'op peghchugh je. DotlhmeyvetlhDaq leghwI'pu' unauthorized location point tlhaplaH, 'ach note De' Hubta'bogh tlhaplaHbe'.

authorized viewersvaD note pong, ghItlh, je note link noblu'chu' journey payload preloadedvo' je map pin popupmeyvo'.

Qaw'ghach je poltaHghach

account wa' Qaw'lu'DI', trackablemey accountvetlhDaq qeqta'bogh Hoch Qaw'lu'be' automatically. trackablemey chuqbogh pagh ghom ghajbogh taHlaH, user Qaw'lu'ta'bogh personal activity teqlaHbogh neH teqlu'taHvIS.

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

trackable mIw paqmey

trackable APIDaq signed-in ghajghach mIw naQ je anonymous reporting mIw peghDaq Qapbogh mach tu'lu'. ordered call sequences, decision points, je copy-paste examples DapoQchugh route catalog qaq law'be', bIngDaq dedicated pages yIlo'.

QonoSta'bogh mIw

Doch Samlu'bogh lookupvo' browser pegh accessDaq, sign-in, chu'moHghach, note rarghach, direct journey logging, moderation, export/deletion qelghach je qeltaH.

yIpoS the authenticated trackable api flow guide

mIw anonymous

sign-in Qo'bogh callers 'ach pegh ngogh exact pagh private QR token ghajbogh, direct location report pagh comment HungtaHvIS postmeH.

yIpoS the anonymous trackable api flow guide

Qagh nejghach

DaH trackable problem-details responsemeyDaq stable machine-readable code field chellu'. Qagh reference page yIlo'; failuremeyvaD likely causemey je fixes yISam.

yIpoS the trackable api error reference

nIn endpointmey

nIn chabe'ghach reH parent item tlhej. caller connected profilenav, notenav, ghomnav, trackablenav, pagh trackable-ghomnav poSlaHchugh, nInmeyDaj poSlaH je. parent itemDaq access tu'be'chugh, nIn tetlhDoch pagh chegh, je nIn downloadmey direct 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. website je Android app API pabmey rap je file routes rap lulo'.

nInmey ghajwI' botlh yItlhegh

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

readsva'meH galleries yIpopulate. item Hoch image GUID, original dimensions, je thumbnail, small, medium, je large stored copies relative URLs qeng.

originalWidth je originalHeight, uploaded source image qechvaD Del. downloadlaHlu'bogh files'e' resized stored variants neH 'oH, thumbnailUrl, smallUrl, mediumUrl, je largeUrl botlh rarbogh.

curl "https://www.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} anonymous qoj Bearer

variant mI'mey Qapbogh: thumbnail, small, medium, large. response image/jpeg cheghmoH.

/Images/{Variant}/{guid}-{size}.jpg bIngDaq website file URLmey parent-visibility pab rap lupoQ image bytes jablu'pa'. vaj direct image linkmey profile, note, team, trackable, qoj trackable-ghom permissions rarboghDaq qaDtaH.

curl -L "https://www.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 file field pongbogh file neH yIngeH. target SeHlaHmeH chaw' Daghajta'nIS, ghom navmeyvaD team-admin access je parent Seghmey latlhvaD choHmoHmeH chaw' motlh botlh. uploads naDlu' polpa', vaj JPEG copies size choHlu'ta'bogh neH polta'lu'.

curl -X POST "https://www.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' images

DELETE /api/images/{contentImageId} Bearer token

Qaw'ghach parent-management chav rap poQ, chelghach rap. Qaw'lu'chu'DI', content-image row je variants resized polta'lu'bogh Hoch rap teqlu'.

API lo'wI'pu' HTTP DELETE ngeHnIS naDev. URLvam browser address barDaq yIlanQo'; pa' GET ngeHlu', vaj 405 chegh. routevam download nav 'oHbe'.

browser gallery delete mIwmey anti-forgery protection polmeH, website delete buttonmey localized form route /{culture}/images/{contentImageId}/delete lo'.

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

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

compliance report ghItlhghach

inappropriate-content reports, tracked system errors, je website support-request flow QapmoHbogh support-ticket records rapvaD routesvam yIlo'. anonymous callers reports noblaH, 'ach pIq API botlh status updates je super-admin resolutions tlhejlaH signed-in reporters neH.

report yInob

POST /api/compliance/reports anonymous qoj Bearer

website cookie pagh bearer tokenmo' caller 'ollu'chugh, report 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 anonymous qoj Bearer

API route unexpected 500 botlh QapHa'ta' je problem-details JSONDaq ticketNumber nobta'chugh, pa' ticketvetlh naDev yIghItlh; cha'logh error log row yIchenmoHQo'. caller super-admin follow-up 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, error ticket 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 values URL, Android screen, pagh Android background task rur yIlo'. server-generated 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

routesvam caller reportDaj neH nob, caller super-admin 'oHbe'chugh. content reports je tracked system errors botlh Reported, Reviewing, pagh Resolved cha'meH lulo'laH, je qav resolution note 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-admin naDghach

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

admin listDaq report link, page metadata, offending-content metadata, reporter identity tu'lu'chugh, je review note motlh chellu'. updates DaH review state je visible resolution text ghItlh.

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

report resolved DachoHmoHDI', status cha' yIghajmoH je resolutionText chImbe'bogh yIchel.

enum mI'ghachmey

  • pageType: 0 profile page'e', 1 team page'e', 2 note page'e', 3 trackable page'e', 4 trackable ghom page'e', 5 system Qagh, 6 QaH page
  • contentType: 0 pong, 1 ghItlh, 2 comment QIn, 3 QIn, 4 bio De', 5 pong je ghItlh, 6 Qagh De', 7 image Doch, 8 QaH poQghach
  • status: 0 QInlu'ta', 1 naDlu'taH, 2 rurbogh

website page-level reports DaH 5 lo', vaj report button wa' visible pong je visible description/body wa'logh qaplaH. comment-level reports comment-specific content types lo'taH.

website support ra'mey motlh Support Page je Support request tickets yIchenmoHtaH COMPLIANCE.ContentReports store rapDaq, 'ach browser form Support page lo' taH, raw API routevam lo'be'.

tracked website, API, je Android app Qaghmey LOG.ErrorsDaq pollu'. trackInSupportTickets chaw'lu'DI', linked support ticket COMPLIANCE.ContentReportsDaq je cha'lu', vaj super-admin review je reporter status workflow rap tlhej.

system je beta metadata

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

health checkmey, Android compatibility gating, beta-page URL DaHtaHbogh, je current request map/privacy stateQe'Daq Dochvam yIlo'.

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

staged Android beta metadata cheghmoH: display version, version code, version compat minimum, je release notemey ngaS.

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

map centering je troubleshootingvaD, current request IP botlh location law' potlhbogh nob. client IP private, local, pagh trustedbe'chugh, HTTP 200 ratlh response je failure failureReason transport error chenmoHbe'taHvIS.

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

stop-planner je map-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', sign-in preference request-time privacy rules QaptaH'a' pagh no_3rd_partiesDaq forcedlu'pu'a' net SovmoH.
  • requestedMapSource, preferredMapSource, je fallbackMapSource tell you user provider nuq tlhobta', server provider nuq wa'DIch QattaH, je preferred source Qapbe'chugh provider nuq QapnIS.
  • thirdPartyBrowserCallsAllowed, googleMapsAllowed, je openStreetMapAllowed tell you requestvam browser-side providerpu' Dalo'laH'a'.
  • hostedMapsForcedByPrivacy botlh hostedMapTileUrlTemplate tell you request same-origin hosted tilemeyDaq forcedlu'pu'bogh, DaH /maps/tiles/{z}/{x}/{y}.png.

private-network, local-network, je IPmey resolution ghajbe'bogh deliberate mIw stricter lo'. vaj localhost pagh office-network test no_3rd_parties je hosted_maps cha'laH, logged-in preference nImtaHchugh je.

curl "https://www.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://www.locationnotes.com/tlh-US/account/beta",
  "requestedExperienceMode": "latest_and_greatest",
  "effectiveExperienceMode": "no_3rd_parties",
  "usesSavedExperienceModePreference": false,
  "usesVisitorExperienceModePreferenceCookie": false,
  "thirdPartyBrowserCallsAllowed": false,
  "requestedMapSource": "google_maps",
  "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://www.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://www.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": ""
}

route inventory pat

qechvam current LocationNotes API surfacevaD verb je path checklist naQ 'oH; framework SeHbogh identity routemey /api/auth bIngDaq cheltaHvIS. nuHDaq sectionmey botlh mIwmey Del. inventoryvam route-level source of truth 'oH, 'ej live endpoint table rapnIS.

identity auth je account 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

account, system, sync, je external linkmey

  • 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

note je public note pagemey

  • 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 anonymous qoj Bearer
  • GET /api/public/teams/{teamName}/notes/nearby anonymous qoj Bearer
  • GET /api/public/notes/{noteId} anonymous qoj Bearer
  • GET /api/public/notes/{noteId}/comments anonymous qoj Bearer
  • POST /api/public/notes/{noteId}/comments Bearer token
  • GET /api/public/notes/{noteId}/trackables anonymous qoj Bearer
  • POST /api/public/notes/{noteId}/trackables Bearer token

categorymey je workspace 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

teammey, membershipmey, je invite linkmey

  • 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

trackablemey je active secret-backed sessionmey

  • GET /api/trackables/public anonymous qoj Bearer
  • GET /api/trackables/mine Bearer token
  • GET /api/trackables/{trackableId} anonymous qoj Bearer
  • GET /api/trackables/{trackableId}/journey anonymous 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 anonymous qoj Bearer
  • POST /api/trackables/{trackableId}/comments anonymous qoj Bearer
  • PUT /api/trackables/{trackableId}/comments/{commentId} Bearer token
  • DELETE /api/trackables/{trackableId}/comments/{commentId} Bearer token
  • POST /api/trackables/{trackableId}/journey-stops anonymous qoj Bearer
  • DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId} Bearer token

nInmey je compliance

  • GET /api/images/profiles/{userId} anonymous qoj Bearer
  • GET /api/images/notes/{noteId} anonymous qoj Bearer
  • GET /api/images/teams/{teamId} anonymous qoj Bearer
  • GET /api/images/trackables/{trackableId} anonymous qoj Bearer
  • GET /api/images/trackable-groups/{trackableGroupId} anonymous qoj Bearer
  • GET /api/images/{contentImageId}/{variant} anonymous 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 anonymous qoj Bearer
  • POST /api/compliance/errors anonymous 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' account from the api

QonoSta'bogh clients API botlh current account je synced personal data permanently Qaw'laH. yIlaD Data yIQaw' team-owned data je exportsvaD retention yIpabmeH mIw Hoch DaneHchugh, wa'DIch page yIlegh.

trackable cleanup Hoch pagh pagh 'oHbe'. server user Qaw'lu'ta'bogh personal activity trackablevetlhDaq teqlaHbogh teq, 'ach trackablemey chuqbogh, ghom ghajbogh trackablemey, pagh qun users latlhpu' teqbe', account wa' Qaw'lu'mo' neH. team-owned trackable teamvaD potlhtaHchugh, teamvetlhDaq taH. latlh nuv activity trackableDaq ratlhtaHchugh, trackablevetlh systemDaq taH.

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

Qaghmey je problem ghItlhmey

naDHa'ghach, chavHa'ghach, je nejHa'ghach Qaghmey standard HTTP status codes cheghmoH. workspace mIwmey law' RFC 7807 style problem-details JSON nob; pong, detail, je status 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-rule rejectionvaD
  • 401 QonoSghach tu'be'lu'bogh qoj Qapbe'boghvaD
  • 403 access ghajbe'bogh authenticated usersvaD
  • 404 note'mey, categorymey, ghommey, ghomwI'ghachmey, qoj invite QInmey tu'be'lu'boghvaD

trackable write routes stable code 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 trackable Qagh reference page.