Getting Started

This page will help you get started with Wonolo. You'll be up and running in a jiffy!

Welcome to the Wonolo API

Wonolo (stands for Work. Now. Locally.) is an on-demand staffing platform providing employers with a low cost option to find pre-screened workers to fill jobs quickly and reliably based on their particular needs. Wonolo allows companies to manage unpredictability by augmenting their existing labor force with hourly to daily Wonoloers who can work immediately and do the job.

The Wonolo API provides a mechanism to integrate customized applications and proprietary workflows with this platform. Integration points could include automation for software responsible for scheduling and timekeeping or HR/CRM systems. Individual systems can work directly with the API in a decentralized fashion through secure, standards based protocols.

The Wonolo API (V2.0) is a RESTful API to perform CRUD operations on Wonolo platform resources. In addition, Webhooks are available to monitor the state of particular resources.

Currently, JSON is the only encoding format supported.

Familiarizing Yourself with Wonolo

In order to get up and running with the API, we recommend familiarizing yourself with the Wonolo mobile and web apps used by workers and administrators.

The Wonolo mobile app is used by workers to accept and manage jobs. It may be downloaded from Apple App Store and Android Play Store.

The Wonolo Customer Portal is a web app used to post jobs

The Wonolo Admin App is used to administer the Wonolo Platform, CRUD resources, debug API calls and Webhooks. Note: you will only have access to the Admin App on the test environment.


In order to keep data secure, all API calls must be made over https.

With the exception of the /authenticate and /info services, all API calls must use an authorization token (passed as the token request parameter).

API Keys and Access Level

The Wonolo API requires you have valid API keys. To obtain these API keys, please apply here.

Wonolo API keys will provide one of two different levels of access to Wonolo resources:

  • Public Pool access — if you are accessing Wonolo's public pool of Wonoloers
  • Private Pool access — if your company is managing its own private pool of workers

With Public Pool access, you will only be able to access those Wonoloers you have active Jobs with, as well as Job Requests and Jobs that you have created. Also, write operations (update/PATCH and create/POST) are forbidden in many cases.

For more details, consult the documentation of the individual endpoints.

Test and Production Environments

You will be issued with two sets of API keys:

test (starting with pk_test and sk_test) - for use with

production (starting with pk_live and sk_live) - for use with

Obtaining an Authorization Token

Once you receive your API keys, the first step is to authenticate to obtain a token for use with subsequent API calls by sending your api_key and your secret_key to the /api_v2/authenticate endpoint.

curl -X POST \
var request = require("request");

var options = { method: 'POST',
  url: '',
   { api_key: 'pk_live_[your_key]',
     secret_key: 'sk_live_[your_key]' },
   { 'cache-control': 'no-cache',
     Connection: 'keep-alive',
     'Content-Length': '0',
     'Accept-Encoding': 'gzip, deflate',
     Host: '',
     'Cache-Control': 'no-cache',
     Accept: '*/*',
     'Content-Type': 'application/x-www-form-urlencoded' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

require 'uri'
require 'net/http'

url = URI("[your_key]&secret_key=sk_live_[your_key]")

http =, url.port)

request =
request["Content-Type"] = 'application/x-www-form-urlencoded'
request["Accept"] = '*/*'
request["Cache-Control"] = 'no-cache'
request["Host"] = ''
request["Accept-Encoding"] = 'gzip, deflate'
request["Content-Length"] = '0'
request["Connection"] = 'keep-alive'
request["cache-control"] = 'no-cache'

response = http.request(request)
puts response.read_body
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
});"POST", "[yourkey]&secret_key=sk_live_[yourkey]");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

import requests

url = ""

querystring = {"api_key":"pk_live_[your_key]","secret_key":"sk_live_[your_key]"}

headers = {
    'Content-Type': "application/x-www-form-urlencoded",
    'Accept': "*/*",
    'Cache-Control': "no-cache",
    'Host': "",
    'Accept-Encoding': "gzip, deflate",
    'Content-Length': "0",
    'Connection': "keep-alive",
    'cache-control': "no-cache"

response = requests.request("POST", url, headers=headers, params=querystring)


A successful response will be returned as follows;

    "token": "QwErTyAsDfZxCv",
    "expires_at": "2019-11-09T22:56:59Z"

What’s Next

Get started by defining badges specific to your company and the jobs you will be posting