Version 3 of the Zotero Web API introduces a new all-JSON response format and various other changes. While API v3 is mostly backwards compatible, existing clients may need to make a few small adjustments for full compatibility, depending on usage.
format=json
key
and version
properties and top-level library
, links
, and meta
objects.meta
contains non-editable system-generated properties like createdByUser
/ lastModifiedByUser
(for group items), creatorSummary
, and numChildren
.title
, author
, published
, updated
) have been removed.application/atom+xml
in the Accept
header will continue to receive Atom responses if no other format is requestedformat=json
, include=data
has replaced Atom's content=json
and is now the default mode, with a top-level data
object containing the editable fields. As with content
, additional comma-separated types can be requested (e.g., include=data,bib
). The requested types are provided as top-level properties. content=html
remains the default in Atom.items
/collections
/searches
property containing an array.data
) or the full parent JSON object, with the server extracting the data
object automatically. The latter allows for some editing tasks to be performed without any programming.parsedDate
property in the format=json
meta
object gives the full parsed date in YYYY-MM-DD form, so that clients don't need to replicate Zotero's date-parsing logic to get exact dates. In v3 Atom, zapi:parsedDate
replaces zapi:year
.zapi:numTags
is removed in v3 Atom, since it's unnecessary with the tags
array in the editable json.limit
isn't provided.Total-Results
. zapi:totalResults
is removed in v3 Atom.rel=first
/prev
/next
/last
/alternate
links for multi-object responses are now provided in the Link
HTTP header.Authorization
request header instead of the key
query parameter. Since API keys have never been included in the URLs provided in responses, previously all provided URLs had to be modified for key-based access.v=3
) instead of the Zotero-API-Version
header for easier debugging and sharing of requests, though both will remain supported. dateModified
descending is the default sort instead of dateAdded
descending. itemKey
/itemVersion
(and similar properties on collections and searches) in the editable JSON are now just key
and version
for easier handling by clients. Clients that simply pass back the edited JSON without touching those properties shouldn't be affected. Clients that store the JSON will need to modify it before sending in v3.version
metadata field in the computerProgram
item type is now versionNumber
to avoid a conflict with the renamed object version property.published
/updated
elements, though in v2 they can be sent back in the JSON as dateAdded
/dateModified
in YYYY-MM-DD hh-mm-dd format, interpreted as UTC. In v3 write requests, either is accepted, though the previous form is deprecated.accessDate
field, which was also previously YYYY-MM-DD[ hh-mm-dd], is ISO 8601 in v3 (including in Atom) for both reading and writing. The previous form is accepted but deprecated.rel=self
/first
/prev
/next
/last
) on multi-object responses can be used without modification by clients using the Authorization
header. The rel=self
links in individual objects are meant as base URIs and do not include any query parameters (e.g., include=data,bib
). This is a change from the previous behavior, where the Atom entry rel=“self”
links include all non-default provided parameters. But with the Authorization
header and include=data
as the new default, the base URI may be sufficient for most individual-object requests.newer
parameter is now since
for clarity. newer
is deprecated.order
parameter is now sort
and sort
is now direction
. order=<field>
and sort=<asc/desc>
are deprecated.format=versions
instead of format=etags
. format=etags
is deprecated.pprint=1
has been removed, and all responses are now pretty-printed. format=atom
explicitly, or send application/atom+xml
in the Accept
headerzapi:parsedDate
instead of zapi:year
Total-Results
HTTP header instead of zapi:totalResults
tags
array in editable JSON instead of using zapi:numTags
key
/version
instead of itemKey
/itemVersion
(and collection*
/search*
) in editable JSONversionNumber
instead of version
metadata field in computerProgram
item typeaccessDate
, dateAdded
, and dateModified
since
parameter instead of newer
sort
parameter instead of order
and direction
instead of sort
items
/collections
/searches
arrayAuthorization: Bearer <apiKey>
instead of key
parameterv
parameter instead of Zotero-API-Version
for debugging