# JSON:API spec key clauses (captured)
captured_at=2026-03-01T16:01:55Z
source=https://jsonapi.org/format/

177:( application/vnd.api+json )
193: The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
194:“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this
204: application/vnd.api+json . 
236: The JSON:API media type MUST NOT be specified with any media type parameters
242:profile’s URI SHOULD return documentation that describes its usage. The
243:values of the ext and profile parameters MUST equal a space-separated
257: An extension MUST NOT lessen or remove any processing rules, restrictions or
268:extension MUST define a namespace to guarantee that extensions will never
270: MUST meet all of the following conditions: 
273: A namespace MUST contain at least one character. 
274: A namespace MUST contain only these characters:
283: An extension MUST NOT define more than one namespace. The namespace used for
284:all query parameters and document members MUST be the same for any given
292: Content-Type: application/vnd.api+json;ext= "https://jsonapi.org/ext/version" 
314: A profile MUST NOT define any query parameters except implementation-specific query parameters . 
316: A profile MUST NOT alter or remove processing rules that have been defined
322:parameter , but it could not specify that relationship
323:names in the include query parameter are
340: Content-Type: application/vnd.api+json;profile= "https://example.com/resource-timestamps" 
361: Clients and servers MUST send all JSON:API payloads using the JSON:API media
364: Clients and servers MUST specify the ext media type parameter in the
368: Clients and servers MUST specify the profile media type parameters in the
374: When processing a JSON:API response document, clients MUST ignore any
399:servers MUST respond with a 415 Unsupported Media Type status code if
405:parameter contains an unsupported extension URI, the server MUST respond
415:servers MUST ignore instances of that media type which are modified by a
418:servers MUST respond with a 406 Not Acceptable status code. If every
420:at least one unsupported extension URI, the server MUST also respond with a
423: If the profile parameter is received, a server SHOULD attempt to apply any
424:requested profile(s) to its response. A server MUST ignore any profiles
433: Servers that support the ext or profile media type parameters SHOULD 
453:members MUST comply with the naming requirements specified
457:extensions MUST NOT contain any additional members. Client and server
458:implementations MUST ignore non-compliant members. 
467: A JSON object MUST be at the root of every JSON:API request and response
470: A document MUST contain at least one of the following top-level members: 
474: errors : an array of error objects . 
480: The members data and errors MUST NOT coexist in the same document. 
487: included : an array of resource objects that are related to the primary
488:data and/or each other (“included resources”). 
491: If a document does not contain a top-level data key, the included member
492: MUST NOT be present either. 
498:document has extensions or profiles applied to it, this link SHOULD be
502:resource relationship. 
513:by the client to generate the response document. This includes but is not
515: sparse fieldsets , sorting ,
522: Primary data MUST be either: 
541: "relationships" : { 
542: // ... this article's relationships 
559: A logical collection of resources MUST be represented as an array, even if
566: A resource object MUST contain at least the following top-level members: 
575:case, a client MAY include a lid member to uniquely identify the resource
582: relationships : a relationships object describing relationships between
586:resource that can not be represented as an attribute or relationship. 
598: "relationships" : { 
601: "self" : "/articles/1/relationships/author" , 
613: As noted above, every resource object MUST contain a
614: type member. Every resource object MUST also contain an id member,
617:a lid member MAY be included to uniquely identify the resource by type 
618: locally within the document. The value of the lid member MUST be
622: The values of the id , type , and lid members MUST be strings. 
624: Within a given API, each resource object’s type and id pair MUST 
629:attributes and relationships. 
631: The values of type members MUST adhere to the same constraints as
642: A resource object’s attributes and its relationships are collectively called
645: Fields for a resource object MUST share a common namespace with each
647:attribute and relationship with the same name, nor can it have an attribute
648:or relationship named type or id . 
652: The value of the attributes key MUST be an object (an “attributes
659: Keys that reference related resources (e.g. author_id ) SHOULD NOT appear
660:as attributes. Instead, relationships SHOULD be used. 
668: The value of the relationships key MUST be an object (a “relationships
669:object”). Each member of a relationships object represents
670:a “relationship” from the resource object 
675: A relationship’s name is given by its key. The value at that key MUST be an
676:object (“relationship object”). 
679:A “relationship object” MUST contain at least one of the following: 
684: self : a link for the relationship itself (a “relationship link”). This
685:link allows the client to directly manipulate the relationship. For example,
