Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
dev:web_api:v3:read_requests [2014/06/10 19:04] – [GET Requests] dstillmandev:web_api:v3:read_requests [2014/06/12 05:49] dstillman
Line 1: Line 1:
-====== Zotero Web API Read Requests ======+<html><p style="color:red; font-weight:bold">This is draft documentation. APIv3 is not yet available for use.</p></html>
  
-**This is not currently the default [[read_requests#api_versioning|version]] of the Zotero API. Include the ''Zotero-API-Version: 2'' HTTP header or the ''v=3'' query parameter to access this version.**+====== Zotero API Reference ====== 
 + 
 +**This is not currently the default [[read_requests#api_versioning|version]] of the API. Include the ''Zotero-API-Version: 3'' HTTP header or the ''v=3'' query parameter to access this version.**
  
 The page documents read requests available in the [[start|Zotero Web API]], providing read-only access to online Zotero libraries. The page documents read requests available in the [[start|Zotero Web API]], providing read-only access to online Zotero libraries.
Line 17: Line 19:
 **To use this version of the API, include the ''Zotero-API-Version: 3'' HTTP header or the ''v=3'' query parameter with all requests.** The current default version is [[:dev/web_api/v1/|version 1]], which will be discontinued. **To use this version of the API, include the ''Zotero-API-Version: 3'' HTTP header or the ''v=3'' query parameter with all requests.** The current default version is [[:dev/web_api/v1/|version 1]], which will be discontinued.
  
-At most times, API changes are made in a backwards-compatible manner. On rare occasions, however, backwards-incompatible changes may need to be made. When this occurs, the new API version will first be made available via the ''Zotero-API-Version'' HTTP header or ''v'' query parameter, while other clients will continue to receive the old version. After a transition period, the new API version will become the default. At that point, the previous API version may be discontinued, with the oldest available API version being returned to clients requesting the discontinued version. Announcements regarding API version transitions will always be made ahead of time on [[https://groups.google.com/group/zotero-dev|zotero-dev]].+At most times, API changes are made in a backwards-compatible manner. On rare occasions, however, backwards-incompatible changes may need to be made. When this occurs, the new API version will first be made available via the ''Zotero-API-Version'' HTTP header or ''v'' query parameter, while other clients will continue to receive the old version. After a transition period, the new API version will become the default. If an API version is discontinued, clients requesting the discontinued version will receive the oldest available version. Announcements regarding API version transitions will always be made ahead of time on [[https://groups.google.com/group/zotero-dev|zotero-dev]].
  
 The API version of a response will be returned in the ''Zotero-API-Version'' response header. The API version of a response will be returned in the ''Zotero-API-Version'' response header.
 +
 ===== Authentication ===== ===== Authentication =====
  
Line 26: Line 29:
 Accessing non-public libraries requires use of an API key. Third-party developers should [[oauth|use OAuth to establish credentials]] or instruct their users to create dedicated keys for use with their services. End users can create API keys via [[/settings/keys/new|their Zotero account settings]]. Accessing non-public libraries requires use of an API key. Third-party developers should [[oauth|use OAuth to establish credentials]] or instruct their users to create dedicated keys for use with their services. End users can create API keys via [[/settings/keys/new|their Zotero account settings]].
  
-===== GET Requests =====+API keys can be included in requests in one of two ways: 
 + 
 +  - As an HTTP header, in the form ''Authentication: Bearer P9NiFoyLeZu2bZNvvuQPDWsd''\\ 
 +  - As a URL query parameter, in the form ''key=P9NiFoyLeZu2bZNvvuQPDWsd'' 
 + 
 +Use of the ''Authentication'' header is recommended, as it will allow use of URLs returned from the API (e.g., for pagination) without modification. 
 + 
 +===== Resources ===== 
 + 
 +==== User and Group Library URLs ====
  
 Requests for data in a specific library begin with ''/users/<userID>'' or ''/groups/<groupID>''. User IDs are different from usernames and can be found on the [[/settings/keys|API Keys]] page and in OAuth responses. Requests for data in a specific library begin with ''/users/<userID>'' or ''/groups/<groupID>''. User IDs are different from usernames and can be found on the [[/settings/keys|API Keys]] page and in OAuth responses.
-==== Requests for "/users/<userID>" or "/groups/<groupID>" ==== 
  
 ^ URI ^ Description ^ ^ URI ^ Description ^
Line 50: Line 61:
 | <userOrGroupPrefix>/searches/<searchKey> | A specific saved search in the library | | <userOrGroupPrefix>/searches/<searchKey> | A specific saved search in the library |
  
-==== Requests Specific to "/users/<userID>" ====+==== User-Only URLs ====
  
 |< 100% 30% >| |< 100% 30% >|
Line 57: Line 68:
 | /users/<userID>/keys/<key> | The privileges of the given API key. | | /users/<userID>/keys/<key> | The privileges of the given API key. |
  
-===== URL Parameters =====+===== Read Requests =====
  
-All parameters are optional.+The following parameters affect the format of data returned from read requests. All parameters are optional.
  
-==== Parameters for All Requests ====+==== General Parameters ==== 
 + 
 +The following parameters are valid for all read requests:
  
 ^ Parameter ^ Values ^ Default ^ Description ^ ^ Parameter ^ Values ^ Default ^ Description ^
-| format | "atom""bib""keys""versions", [[#export_formats|export formats]] | "atom" "atomwill return an Atom feed.\\ "bib", valid only for item requests, will return a formatted bibliography as XHTML. "bibmode is currently limited to a maximum of 150 items.\\ "keys", valid for multi-object requests, will return a newline-separated list of object keys. "keysmode has no default or maximum limit.\\ "versions", valid for multi-object collection, item, search, and tag requests, will return a JSON object with Zotero object keys as keys and object versions as values. Like "keys""versionsmode has no default or maximum limit. \\ Export formats, valid only for item requests, produce output in the specified format. The 'limit' parameter is required for multi-item export format requests. +''format'' ''atom''''bib''''json'', ''keys''''versions'', [[#export_formats|export format]] | ''json'' ''atom'' will return an Atom feed suitable for use in feed readers or feed-reading libraries.\\ ''bib'', valid only for item requests, will return a formatted bibliography as XHTML. ''bib'' mode is currently limited to a maximum of 150 items.\\ ''json'' will return a JSON array for multi-object requests and a single JSON object for single-object requests.\\ ''keys'', valid for multi-object requests, will return a newline-separated list of object keys. ''keys'' mode has no default or maximum limit.\\ ''versions'', valid for multi-object collection, item, search, and tag requests, will return a JSON object with Zotero object keys as keys and object versions as values. Like ''keys''''versions'' mode has no default or maximum limit. \\ Export formats, valid only for item requests, produce output in the specified format. |
-| newer | integer | 0 | Return only objects modified after the specified library verson. | +
-| key | string | null | If a valid API key is provided, the request will be processed with the identity of the key's owner and the authority granted to the key.|+
  
-==== Search Parameters ====+==== Parameters for "format=json" ====
  
 ^ Parameter ^ Values ^ Default ^ Description ^ ^ Parameter ^ Values ^ Default ^ Description ^
-itemKey string null | A comma-separated list of item keys. Valid only for item requests. Up to 50 items can be specified in single request. | +''include'' ''bib'', ''data'', [[#export_formats|export format]]\\ Multiple formats can be specified by using comma as the delimiter (''include=data,bib''). | ''data'' | Formats to include in the response:\\ ''bib'', valid only for item requestswill return a formatted reference for each item.\\ ''data'' (the default) will include all writeable fields in JSON formatsuitable for modifying and sending back to the API.\\ Export formats, valid only for item requests, will return data in the specified format for each item. |
-| q | string | null | Quick search. Searches titles and individual creator fields by default. Use the ''qmode'' parameter to change the mode. Currently supports phrase searching only. | +
-| qmode | "titleCreatorYear""everything" | "titleCreatorYear" | Quick search modeTo include full-text content in the searchuse "everything"Searching of other fields will be possible in the future+
-| itemType | [[#search_syntax|search syntax]] | null | Item type search | +
-| tag | [[#search_syntax|search syntax]] | search syntax | Tag search |+
  
-==== Search Syntax ====+==== Parameters for "format=atom" ====
  
-''itemType'' and ''tag'' parameters support Boolean searches:+^ Parameter ^ Values ^ Default ^ Description ^ 
 +''content'' | ''bib'', ''html'', ''json'', [[#export_formats|export formats]], ''none''\\ Multiple formats can be specified by using a comma as the delimiter (''content=json,bib''). | ''html'' | The format of the Atom response's ''<content>'' node:\\ ''html'' (the default) will return an XHTML representation of each object, useful for display in feed readers and for parsing by XML tools.\\ ''json'', currently valid only for item and collection requests, will return a JSON representation of all the item's fields.\\ ''bib'', valid only for item requests, will return a formatted reference for each item.\\ Export formats, valid only for item requests, will return data in the specified format for each item.\\ If additional data is not required, use ''none'' to decrease the response size.\\ If multiple formats are requested, ''<content>'' will contain multiple ''<zapi:subcontent>'' elements (in the %%http://zotero.org/ns/api%% namespace), each with a ''zapi:type'' attribute matching one of the specified content parameters. |
  
-Examples:+==== Parameters for "format=bib" and "content=bib" ====
  
-  * "itemType=book" +^ Parameter ^ Values ^ Default ^ Description ^ 
-  * "itemType=book ''||'' journalArticle" (OR+| ''style''string | ''chicago-note-bibliography'' | Citation style to use for formatted references. Should be the file name (without the .csl extensionof one of the default styles in the Zotero Style Repository (e.g., ''apa'' for https://www.zotero.org/styles/apa). Support for other styles is forthcoming.| 
-  * "itemType=-attachment" (NOT)+                                                                                  
 +Note the difference between ''format=bib'' and ''content=bib''. ''format=bib'' returns a formatted bibliography as XHTML, sorted according to the rules of the selected style. ''content=bib'' (valid only for ''format=atom'', the default format modereturns an individual formatted reference within the Atom ''<content>'' block for each item, with the Atom feed sorted according to the query parameters. ''format=bib'' processes the entire feed you are requesting without regard for any limit arguments, so it is generally a good idea to use it only with collections or tags.
  
-  * "tag=foo" +==== Export Formats ====
-  * "tag=foo bar" (tag with space) +
-  * "tag=foo&tag=bar" (AND) +
-  * "tag=foo bar ''||'' bar" (OR) +
-  * "tag=-foo" (NOT) +
-  * "tag=\-foo" (literal first-character hyphen)+
  
 +The following bibliographic data formats can be used as ''format'', ''include'', and ''content'' parameters:
  
-==== Parameters for "format=atom", "format=keys", and "format={export_format}" ====+^ Parameter ^ Description ^ 
 +| ''bibtex'' | BibTeX | 
 +| ''bookmarks'' | Netscape Bookmark File Format | 
 +| ''coins'' | COinS | 
 +| ''csljson'' | [[https://github.com/citation-style-language/schema/blob/master/csl-data.json|Citation Style Language data format]] | 
 +| ''mods'' | MODS | 
 +| ''refer'' | Refer/BibIX | 
 +| ''rdf_bibliontology'' | [[http://bibliontology.com/|Bibliographic Ontology]] RDF | 
 +| ''rdf_dc'' | Unqualified Dublin Core RDF | 
 +| ''rdf_zotero'' | Zotero RDF | 
 +| ''ris'' | RIS | 
 +| ''tei'' | Text Encoding Initiative (TEI) | 
 +| ''wikipedia'' | Wikipedia Citation Templates |
  
-The following parameters are valid only when accessing a resource that represents a set of objects. For example, ''/users/123/items'' represents a set of items, while ''/users/123/items/ABCD2345'' represents a single item. 
  
-^ Parameter ^ Values ^ Default ^ Description ^ +===== Searching =====
-| order | "dateAdded", "dateModified", "title", "creator", "type", "date", "publisher", "publicationTitle", "journalAbbreviation", "language", "accessDate", "libraryCatalog", "callNumber", "rights", "addedBy", "numItems" (tags) | dateAdded | The name of the field by which entries are ordered | +
-| sort | "asc", "desc" | varies by "order"  | The sorting direction of the field specified in the ''order'' parameter | +
-| limit | integer 1-99* | 50* | The maximum number of results to return with a single request. Required for export formats. | +
-| start | integer | 0 | The index of the first result. Combine with the limit parameter to select a slice of the available results. |+
  
-* Applies to ''format=atom'' and ''format={export_format}'' only. ''format=keys'' and ''format=versions'' have no default or maximum limit. +==== Search Parameters ====
- +
-==== Parameters for "format=atom" and "format={export_format}" ====+
  
 ^ Parameter ^ Values ^ Default ^ Description ^ ^ Parameter ^ Values ^ Default ^ Description ^
-pprint boolean false Pretty print the response: \\ ''format=atom'': Outputs the response with content type ''text/xml'' instead of ''application/atom+xml'' and adds a long comment before to disable Firefox's feed auto-detection.\\ ''format={export_format}'': Outputs the response with content type ''text/plain'' for easier display in browsers. |+''itemKey'' string null | A comma-separated list of item keys. Valid only for item requests. Up to 50 items can be specified in a single request. | 
 +| ''itemType'' | [[#search_syntax|search syntax]] | null | Item type search | 
 +''q'' | string | null | Quick search. Searches titles and individual creator fields by default. Use the ''qmode'' parameter to change the modeCurrently supports phrase searching only. | 
 +''qmode'' ''titleCreatorYear'', ''everything'' | ''titleCreatorYear'' | Quick search mode. To include full-text content in the search, use ''everything''. Searching of other fields will be possible in the future
 +| ''since'' | integer | ''0'' | Return only objects modified after the specified library verson. | 
 +| ''tag'' | [[#search_syntax|search syntax]] | null | Tag search |
  
-==== Parameters for "format=atom" ====+==== Search Syntax ====
  
-^ Parameter ^ Values ^ Default ^ Description ^ +''itemType'' and ''tag'' parameters support Boolean searches:
-| content | "html", "json", "bib", [[#export_formats|export formats]], "none"\\ Multiple formats can be specified by using a comma as the delimiter ("content=json,bib"). | "html" | The format of the Atom response's <content> node:\\ "html" (the default) will return an XHTML representation of each object, useful for display in feed readers and for parsing by XML tools.\\ "json", currently valid only for item and collection requests, will return a JSON representation of all the item's fields.\\ "bib", valid only for item requests, will return a formatted reference for each item.\\ Export formats, valid only for item requests, will return data in the specified format for each item.\\ If additional data is not required, use "none" to decrease the response size.\\ If multiple formats are requested, <content> will contain multiple <zapi:subcontent> elements (in the %%http://zotero.org/ns/api%% namespace), each with a zapi:type attribute matching one of the specified content parameters. |+
  
-==== Parameters for "format=bib" and "content=bib" ====+Examples:
  
-^ Parameter ^ Values ^ Default ^ Description ^ +  * ''itemType=book'' 
-style string | "chicago-note-bibliography" | Citation style to use for formatted references. Should be the file name (without the ".csl" extensionof one of the default styles in the Zotero Style Repository (e.g., "apa" for http://www.zotero.org/styles/apa). Support for other styles is forthcoming.|+  * ''itemType=book || journalArticle'' (OR) 
 +  * ''itemType=-attachment'' (NOT)
  
-Note the difference between ''format=bib'' and ''content=bib''''format=bib'' returns a formatted bibliography as XHTML, sorted according to the rules of the selected style. ''content=bib'' (valid only for ''format=atom'', the default format modereturns an individual formatted reference within the Atom ''<content>'' block for each item, with the Atom feed sorted according to the query parameters. ''format=bib'' processes the entire feed you are requesting without regard for any limit arguments, so it is generally a good idea to use it only with collections or tags.+  * ''tag=foo'' 
 +  * ''tag=foo bar'' (tag with space) 
 +  * ''tag=foo&tag=bar'' (AND) 
 +  * ''tag=foo bar || bar'' (OR) 
 +  * ''tag=-foo'' (NOT) 
 +  * ''tag=\-foo'' (literal first-character hyphen)
  
-==== Export Formats ====+Be sure to URL-encode search strings if required by your client or library.
  
-The following bibliographic data formats can be used as 'format' and 'content' parameters: 
  
-^ Parameter ^ Description ^ +===== Sorting and Pagination =====
-| bibtex | BibTeX | +
-| bookmarks | Netscape Bookmark File Format | +
-| coins | COinS | +
-| csljson | [[https://github.com/citation-style-language/schema/blob/master/csl-data.json|Citation Style Language data format]] | +
-| mods | MODS | +
-| refer | Refer/BibIX | +
-| rdf_bibliontology | [[http://bibliontology.com/|Bibliographic Ontology]] RDF | +
-| rdf_dc | Unqualified Dublin Core RDF | +
-| rdf_zotero | Zotero RDF | +
-| ris | RIS | +
-| tei | Text Encoding Initiative (TEI) | +
-| wikipedia | Wikipedia Citation Templates |+
  
 +==== Sorting and Pagination Parameters ====
  
-===== Caching =====+The following parameters are valid only for multi-object read requests such as ''<userOrGroupPrefix>/items'', with the exception of ''format=bib'' requests, which do not support sorting or pagination.
  
-For efficient usage of the APIclients should make conditional GET requests whenever possible. If ''If-Modified-Since-Version: <libraryVersion>'' is passed with a multi-object read request (e.g., ''<userOrGroupPrefix>/items''and data has not changed in the library since the specified version, the API will return ''304 Not Modified''. If ''If-Modified-Since-Version: <objectVersion>'' is passed with a single-object read request (e.g.''<userOrGroupPrefix>/items/<itemKey>''), a ''304 Not Modified'' will be returned if the individual object has not changed.+^ Parameter ^ Values ^ Default ^ Description ^ 
 +| ''sort'' | ''dateAdded'', ''dateModified'', ''title'', ''creator'', ''type'', ''date'', ''publisher'', ''publicationTitle'', ''journalAbbreviation'', ''language'', ''accessDate'', ''libraryCatalog'', ''callNumber'', ''rights'', ''addedBy'', ''numItems'' (tags| ''dateModified'' (''dateAdded'' for Atom) | The name of the field by which entries are sorted | 
 +| ''direction'' | ''asc'', ''desc'' | varies by ''sort''  | The sorting direction of the field specified in the ''sort'' parameter | 
 +''limit'' | integer 1-99* | ''50'' | The maximum number of results to return with a single request. Required for export formats
 +''start'' | integer | ''0'' | The index of the first result. Combine with the limit parameter to select a slice of the available results|
  
-While a conditional GET request that returns a 304 should be fast, some clients may wish to perform additional caching on their own, using stored data for a period of time before making subsequent conditional requests to the Zotero API. This makes particular sense when the underlying Zotero data is known not to change frequently. For example, a web page that displayed a bibliography from a Zotero collection might cache the returned bibliography for an hour, after which time it would make another conditional request to the Zotero API. If the API returned a ''304'', the web page would continue to display the cached bibliography for another hour before retrying.+=== Total Results ===
  
-===== Rate Limiting =====+Responses for multi-object read requests will include a custom HTTP header, ''Total-Results'', that provides the total number of results matched by the request. The actual number of results provided in a given response will be less than 100.
  
-Clients accessing the Zotero API should be prepared to handle two forms of rate limiting: backoff requests and hard limiting.+=== Link Header ===
  
-If the API servers are overloaded, the API may include ''Backoff: <seconds>'' HTTP header in responsesindicating that the client should perform the minimum number of requests necessary to maintain data consistency and then refrain from making further requests for the number of seconds indicated. ''Backoff'' can be included in any response, including successful ones.+When the total number of results matched by a read request is greater than the current limit, the API will include pagination links in the HTTP ''Link'' header. Possible values are ''rel=first'', ''rel=prev'', ''rel=next'', and ''rel=last''. For some requeststhe header may also include a ''rel=alternate'' link for the relevant page on the Zotero website.
  
-If a client has made too many requests within a given time period, the API may return ''429 Too Many Requests'' with a ''Retry-After: <seconds>'' headerClients receiving a ''429'' should wait the number of seconds indicated in the header before retrying the request.+<code> 
 +GET https://api.zotero.org/users/12345/items?limit=30 
 +</code> 
 +<code> 
 +Link: <https://api.zotero.org/users/12345/items?limit=30&start=30>; rel="next", 
 + <https://api.zotero.org/users/12345/items?limit=30&start=5040>; rel="last", 
 + <https://www.zotero.org/users/12345/items>; rel="alternate" 
 +</code>
  
-''Retry-After'' can also be included with ''503 Service Unavailable'' responses when the server is undergoing maintenance. +(Newlines are inserted here for clarity.)
-===== Example Requests and Responses =====+
  
-Several examples of read request URLs and their responses:+===== Caching =====
  
-^ Atom feed - List of items in collection ^^ +For efficient usage of the API, clients should make conditional GET requests whenever possible. If ''If-Modified-Since-Version<libraryVersion>'' is passed with a multi-object read request (e.g., ''/users/1/items'') and data has not changed in the library since the specified version, the API will return ''304 Not Modified''. If ''If-Modified-Since-Version<objectVersion>'' is passed with a single-object read request (e.g., ''/users/1/items/ABCD2345''), a ''304 Not Modified'' will be returned if the individual object has not changed.
-| Request | https://api.zotero.org/users/475425/collections/9KH9TNSJ/items?format=atom | +
-| Response | https://gist.github.com/923206 (Not updated for API v2)|+
  
-^ Atom feed - Single item ^^ +While a conditional GET request that returns a ''304'' should be fast, some clients may wish or need to perform additional caching on their own, using stored data for a period of time before making subsequent conditional requests to the Zotero APIThis makes particular sense when the underlying Zotero data is known not to change frequently or when the data will be accessed frequentlyFor example, a website that displayed a bibliography from a Zotero collection might cache the returned bibliography for an hour, after which time it would make another conditional request to the Zotero APIIf the API returned a ''304'', the website would continue to display the cached bibliography for another hour before retrying. This would prevent the website from making a request to the Zotero API every time a user loaded a page.
-| Request | https://api.zotero.org/users/475425/items/X42A7DEE?format=atom | +
-| Response | https://gist.github.com/mronkko/5077731 |+
  
 +===== Rate Limiting =====
  
-^ Atom feed - Single item with all possible content^^ +//[Not all rate limits are currently enforcedbut clients should be prepared to handle them.]//
-| Request | https://api.zotero.org/users/475425/items/X42A7DEE?format=atom&content=json,bib,html | +
-| Response | https://gist.github.com/mronkko/5077751 |+
  
 +Clients accessing the Zotero API should be prepared to handle two forms of rate limiting: backoff requests and hard limiting.
  
-^ Atom feed - List of collections for a user ^^ +If the API servers are overloaded, the API may include a ''Backoff: <seconds>'' HTTP header in responses, indicating that the client should perform the minimum number of requests necessary to maintain data consistency and then refrain from making further requests for the number of seconds indicated''Backoff'' can be included in any response, including successful ones.
-| Request | https://api.zotero.org/users/475425/collections?format=atom | +
-| Response | https://gist.github.com/1492705 (Not updated for API v2) |+
  
-^ Formatted bibliography ^^ +If a client has made too many requests within a given time period, the API may return ''429 Too Many Requests'' with a ''Retry-After<seconds>'' headerClients receiving a ''429'' should wait the number of seconds indicated in the header before retrying the request.
-| Request | https://api.zotero.org/users/475425/collections/9KH9TNSJ/items?format=bib | +
-| Response | https://gist.github.com/mronkko/77bc2413cce4c219f862 |+
  
-These requests can be performed from the command line:+''Retry-After'' can also be included with ''503 Service Unavailable'' responses when the server is undergoing maintenance.
  
-<code bash> +===== Example GET Requests and Responses ===== 
-curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/475425/collections/9KH9TNSJ/items?format=atom' + 
-curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/475425/items/X42A7DEE?format=atom' +TODO
-curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/475425/items/X42A7DEE?format=atom&content=json,bib,html' +
-curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/475425/collections?format=atom' +
-curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/475425/collections/9KH9TNSJ/items?format=bib' +
-</code> +
-===== Write Requests =====+
  
-The API also supports [[write requests]] that allow the creation, modification, and deletion of data in online Zotero libraries. 
  
 ===== HTTP Status Codes ===== ===== HTTP Status Codes =====
Line 210: Line 214:
  
 ''429 Too Many Requests'' indicates that the client has been [[#rate_limiting|rate-limited]]. ''429 Too Many Requests'' indicates that the client has been [[#rate_limiting|rate-limited]].
 +
 +===== Additional Documentation =====
 +
 +  * [[Write Requests]]
 +  * [[file_upload|File Uploads]]
 +  * [[Syncing]]
 +  * [[oauth|OAuth Authentication]]
 +  * [[changes_from_v2|Changes from API Version 2]]