Web API Client Requirements 

The only requirement for the client that will send JSON:API requests to the server is that it must specify the application/vnd.api+json media type in Accept and/or Content-Type headers.

The GET, OPTIONS and HEAD requests should have the Accept header.

The POST, PATCH and DELETE requests must have the Content-Type header and should have the Accept header.

The JSON:API media type for the Content-Type header must not contain any media type parameters.

The JSON:API media type for the Accept header must not contain any media type parameters, except quality values.

Example of a Valid GET request

GET /api/users HTTP/1.1
Accept: application/vnd.api+json

Example of Valid POST requests

POST /api/users HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
POST /api/users HTTP/1.1
Content-Type: application/vnd.api+json

At the same time, it must ignore any media type parameters received in the Content-Type header of the response.

Example of a Response

Request

POST /api/users HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

Response

HTTP/1.1 201 Created
Content-Type: application/vnd.api+json

{"data": [
  {
    "type": "accounts",
    "id": "1",
    "attributes": {
      "name": "Life Plan Counseling",
    },
    "relationships": {
    }
  }
]}

Requests with the non JSON:API media type value will be perceived as a plain API request, so the response data will have a plain format rather than JSON:API.

Example of Non JSON:API Media Type

Request

GET /api/users HTTP/1.1
Accept: application/json

Response

[
  {
    "id": 1,
    "name": "Life Plan Counseling",
    "contacts": [
      1
    ]
  },
]

For more information about the API client requirements, see Client Responsibilities.