GoliathDevelopersGet an API key
Reference/Employeesgenerated from the gateway manifest

listEmployees

The organization's AI employees.

POST/api/v1/callREADreadruns as the key's owner
View as Markdown

The organization's AI employees: id, name, job title, status (ACTIVE = working, INACTIVE = hired but switched off), the template it started from, whether it can answer calls, and how many contacts it is on. contactAgentCounts counts that list (total, active, inactive): quote those numbers for how many employees there are and how many are on or off, never a tally of the rows. textHours is when it starts texts, in words (anytime when none is set), and quietHoursNotice the quiet-hours note to say when the window crosses 8 AM to 9 PM: what hours each texts are answered from this one read, never a getEmployee per employee (a roster past about 100 employees ends in an omitted marker naming the rest: read those with getEmployee). The id is the employeeId every other employee operation takes. Start here.

curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "listEmployees",
    "variables": {}
  }'
import { GoliathClient } from '@goliath-data/sdk'

const goliath = new GoliathClient({
  apiKey: process.env.GOLIATH_API_KEY!,
  baseUrl: 'https://server.goliathdata.com',
})

const result = await goliath.employees.listEmployees()
const res = await fetch('https://server.goliathdata.com/api/v1/call', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.GOLIATH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    operationId: 'listEmployees',
    variables: {}
  }),
})
const { data, errors } = await res.json()

Variables

None. Send "variables": {}.

Response

What comes back under data: a list shows as one entry, and a value as its type.

response shape
{
  "data": {
    "aiEmployeesQuery": {
      "contactAgents": [
        {
          "id": "<ID>",
          "name": "…",
          "title": "…",
          "status": "ACTIVE",
          "origin": "CUSTOM",
          "canAnswerCalls": true,
          "commitments": {
            "assignedContactCount": 0,
            "scheduledContactCount": 0,
            "bookedFollowUpContactCount": 0,
            "openSessionCount": 0
          },
          "textHours": "…",
          "quietHoursNotice": "…",
          "createdAt": "2026-01-01T00:00:00.000Z",
          "updatedAt": "2026-01-01T00:00:00.000Z"
        }
      ],
      "contactAgentCounts": {
        "total": 0,
        "active": 0,
        "inactive": 0
      }
    }
  }
}

Errors

Behaviour

A read. It rejects an Idempotency-Key header with 400 bad_request.