The complete list of what the app sends over the network. If a request is not on this page, the app does not make it. Each call has a page of its own.
01 · opensolr.com: your account
| Call | When |
GET /app/authorize | Sign-in, in your browser. See signing in |
POST /app/token | The end of sign-in: this phone's own key and the plan |
POST /app/api/device_key | Once, for a phone still on the account's master key |
photos_sync_info | The start of a sync: indexes, index address and plan in one call |
get_index_list | Setup, and when photos_sync_info could not answer |
vector_regions | Before creating the index: where it can go |
create_index | Only when the index is certainly missing |
upload_zip_config_files | A new index, or a new index configuration |
get_core_info | The index address and password, when they are needed again |
get_account_summary | The end of every sync, and Refresh on the Me screen |
place_search | Typing a city or town in the place picker |
photos_storage_* | Only with a backup backend: saving it, reading it on another phone, changing its quality, forgetting it |
02 · api.opensolr.com: reading and searching your photos
| Call | When |
photos_ingest | New or changed photos, five per call: the whole indexing happens there |
photos_words | Words you changed, fifty photos per call, no picture |
photos_restore | Filling an emptied index back from the phone's copy, fifty documents per call |
photos_select | A typed search by meaning |
03 · The phone's index, and two other hosts
| Call | When |
/select, /suggest, /update, /opensolr-photos-config | Searches on words, facets, autocomplete, similar photos, the map, deletes, and the checks of a sync |
tile.openstreetmap.org | Map tiles, only while the map screen is open |
| Your storage backend | Only when you set one: your S3 bucket or WebDAV folder, straight from the phone. See backup |
api.github.com | Whether a newer release exists: once a day, and on Check for updates. Nothing about you or your photos |
github.com | The new version's APK, only when you tap to install it, in the copy installed from GitHub. GitHub hands the download to its own file host; no other host is followed |
Account credentials travel in the request body and the index's credentials in the request's Authorization header, never in an address. No call that carries a credential follows a redirect, so a credential is never sent to a host the app did not name. The app does not call nearby_places: the place of a photo is worked out inside photos_ingest.
Most of what you do sends nothing at all: browsing, Stats, the tag suggestions and the comparison a sync makes are answered by the phone's copy of the index.
04 · Refusals the app understands
| Answer | What the app does |
ERROR_AUTHENTICATION_FAILED | The key was refused, or the phone was signed out in Account › Devices: back to the sign-in screen |
429 ERROR_AI_MONTHLY_QUOTA_EXCEEDED | A search by meaning runs on words only |
| 429, rate limit | The sync pauses and continues on its own a little later |
VECTOR_NOT_ALLOWED | A search by meaning runs on words only |
NOT_OWNER_ERROR | The index is treated as missing, and created only if the index list confirms it |
| 401 from the index | Reads the current password and repeats the request once |
| 403 from the index | Over disk space or bandwidth: the sync stops, a notification opens your account |