Developers

The Pudding API.

A small REST API over the things hiring teams automate: inviting candidates into a concert, checking where an engagement stands, and pulling finished work back into your own systems.

Base URL


https://app.pudding.work/api/v1

Every response is JSON. Responses are sent with no-cache headers, so what you read is always current.

Authentication


Requests use HTTP Basic auth. Your 64-character API key is the username and the password is left empty, which is what -u "$KEY:" sends. Keys are scoped to a single organization; requests without a valid key return 401 Unauthorized.

Example

Fetching engagements.

One call returns every engagement in your organization, with the stage and status each candidate is currently in.

Request
curl https://app.pudding.work/api/v1/engagements \
  -u "$PUDDING_API_KEY:"
Node
const response = await fetch(
  'https://app.pudding.work/api/v1/engagements',
  {
    headers: {
      Authorization:
        'Basic ' + Buffer.from(`${process.env.PUDDING_API_KEY}:`).toString('base64'),
    },
  },
)

const engagements = await response.json()

const delivered = engagements.filter(
  (engagement) => engagement.current_status === 'delivered',
)
200 OK
[
  {
    "id": "cnc_7f21b9:9f4c1ad3e8b27a0c",
    "concert_id": "cnc_7f21b9",
    "current_stage": 1,
    "current_status": "working",
    "current_rated": false,
    "stages_active": [1]
  },
  {
    "id": "cnc_7f21b9:1d80fe64c5a93b17",
    "concert_id": "cnc_7f21b9",
    "current_stage": 1,
    "current_status": "delivered",
    "current_rated": true,
    "stages_active": [1]
  }
]

Each record tells you where a candidate stands. current_stage is the stage they are working through and current_status is their general status in the engagement. current_rated turns true once the work delivered in that stage has been assessed, and resets when the candidate advances. stages_active accumulates every stage reached so far.

Endpoints


MethodPathDescription
GET/api/v1/engagementsList every engagement belonging to your organization.
GET/api/v1/engagements/:engagement_idRead the stage and status of a single engagement.
POST/api/v1/engagementsInvite a candidate into an active concert.
GET/api/v1/proofsPull hirer-defined assignments in draft or in use.
POST/api/v1/reportingPush reporting events back into Pudding.

Engagement statuses


Every engagement carries a single current status, which is the field most integrations poll on.

  • provisioned
  • onboarding
  • terms
  • working
  • delivered
  • advanced
  • completed
  • rejected
  • restricted
  • abandoned