Dialpad WFM API (Formerly Surfboard) (1.0.0)

Download OpenAPI specification:

This is the API specification for Dialpad WFM. Our API is JSON-encoded and follows a REST style.

Authentication

To access the API, you can reach out to your customer success manager who will provide you securely with an access token which is valid for one year.

This token should be included in any requests you make to Surfboard’s API in the Authorization header in 'bearer token' format, like so:

curl 'https://api.teamsurfboard.com/api/v1/...' \
  -H 'Authorization: Bearer ...'

API requests without authentication will fail.

Rate limiting

The API enforces a rate limit of 60 requests per minute to ensure stability. Once this limit is exceeded, the API will respond with a status code of 429.

Versioning

Over time, new endpoints will be made available and existing endpoints may evolve, but backwards compability will be maintained. Fields will not be removed from response payloads, but new fields may be added to existing endpoints.

Any backwards-incompatible changes will be made in a new version of the API, and existing versions will remain functional.

Get schedule

Returns the published schedule within the specified date range.

query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

page[size]
number
Default: 100

The maximum number of entities to be returned in one response.

page[after]
string

The pagination cursor to be used for the next response. If a response has more than one page, the full URL for the next page (including the appropriate page[after] parameter) will be included in the /links/next field in the response payload.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
}

Get detailed agent metrics

Returns detailed performance metrics for agents with pagination support.

query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

emails
string

Optional comma-separated list of agent emails to filter by

limit
number
Default: 500

Maximum number of records to return (default: 500, max: 500)

cursor
string

Pagination cursor for retrieving the next set of results

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "cursor": "string"
}

Get detailed activity metrics

Returns detailed performance metrics for activities with pagination support.

query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

emails
string

Optional comma-separated list of agent emails to filter by

limit
number
Default: 500

Maximum number of records to return (default: 500, max: 500)

cursor
string

Pagination cursor for retrieving the next set of results

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "cursor": "string"
}

(DEPRECATED) Get agent metrics

⚠️ DEPRECATED: Please migrate to GET /metrics/agent endpoint.

Migration Guide

Key Differences:

  1. Timezone Handling:

    • Old: Accepts timezone parameter, aggregates data in that timezone
    • New: Works exclusively with UTC timestamps, no timezone parameter
  2. Data Aggregation:

    • Old: Returns data pre-aggregated into daily buckets based on timezone
    • New: Returns data in 24-hour intervals between start and end dates
    • New: Each entry includes an interval field showing the exact UTC time range for that data
  3. Response Format:

    • Old: Array of agents, each with array of daily data
    • New: Flat array in items field, with interval, agent, and metric fields
  4. Pagination:

    • Old: Returns all data at once (max 90 days)
    • New: Requires cursor-based pagination, check cursor field for next page

Migration Example:

To replicate a 7-day query with daily aggregation:

  • Old endpoint: Single request with timezone, get 7 daily buckets
  • New endpoint: Request full 7-day range, receive data split into 24-hour intervals
  • Important: You MUST handle pagination - if cursor is returned, make additional requests
query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

timezone
string
Default: "Etc/UTC"
Example: timezone=America/New_York

IANA timezone identifier to get response metrics in

emails
string

Optional comma-separated list of agent emails to filter by

includeDeletedSurfers
boolean
Example: includeDeletedSurfers=true

Include deleted surfers in the response

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

(DEPRECATED) Get activity metrics

⚠️ DEPRECATED: Please migrate to GET /metrics/activity endpoint.

Migration Guide

Key Differences:

  1. Timezone Handling:

    • Old: Accepts timezone parameter, aggregates data in that timezone
    • New: Works exclusively with UTC timestamps, no timezone parameter
  2. Data Aggregation:

    • Old: Returns data pre-aggregated into daily buckets based on timezone
    • New: Returns data in 24-hour intervals between start and end dates
    • New: Each entry includes an interval field showing the exact UTC time range for that data
  3. Response Format:

    • Old: Array of activities, each with array of daily data
    • New: Flat array in items field, with interval, activity, and metric fields
  4. Pagination:

    • Old: Returns all data at once (max 90 days)
    • New: Requires cursor-based pagination, check cursor field for next page

Migration Example:

To replicate a 7-day query with daily aggregation:

  • Old endpoint: Single request with timezone, get 7 daily buckets per activity
  • New endpoint: Request full 7-day range, receive data split into 24-hour intervals
  • Important: You MUST handle pagination - if cursor is returned, make additional requests
query Parameters
start
required
string
Example: start=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

end
required
string
Example: end=2024-06-25T00:00:00.000Z

A date string in RFC 3339 format.

emails
string

Optional comma-separated list of agent emails to filter by

timezone
string
Default: "Etc/UTC"
Example: timezone=America/New_York

IANA timezone identifier to get response metrics in

includeDeletedSurfers
boolean
Example: includeDeletedSurfers=true

Include deleted surfers in the response

Responses

Response samples

Content type
application/json
[
  • {
    }
]