API Documentation

API Documentation that will walk you through how to create your API key, common use cases, and security best practices.

Overview

The Herd API provides programmatic access to training completion data, user information, and tag management. All endpoints require API key authentication and are scoped to your organization.

Creating your API Key

Getting Your API Key

  1. Log into your Herd dashboard

  2. Navigate to Administration on the left sidebar > API Keys

  3. Click "Create New API Key"

  4. Save the key securely - Please note: The key will only be shown once

Using Your API Key

Include your API key in the 'X-API-Key' header with every request:

API Key Format: herd_<8chars>_<64chars> (73 characters total)

Response Format

All API responses follow this structure:

Endpoints

Get Training Completions

Retrieves all training enrollments and completion status for your organization. This is the primary endpoint for tracking training progress and completions.

Query Parameters:

Parameter
Type
Required
Default
Description

page

integer

No

1

Page number (min: 1)

per_page

integer

No

50

Results per page (min: 1, max: 100)

Status Values:

  • Not started - User has not begun the training

  • In Progress - User started but has not completed

  • Passed - User completed the training

Date Fields:

  • enrollment_date - When user was enrolled (always present)

  • start_date - When user started training (null if not started)

  • completion_date - When user completed training (null if not completed)

Example Request:

curl -H "X-API-Key: herd_a1b2c3d4_..." \ "https://app.security.io/api/v1/enrollments?page=1&per_page=100`

Use Cases:

  • Export completed trainings to Google Sheets

  • Generate completion reports

  • Track training progress across your organization

  • Identify users who need to complete specific trainings

2. Get Users

GET /api/v1/users

Retrieves user details for your organization.

Query Parameters:

Parameter
Type
Required
Default
Description

page

integer

No

1

Page number

per_page

integer

No

50

Results per page (max: 100)

Status Values:

  • Active - User has Slack or Teams integration

  • Inactive - User not connected to any platform

  1. Get Tags

GET /api/v1/tags

Retrieves all tags used to categorize trainings in your organization.

Query Parameters:

Parameter
Type
Required
Default
Description

page

integer

No

1

Page number

per_page

integer

No

50

Results per page (max: 100)

Common Use Cases

Filter by Date Range

Group Completions by User

Pagination

All list endpoints support pagination. When results exceed one page, use the next_page_url or increment the page parameter.

Example: Fetch all enrollments

Error Codes

Code
Meaning
Solution

400

Bad Request

Check query parameters are valid

401

Unauthorized

Verify API key is correct and active

404

Not Found

Resource doesn't exist (e.g., invalid tag_id)

429

Too Many Requests

Slow down request rate

500

Internal Server Error

Contact support if persists

Rate Limiting

Rate limits are enforced to ensure API stability. If you receive a 429 error, implement exponential backoff:

Last updated