Short answer

An XML error when you try to open/expand an image is almost always one of two harmless, easily-worked-around things — not a lost photo:

  1. The image link has timed out. For security, every image Civic.ly serves carries a signature on its link that expires after a set time. If you've had a page open for a while without refreshing or clicking around, that signature can lapse — and trying to open the image then returns an authentication error, which the browser renders as a page of raw XML. A quick refresh of the page issues a fresh, valid link and it opens fine.
  2. You're opening the photo too soon after uploading. A freshly-uploaded photo needs a moment to finish uploading and for the AI to process it. Click in before that's done and you can hit a similar error. Give it a little time and try again.

So: refresh the page first; if it was a just-uploaded image, wait a moment. If it still won't open after that, save/screenshot the XML message and send it to us with a rough idea of how many photos you'd loaded and whether you're on the mobile app or the web app — that tells us where to look.

Detail

Why the signature exists. Asset and task images are stored privately. Civic.ly hands your browser a signed link — a URL with a time-limited signature baked in — rather than a permanently-public address. This stops images being shared or scraped outside the platform. The trade-off is that the signature is only valid for a window; once it expires, the storage service rejects the request and replies with an XML-formatted "access denied / authentication" error. Browsers display that reply verbatim, which is why it looks alarming (a wall of <Error>...</Error> XML) even though nothing is broken. Reloading the page asks Civic.ly for new signed links, and everything works again.

Why "after loading a dozen or so" is the giveaway. If you've been sat on the same page steadily uploading for a while without navigating, the links that were issued when the page first loaded are the ones most likely to have aged out — so the failures tend to show up once you've been at it for a bit. It's the elapsed time on a stale page, not the number of photos, that's the real cause.

Mobile vs web. Worth telling us which one you're on. The expiring-signature behaviour applies to both, but the fix (refresh / reload) and any deeper investigation differ between the app and the browser, so it helps us narrow it down quickly.

Watch-outs

  • Don't assume the photo failed to upload. An XML error on expand is a viewing/link issue, not an upload failure — the image is almost certainly safe. Refresh before re-uploading, or you'll create duplicates.
  • A "no location" error on upload is a different thing. That one is about GPS metadata, not signatures — see I've uploaded photos but they're not showing up on the map / their location isn't being detected — how do I fix it?.
  • If a refresh doesn't fix it, capture the XML text and the device/app context for us — a signature error that survives a reload is worth a closer look.