KoBo JSON Rest API endpoints:



Users and Organizations

Status Codes

  • 200 - Successful [GET, PATCH, PUT]
  • 201 - Resource successfully created [POST]
  • 204 - Resouce successfully deleted [DELETE]
  • 403 - Permission denied to resource
  • 404 - Resource was not found


KoBo JSON API enpoints support both Basic authentication and API Token Authentication through the Authorization header.

Basic Authentication

Example using curl:

curl -X GET https://kc.kobotoolbox.org/api/v1/ -u username:password

Token Authentication

Example using curl:

curl -X GET https://kc.kobotoolbox.org/api/v1/ -H "Authorization: Token TOKEN_KEY"

KoBo Tagging API

Using Oauth2 with the KoBo API

You can learn more about oauth2 here.

1. Register your client application with KoBo - register

  • name - name of your application
  • client_type - Client Type: select confidential
  • authorization_grant_type - Authorization grant type: Authorization code
  • redirect_uri - Redirect urls: redirection endpoint

Keep note of the client_id and the client_secret, it is required when requesting for an access_token.

2. Authorize client application.

The authorization url is of the form:

GET /o/authorize?client_id=XXXXXX&response_type=code&state=abc



Note: Providing the url to any user will prompt for a password and request for read and write permission for the application whose client_id is specified.


  • client_id - is the client application id - ensure its urlencoded
  • response_type - should be code
  • state - a random state string that you client application will get when redirection happens

What happens:

  1. a login page is presented, the username used to login determines the account that provides access.
  2. redirection to the client application occurs, the url is of the form:


example redirect uri

  • code - is the code to use to request for access_token
  • state - same state string used during authorization request

Your client application should use the code to request for an access_token.

3. Request for access token.

You need to make a POST request with grant_type, code, client_id and redirect_uri as POST payload params. You should authenticate the request with Basic Authentication using your client_id and client_secret as username:password pair.





curl example:

curl -X POST -d "grant_type=authorization_code&
redirect_uri=http://localhost:30000" "http://localhost:8000/o/token/"
--user "e8:xo7i4LNpMj"


    "access_token": "Q6dJBs9Vkf7a2lVI7NKLT8F7c6DfLD",
    "token_type": "Bearer", "expires_in": 36000,
    "refresh_token": "53yF3uz79K1fif2TPtNBUFJSFhgnpE",
    "scope": "read write groups"


  • access_token - access token - expires
  • refresh_token - token to use to request a new access_token in case it has expored.

Now that you have an access_token you can make API calls.

4. Accessing the KoBo API using the access_token.

Example using curl:

curl -X GET https://kc.kobotoolbox.org/api/v1
-H "Authorization: Bearer ACCESS_TOKEN"
GET /api/v1/