API Endpoints
Authentication
Integrations
Returns detailed information about available providers, including required login fields and logos.
Integrations retrieved successfully.
GET /v2/teams/integrations/detailed HTTP/1.1
Host: api.tryterra.co
Accept: */*
Integrations retrieved successfully.
{
"providers": [
{
"provider": "text",
"name": "text",
"icon": "text",
"types": {
"tests": true,
"activities": true
},
"login_fields": [
{
"field": "text",
"name": "text",
"type": "text",
"required": true,
"options": [
"text"
]
}
]
}
]
}Coach management
Your API key for authentication
Your developer ID for authentication and tracking
A list of coaches
GET /v2/teams/coaches HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
A list of coaches
{
"data": [
{
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
}
]
}Registers a new coach with credentials and integration specifics.
Your API key for authentication
Your developer ID for authentication and tracking
Unique identifier for the coach, generated by the server.
Identifier of the coach on the provider's systems
ID of the coach on your system
Region in which the coach operates.
Integration provider associated with the coach (e.g., VALD, Catapult).
The date and time when the coach was registered.
Public identifier for the coach.
Secret key or token for authentication.
API key or token for the coach object
Coach created successfully
Unique identifier for the coach, generated by the server.
Identifier of the coach on the provider's systems
ID of the coach on your system
Region in which the coach operates.
Integration provider associated with the coach (e.g., VALD, Catapult).
The date and time when the coach was registered.
Public identifier for the coach.
Secret key or token for authentication.
API key or token for the coach object
Invalid input, object invalid
The coach already exists for your dev-id
POST /v2/teams/coaches HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 154
{
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"client_id": "text",
"client_secret": "text",
"token": "text"
}{
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
}Deletes a coach and all associated athletes, activities, and tests.
Your API key for authentication
Your developer ID for authentication and tracking
Unique identifier of the coach to be deleted.
Coach deleted successfully.
No content
Coach not found.
DELETE /v2/teams/coaches/{coachId} HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
No content
Coach Data retrieval
Your API key for authentication
Your developer ID for authentication and tracking
An array of athletes coached by the specified coach
GET /v2/teams/coaches/{coachId}/athletes HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
An array of athletes coached by the specified coach
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
},
"data": [
{
"coach_id": "text",
"athlete_id": "text",
"external_athlete_id": "text",
"reference_id": "text",
"provider": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"date_of_birth": "2026-01-01",
"last_updated_at": "2026-01-01T00:00:00.000Z",
"active": true
}
]
}Your API key for authentication
Your developer ID for authentication and tracking
Start date for the query range (YYYY-MM-DD).
2025-01-01End date for the query range (YYYY-MM-DD). Defaults to start_date + 1 day if omitted.
2025-01-07When true, data is sent asynchronously to your configured webhook and the endpoint returns HTTP 202 with a reference ID. When false (default), data is returned inline in the response body.
falsePossible values: List of activities within the specified time range for all athletes under the coach
Data dispatch accepted. Returned when to_destination=true. Data will be sent to your configured webhook.
GET /v2/teams/coaches/{coachId}/activities?start_date=2025-01-01 HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
},
"data": [
{
"activity_id": null,
"start_timestamp_us": null,
"end_timestamp_us": null,
"description": null,
"teams": [
{
"name": null,
"is_home": 1
}
],
"athletes": [
{
"coach_id": "text",
"athlete_id": "text",
"external_athlete_id": "text",
"reference_id": "text",
"provider": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"date_of_birth": "2026-01-01",
"last_updated_at": "2026-01-01T00:00:00.000Z",
"active": true
}
],
"athlete_participation": {
"full": [
"text"
],
"partial": [
"text"
],
"unknown": [
"text"
]
},
"tz_offset_seconds": 0,
"periods": [
{
"period_id": null,
"name": null,
"athlete_participation": {
"full": [
"text"
],
"partial": [
"text"
],
"unknown": [
"text"
]
},
"detailed_athlete_participation": [
{
"athlete_id": null,
"external_athlete_id": null,
"is_home_team": 1,
"participation": 1,
"function": null
}
],
"start_timestamp_us": null,
"end_timestamp_us": null,
"athlete_metrics": [
{
"athlete_id": null,
"metrics": [
{
"name": null,
"value": 1,
"unit": null
}
]
}
]
}
],
"activity_metrics": [
{
"name": null,
"value": 1,
"unit": null
}
],
"athlete_metrics": null,
"events": [
"text"
]
}
]
}Returns the schema of activity metrics available for the specified coach.
Your API key for authentication
Your developer ID for authentication and tracking
Unique identifier of the coach.
When true, data is sent asynchronously to your configured webhook and the endpoint returns HTTP 202 with a reference ID. When false (default), data is returned inline in the response body.
falsePossible values: Schema retrieved successfully.
Data dispatch accepted. Returned when to_destination=true. Data will be sent to your configured webhook.
Coach not found.
GET /v2/teams/coaches/{coachId}/activities/metrics/schema HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
},
"data": [
{
"key": "text",
"display_name": null,
"unit": null,
"type": null,
"sport": 1
}
]
}Your API key for authentication
Your developer ID for authentication and tracking
Start date for the query range (YYYY-MM-DD).
2025-01-01End date for the query range (YYYY-MM-DD). Defaults to start_date + 1 day if omitted.
2025-01-07When true, data is sent asynchronously to your configured webhook and the endpoint returns HTTP 202 with a reference ID. When false (default), data is returned inline in the response body.
falsePossible values: List of tests within the specified time range for all athletes under the coach
Data dispatch accepted. Returned when to_destination=true. Data will be sent to your configured webhook.
GET /v2/teams/coaches/{coachId}/tests?start_date=2025-01-01 HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2026-01-01T00:00:00.000Z"
},
"data": [
{
"test_id": null,
"display_name": null,
"timestamp_us": null,
"test_type": 1,
"exercise_type": 1,
"athlete_weight": null,
"movement": 1,
"tz_offset_seconds": 0,
"category": 1,
"duration_us": null,
"body_region": 1,
"position": 1,
"notes": null,
"device": null,
"test_result_metrics": [
{
"side": 1,
"aspect": 1,
"statistic_type": 1,
"metric_type": 1,
"contraction_type": 1,
"value": null
}
],
"sets": [
{
"metrics": [
{
"side": 1,
"aspect": 1,
"statistic_type": 1,
"metric_type": 1,
"contraction_type": 1,
"value": null
}
],
"timestamp_us": null,
"duration_us": null,
"side": 0,
"aspect": -1,
"reps": [
{
"offset_us": 1,
"duration_us": 1,
"metrics": [
{
"side": 1,
"aspect": 1,
"statistic_type": 1,
"metric_type": 1,
"contraction_type": 1,
"value": null
}
]
}
],
"weight": null,
"exercise_name": null,
"variations": [
null
],
"movement": -1
}
]
}
]
}Athlete Management
Your API key for authentication
Your developer ID for authentication and tracking
An array of athletes
GET /v2/teams/athletes HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
An array of athletes
{
"data": [
{
"coach_id": "text",
"athlete_id": "text",
"external_athlete_id": "text",
"reference_id": "text",
"provider": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"date_of_birth": "2026-01-01",
"last_updated_at": "2026-01-01T00:00:00.000Z",
"active": true
}
]
}Your API key for authentication
Your developer ID for authentication and tracking
The ID of the coach to which the athlete belongs
Unique identifier for the athlete, generated by the server.
Unique identifier for the athlete on the provider's system, generated by the provider (e.g. VALD, Catapult)
A string to reference the Athlete. This can be a UUID, email, or other, and can be used to reconcile the Athlete with your internal systems.
Integration provider associated with the Athlete (e.g., VALD, Catapult).
Athlete's first name.
Athlete's last name
Athlete's email
The date and time when the athlete was registered.
The date of birth of the athlete
The date and time when the athlete was last updated (e.g. updated their first and last name).
Determines whether or not Terra will send webhooks for the given athlete
Athlete updated
No content
PATCH /v2/teams/athletes/{athleteId} HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 120
{
"reference_id": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"date_of_birth": "2026-01-01",
"active": true
}Athlete updated
No content
Allows a developer to partially update multiple athlete records in a single request.
Your API key for authentication
Your developer ID for authentication and tracking
Your developer ID
testingTerraYour API key
OtHJok60oQmT8zhnUWc4SWBJI7ztPTs88C0gOsJJAll athlete updates were successful.
Partial success, some athletes updated while others failed.
Bad Request. Invalid input or all updates failed due to validation errors.
Unauthorized. Invalid credentials provided.
PATCH /v2/teams/athletes HTTP/1.1
Host: api.tryterra.co
x-api-key: text
dev-id: text
Content-Type: application/json
Accept: */*
Content-Length: 68
{
"data": [
{
"athlete_id": "text",
"active": true,
"reference_id": "text"
}
]
}{
"data": [
{
"coach_id": "text",
"athlete_id": "text",
"external_athlete_id": "text",
"reference_id": "text",
"provider": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"date_of_birth": "2026-01-01",
"last_updated_at": "2026-01-01T00:00:00.000Z",
"active": true
}
],
"errors": [
{
"athlete_id": "text",
"error": "text"
}
]
}Your API key for authentication
Your developer ID for authentication and tracking
Detailed information about the athlete
The ID of the coach to which the athlete belongs
Unique identifier for the athlete, generated by the server.
Unique identifier for the athlete on the provider's system, generated by the provider (e.g. VALD, Catapult)
A string to reference the Athlete. This can be a UUID, email, or other, and can be used to reconcile the Athlete with your internal systems.
Integration provider associated with the Athlete (e.g., VALD, Catapult).
Athlete's first name.
Athlete's last name
Athlete's email
The date and time when the athlete was registered.
The date of birth of the athlete
The date and time when the athlete was last updated (e.g. updated their first and last name).
Determines whether or not Terra will send webhooks for the given athlete
GET /v2/teams/athletes/{athleteId} HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
dev-id: YOUR_API_KEY
Accept: */*
Detailed information about the athlete
{
"coach_id": "text",
"athlete_id": "text",
"external_athlete_id": "text",
"reference_id": "text",
"provider": "text",
"first_name": "text",
"last_name": "text",
"email": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"date_of_birth": "2026-01-01",
"last_updated_at": "2026-01-01T00:00:00.000Z",
"active": true
}Last updated
Was this helpful?