.st0{fill:#FFFFFF;}

Stop Calling It Bad Copy—Your JSON Error Message Is Doing Exactly What It’s Supposed To Do 

 June 14, 2025

By  Joe Habscheid

Summary: When a system answers with an error message instead of a traditional story, you’re not looking at a communication failure — you’re looking at a precision tool doing exactly what it was built for. In this post, we’ll unpack the meaning and necessity of JSON-based error messages, especially the specific case of "InsufficientBalanceError", why they matter in software design, and how misunderstanding their role can derail development efforts or content strategies prematurely. This isn't about rewriting — it's about reading correctly.


What You’re Really Looking At

The text in question isn't prose, copy, or content for storytelling. It’s a structured error message: a JSON object returned by an API. The message tells you exactly what the issue is — InsufficientBalanceError — and gives a human-readable follow-up: the user must recharge their account to continue. That’s the job of this piece of communication: stop further computation, notify the client, and preserve the integrity of system resources.

What happens here is not failure — it's elegant automation. It's the system doing its job by clearly stating its limits. Would you want a bank transaction to go through when funds are missing? Of course not. So why should an API keep processing with insufficient balance?

JSON: Not Meant to Tell Stories

Let’s not confuse tools. JSON — JavaScript Object Notation — is built for machines to talk to one another. Humans read it only when something goes wrong or during debugging. It’s not narrative content. It doesn't need tension, a protagonist, or a moral arc. It needs clarity, speed, and precision for developers and engineers to take corrective action quickly.

Asking whether such a message "can be rewritten into a story" is like asking whether a receipt can be rewritten into a poetry anthology. You're not wrong for asking. It just means we need to separate function from format. Do you think product managers and engineers often feel misunderstood when stakeholders demand UX layers over backend structures? How would the message change if the audience were a user-friendly front end instead of a middleware developer?

When Precision Beats Prose

By design, this text is already minimalistic. It tells us four things:

  • The API did not complete the request.
  • The reason is insufficient balance.
  • The error has a specific label — useful for debugging and automation.
  • The message advises on the next step — recharge the account.

Nothing superfluous. No ambiguity. That's good design. In fact, trying to turn this into traditional narrative undermines the entire point of using structured data.

The Misstep of Misunderstanding the Communication Channel

Misreading a system response for poor content is exactly the kind of faulty assumption that breaks cross-functional communication in tech. Marketing wants stories. DevOps wants logs. Product wants clarity. Legal wants audit trails. Everyone has their channel and language — and the JSON error stays in the developer’s lane.

This isn’t about denying creativity — it’s about applying it where appropriate. So the better question may be: if this is the message coming from your API, what’s the best way to wrap or translate it for other audiences? What would this message look like to a user in an app interface? What would it need to sound like inside your onboarding emails or usage warning indicators?

The Power of Saying "No"

The JSON error is a polite but firm “No.” It creates a stopping point. That’s critical. Often we rush to turn “no” into “yes,” or weaken it by rephrasing. Chris Voss would argue: embracing that “no” gives you a chance to regroup, to ask better questions — “What is this error trying to protect?” or “What’s the balance threshold and what triggers it?” or “Can this message be customized for different user segments?”

Instead of rewriting this into a story it was never meant to be, the smarter move is to ask: what part of the system needs a more human-friendly wrapper? Who exactly is the audience? Does this message ever surface for end-users? Do we need logging only, or graceful degradation in the UI?

Fear of Omitting the Human Side

It’s fair to say developers and tech experts often overlook storytelling. But in this case, demanding narrative from a status code adds friction, not value. You’re seeing a muscle do the job it trained for. There’s no shame in system-enforced limits. In fact, the idea that every piece of text in software must be "rewritten" into a human story speaks to a deeper fear — the fear that unless it sounds marketable, it’s not useful.

But clean design — especially when we’re talking about systemic safeguards and warnings — is useful. More than that, it’s humane. It protects resources, prevents fraud, and keeps performance stable for other users who paid in full. That protects everyone’s future access. That’s about fairness. That’s a different kind of story, just told with different tools.

Reframing the Challenge Without Diluting Purpose

So the next time you're handed a text that feels "too technical" or "not a story," ask instead:

  • Who is the real audience for this?
  • What decision does this text help them make?
  • What happens if this message goes unread, misunderstood, or overwritten?

You don’t need to turn JSON errors into prose. You need to place them in the right context. Sometimes that means building UI layers to sit on top of these messages. Sometimes it means leaving them alone. Use empathy — but don’t force art where structure is required. The more you respect the format, the easier it becomes to make your system both functional and friendly.

The hard truth? Not every output you see in tech is meant for the masses. And that’s okay. That’s not a bug — it’s a feature.


#SoftwareArchitecture #APIResponses #ErrorDesign #DeveloperTools #UXWriting #HumanCenteredTech #PrecisionOverProse #CommunicateWithClarity #NoIsPower #MessagingMatters

More Info -- Click Here

Featured Image courtesy of Unsplash and Ilya Semenov (6uFROinaC3g)

Joe Habscheid


Joe Habscheid is the founder of midmichiganai.com. A trilingual speaker fluent in Luxemburgese, German, and English, he grew up in Germany near Luxembourg. After obtaining a Master's in Physics in Germany, he moved to the U.S. and built a successful electronics manufacturing office. With an MBA and over 20 years of expertise transforming several small businesses into multi-seven-figure successes, Joe believes in using time wisely. His approach to consulting helps clients increase revenue and execute growth strategies. Joe's writings offer valuable insights into AI, marketing, politics, and general interests.

Interested in Learning More Stuff?

Join The Online Community Of Others And Contribute!