Skip to content

Errors

The package exposes JSON:API-friendly exceptions and a shared handler that returns a standardized errors envelope.

Raise package exceptions

from django_ninja_jsonapi.exceptions import BadRequest


@api.post("/articles")
def create_article(request, body: ArticleCreateSchema):
    if not body.title:
        raise BadRequest(detail="Title is required", parameter="data.attributes.title")
    ...

Example (query parameter error)

{
  "errors": [
    {
      "status": "400",
      "source": {"parameter": "include"},
      "title": "Bad Request",
      "detail": "Invalid query parameter: includez"
    }
  ]
}

For strict query validation, unknown parameters and repeated non-filter parameters now return 400.

Example (resource validation error)

{
  "errors": [
    {
      "status": "422",
      "source": {"pointer": "/data/attributes/name"},
      "title": "Unprocessable Entity",
      "detail": "Name must be at least 3 characters"
    }
  ]
}

Use package exceptions (for example BadRequest) in your views so errors are consistently serialized.