Skip to main content


The Diigo API allows you to build apps that interact with the Diigo service. For example, you can use the API to fetch or post bookmarks for a user. The Diigo API is entirely HTTP based and conform to HTTP standards and conventions, making it easy to use with standard technologies.

The API is still under development. The current version is v2. If you have any questions or suggestions, please contact

API key

To use the Diigo API, an API key is required. The key must be included in each API request as an HTTP query parameter.

You can sign up for an API Key here.


The Diigo API allows you to interact with the service on behalf a Diigo user. The authentication uses HTTP Basic authentication - a standard authentication method that includes base64 encoded username and password in the Authorization request header. Developers must NOT use the credentials provided by users for any other purposes. Other authentication options such as OAuth may be supported in future.

RESTful API style

The Diigo API is RESTful.

Each API method URL corresponds to a resource. The HTTP method (aka. verb) is used to specify the operation.

  • A GET request is used to retreive data.
  • A POST request may add, update or destroy data.
  • The DELETE method is also accepted for methods that destroy data.

API methods usually require a particular HTTP method. Such requirements are documented for each method.

Calling the API

To call an API method, just make an HTTP request to the corresponding URL with proper parameters.

The API URLs are prefixed by version. The current version is v2. All API URLs begin with

The Diigo API only accepts and returns text encoded in UTF-8.

Prameters are passed in standard HTTP query string. Parameters are required to be properly URL encoded.

The API key is also passed as a parameter.

An API request looks like


The Diigo API attempts to returns meaningful HTTP status codes for each request. Possible codes are

200 OK
400 Bad Request
Some request parameters are invalid or the API rate limit is exceeded.
401 Not Authorized
Authentication credentials are missing or invalid.
403 Forbidden
The request has been refused because of the lack of proper permission.
404 Not Found
Either you're requesting an invalid URI or the resource in question doesn't exist (e.g. no such user).
500 Internal Server Error
Something is broken.
502 Bad Gateway
Diigo is down or being upgraded.
503 Service Unavailable
The Diigo servers are too busy to server your request. Please try again later.

The response body contains data in the JSON format - a light weight serialization format for structured data.

API Methods

Retrieve bookmarks

Returns a list of bookmarks satisfying various criteria. Request method: GET


required, string, the username of whose bookmarks to fetch
optional, number, the start offset of the bookmarks to fetch starting from 0, defaults to 0
optional, number, the number of bookmarks to fetch, defaults to 10, max:100
optional, number 0-3, determines the order of bookmarks to fetch, 0: created_at, 1: updated_at, 2: popularity, 3: hot, defaults to 0
optional, string, only bookmarks with specified tags will be returned. multiple tags are separated by comma
optional, string, public: only returns public bookmarks; all: returns all bookmarks including private ones, defaults to public
optional, string, the list name of a bookmark list, when specified, user must be also specified

Example request


An array of bookmarks.

Example Response (JSON)

    "title":"Diigo API Help",
    "created_at":"2008/04/30 06:28:54 +0800",
    "updated_at":"2008/04/30 06:28:54 +0800",
    "title":"Google Search",
    "created_at":"2008/04/30 06:28:54 +0800",
    "updated_at":"2008/04/30 06:28:54 +0800",

Save bookmark

Saves a bookmark for the authenticated user

Request method:POST


required, string 1-250, the title of the bookmark
required, string 1-250, the url of the bookmark
optional, string, the value can be yes/no, yes means the bookmark is public, no means the bookmark is private, defaults to no
optional, string, 1-250, tags separated by comma
optional, string 1-250, the description for the bookmark
optional, string, value can be yes/no, specifies whether the bookmark is "unread", defaults to no
optional, string, value can be yes/no, specifies merge or replace infomation of the bookmark, defaults to yes

Example request




Example Response (JSON)

{ "message" : "added 1 bookmark(s)" }