While testing the pagination features of T264970, I noticed that the frontend error reported when attempting to submit a duplicate URL is very generic: "Uh oh! Something went wrong. Error: Bad Request".
Looking at the raw response from the backend API shows a bit more information, but also that the information is in a very generic structure:
{ "url": [ "crawled url with this url already exists." ] }
String based error reporting is the sort of thing that makes API client authors angry. It makes it very difficult to take automated actions based on the response as interpreting the error requires natural language parsing or hard coding string to state mappings in the client.
We should try out drf-friendly-errors as a way to add structure and documentable error codes to the API's error responses.