API Endpoints
Authentication
Integrations
Returns detailed information about available providers, including required login fields and logos.
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
GET /v2/teams/coaches HTTP/1.1
Host: api.tryterra.co
x-api-key: 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": "2025-07-07T03:52:04.323Z"
}
]
}
Registers a new coach with credentials and integration specifics.
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
POST /v2/teams/coaches HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 154
{
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2025-07-07T03:52:04.323Z",
"client_id": "text",
"client_secret": "text",
"token": "text"
}
{
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2025-07-07T03:52:04.323Z"
}
Deletes a coach and all associated athletes, activities, and tests.
Unique identifier of the coach to be deleted.
DELETE /v2/teams/coaches/{coachId} HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
Accept: */*
No content
Coach Data retrieval
GET /v2/teams/coaches/{coachId}/athletes HTTP/1.1
Host: api.tryterra.co
x-api-key: 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": "2025-07-07T03:52:04.323Z"
},
"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": "2025-07-07T03:52:04.323Z",
"date_of_birth": "2025-07-07",
"last_updated_at": "2025-07-07T03:52:04.323Z",
"active": true
}
]
}
GET /v2/teams/coaches/{coachId}/activities HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
Accept: */*
List of activities within the specified time range for all athletes under the coach
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2025-07-07T03:52:04.323Z"
},
"data": [
{
"activity_id": "text",
"start_timestamp_us": 1,
"end_timestamp_us": 1,
"description": "text",
"teams": [
{
"name": "text",
"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": "2025-07-07T03:52:04.323Z",
"date_of_birth": "2025-07-07",
"last_updated_at": "2025-07-07T03:52:04.323Z",
"active": true
}
],
"athlete_participation": {
"full": [
"text"
],
"partial": [
"text"
],
"unknown": [
"text"
]
},
"tz_offset_seconds": 0,
"periods": [
{
"period_id": "text",
"name": "text",
"athlete_participation": {
"full": [
"text"
],
"partial": [
"text"
],
"unknown": [
"text"
]
},
"detailed_athlete_participation": [
{
"athlete_id": "text",
"external_athlete_id": "text",
"is_home_team": 1,
"participation": 1,
"function": "text"
}
],
"start_timestamp_us": 1,
"end_timestamp_us": 1,
"athlete_metrics": [
{
"athlete_id": "text",
"metrics": [
{
"name": "text",
"value": 1,
"unit": "text"
}
]
}
]
}
],
"activity_metrics": [
{
"name": "text",
"value": 1,
"unit": "text"
}
],
"athlete_metrics": {
"ANY_ADDITIONAL_PROPERTY": [
{
"name": "text",
"value": 1,
"unit": "text"
}
]
},
"events": [
"text"
]
}
]
}
Returns the schema of activity metrics available for the specified coach.
Unique identifier of the coach.
GET /v2/teams/coaches/{coachId}/activities/metrics/schema HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
Accept: */*
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2025-07-07T03:52:04.323Z"
},
"data": [
{
"key": "text",
"display_name": "text",
"unit": "text",
"type": "text",
"sport": 1
}
]
}
GET /v2/teams/coaches/{coachId}/tests HTTP/1.1
Host: api.tryterra.co
x-api-key: YOUR_API_KEY
Accept: */*
List of tests within the specified time range for all athletes under the coach
{
"coach": {
"coach_id": "text",
"external_coach_id": "text",
"reference_id": "text",
"region": "text",
"provider": "text",
"created_at": "2025-07-07T03:52:04.323Z"
},
"data": [
{
"test_id": "text",
"display_name": "text",
"timestamp_us": 1,
"test_type": 1,
"exercise_type": 1,
"athlete_weight": 1,
"movement": 1,
"tz_offset_seconds": 0,
"category": 1,
"duration_us": 1,
"body_region": 1,
"position": 1,
"notes": "text",
"device": "text",
"test_result_metrics": [
{
"side": 1,
"aspect": 1,
"statistic_type": 1,
"metric_type": 1,
"contraction_type": 1,
"value": 1
}
],
"sets": [
{
"metrics": [
{
"side": 1,
"aspect": 1,
"statistic_type": 1,
"metric_type": 1,
"contraction_type": 1,
"value": 1
}
],
"timestamp_us": 1,
"duration_us": 1,
"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": 1
}
]
}
],
"weight": 1,
"exercise_name": "text",
"variations": [
null
],
"movement": -1
}
]
}
]
}
Athlete Management
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
PATCH /v2/teams/athletes/{athleteId} HTTP/1.1
Host: api.tryterra.co
x-api-key: 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": "2025-07-07",
"active": true
}
Athlete updated
No content
Allows a developer to partially update multiple athlete records in a single request.
Your developer ID
testingTerra
Your API key
OtHJok60oQmT8zhnUWc4SWBJI7ztPTs88C0gOsJJ
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": "2025-07-07T03:52:04.323Z",
"date_of_birth": "2025-07-07",
"last_updated_at": "2025-07-07T03:52:04.323Z",
"active": true
}
],
"errors": [
{
"athlete_id": "text",
"error": "text"
}
]
}
GET /v2/teams/athletes/{athleteId} HTTP/1.1
Host: api.tryterra.co
x-api-key: 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": "2025-07-07T03:52:04.323Z",
"date_of_birth": "2025-07-07",
"last_updated_at": "2025-07-07T03:52:04.323Z",
"active": true
}
Last updated
Was this helpful?