Problem type:
https://docs.nordicfinancialnews.com/problems/semantic-unavailable503 when a search using mode=semantic cannot turn your query into an embedding. Either the upstream embedding call failed, or it did not finish inside the 3 second in-request timeout.
Only requests that ask for mode=semantic can return this. Keyword search is unaffected and stays available throughout.
Example response
Response headers
Why you get an error instead of keyword results
When semantic matching is unavailable, the API could quietly rank your results with keyword search instead. It deliberately does not. A silent fallback would return a differently ranked page under an identical request shape, with nothing in the response to say which ranking you received. That is difficult to detect and worse to debug, particularly for an agent that cannot tell the two apart. Failing explicitly means a200 from a mode=semantic request always contains a genuine semantic result.
Choosing keyword ranking is therefore yours to make, not something the API does on your behalf.
How to fix it
Wait the number of seconds inRetry-After and retry the same request. This condition is usually brief.
Python
mode=semantic and use keyword search until it recovers. Make that switch explicit in your own code so you always know which ranking produced the results you are holding.
Retries and the embedding cache
Successful query embeddings are cached for one hour, keyed on the query text after case folding and trimming. A query that embedded successfully within the last hour is normally served from that cache, so it does not re-embed and will not raise this error. A timed-out or failed embedding is not written to that cache, so a retry genuinely re-attempts the call rather than replaying a stored failure.Related
- Error handling for the full problem type list
- Rate limit exceeded for the
429returned when you exceed a request limit