Nobody enjoys an error message, and the worst kind is the one that tells you nothing: "Something went wrong." Wrong where? Wrong how? When things go wrong on He.art or Heart Photos, the message ends with a little tag in brackets, and that tag is there to answer those two questions. This post explains how to read it.
What it looks like
Here is one you can see for yourself. Open a blog address that does not exist, such as he.art/blog/no-such-post, and the page says:
There is no blog post at this address (HA-1311 · fsnc42)
The words come first, as they always did. The brackets hold two things, with a dot between them:
- The code,
HA-1311. It names which error this is. The same error carries the same code every time, for every reader. - The reference,
fsnc42. Six letters and digits, made new each time an error happens. Open that address again and the code stays while the reference changes. It points to one moment: yours.
Why two parts
A code alone tells us what kind of thing went wrong. Many messages share their words ("could not read the accounts" is said in more than one place), and the code tells those places apart.
The reference tells us when it went wrong for you. Each error is written to our log with its code and its reference side by side, so a reference you quote takes us to that exact line, with nothing to guess from a description or an image of your screen.
Codes that begin HA- and codes that begin HAC-
There are two families:
HA- and four digits |
The server answered, and said no. These carry a reference. |
HAC- and four digits |
The page itself is reporting, because the server could not be reached or said nothing. These have no reference, since there was no answer to give one. |
So a message ending in (HAC-0056) alone is not missing anything. It usually means the trouble was between your browser and us: a dropped connection is a common cause, and trying again often clears it.
Look a code up
Every code is listed on one public page, with no need to sign in: he.art/docs/errors, and the same list at heart.photos/docs/errors. On Nov 10, 2026 it holds 1,700 codes.
- Open the page and type into Find a code or words. The list narrows as you type and the count above it follows. Typing "blog post" leaves 2 codes, one for each of our two blogs.
- Each row gives the code, what it says, and where it comes from: Server or This page.
- Every code has an address of its own. he.art/docs/errors#HA-1311 opens the page at that row and tints it, which makes a code easy to send to somebody else.
A few rows read "Words made when it happens". Those are errors whose message is put together on the spot, so there are no fixed words to list, but the code is still fixed.
The page is made from the same list the site itself is built with, so it always matches the codes the live site can send.
If you write to us
Send both parts, the code and the reference, exactly as they appear. Copying the whole message is the easiest way. The words help too, but the tag in brackets is what lets us find your moment instead of asking you what you were doing.
For people who use the API
A JSON error from Heart Photos carries the same two things as fields of their own, beside the message. Asking the library API for your account with no token answers:
{"code":"HA-0226","error":"a library token is required (HA-0226 · mncczn)","ref":"mncczn"}
If your program acts on an error, read code (or the HTTP status), never the words. Words get reworded; a code keeps meaning the same thing.
Try it
Next time something refuses in He.art, look for the brackets at the end, then paste the code into the error codes page and see what it says. With luck you will not need it often.