What changed
Fingerprinting needs at least 4 seconds of audio. Shorter clips could
never be identified, but the 422 you got back said
fingerprint failed: fpcalc exited 2: ERROR: Empty fingerprint — which
names a program running on our side and tells you nothing you can act on. It also gave no
hint that the failure was permanent, so the natural response was to retry, and the retry
always failed the same way.
The message now says the clip is too short, states the minimum, and says plainly that
retrying the same file will not change the result. Two machine-readable codes come with it:
AUDIO_TOO_SHORT for a clip under the minimum, and
FINGERPRINT_FAILED for audio that decoded but could not be fingerprinted at
all — usually truncated or corrupt. Both are permanent for that file.
One narrower case is fixed with it. A clip of almost exactly 3 seconds did produce a fingerprint, but one too short to match anything, and we rejected it while reporting an invalid fingerprint — describing something that had not happened. That case is still rejected, because a wrong match is worse than an honest error, but it is now reported for what it is.
What you need to do
Nothing, unless you retry 422s from /identify. If you do, stop
retrying on these two codes and send a longer excerpt instead. For reliable matching, 15
seconds or more works far better than the 4-second floor — the minimum is where
fingerprinting becomes possible, not where it becomes good.