API Access
An organisation must have paid for Output API access in order to use the API.
When signing into Output through another systems integration, the user should sign in using the organisation owner's login credentials.
Integrations
These are the supported platforms that have integrations with us, for more information on how to setup, please contact the support team for that platform.
TeamBuildr
TeamBuildr
Teamworks
Teamworks
Initial sync is 1 year for each mapped athlete
Subsequent syncs are every 30 minutes and any new data from the last 7 days is pulled
Kitman Labs
Kitman Labs
RockDaisy
RockDaisy
Opteamal
Opteamal
In Progress/TBD Integrations:
Metrifit
Developer Information
The API URL is: https://api.outputsports.com
The developer Swagger docs can be found: https://api.outputsports.com/swagger/index?
The below steps can also be carried out through the Swagger page for testing purposes prior to developing any integration code.
Jump to;
Authentication
A user must be authenticated to pull any data from the Output API. This can be achieved by getting an access token using the OAuth endpoint. The organisation owner's credentials must be used to retrieve this token:
POST https://api.outputsports.com/api/v1/oauth/token
{
"grantType": "password",
"email": "account_email",
"password": "account_password"
}
This will return an access token that will expire after 60 minutes, and a refresh token.
{
"accessToken": "ey...",
"refreshToken": "sample_token",
"expiresIn": "3600"
}
The refresh token can be used to retrieve a new access token when the previous access token has expired:
POST https://api.outputsports.com/api/v1/oauth/token
{
"grantType": "refresh_token",
"refreshToken": "sample_token"
}
Important:
401 Unauthorized—indicates that the email or password is incorrect—please ensure login credentials are correct
403 Forbidden—contains an error message indicating one of two issues:
An athlete or coach login was used instead of the organisation owner account
The organisation does not have API access and this should be purchased before continuing
Once the access token has been obtained, it can be used in the Authenticate request header to authenticate further requests to the API. Add the following request header to all API requests:
"Authorization": "Bearer "
Check API Access
To check if an organisation has API access, request an access token through the OAuth endpoint above using the organisation owner's credentials. If a token is returned, then the account has API access. If a 403 is returned with the message "Organisation does not have API access" then the account does not have API access.
API Endpoints
Get Exercise Metadata
Get all exercise metadata available to the organisation, this includes custom created exercises.
GET https://api.outputsports.com/api/v1/exercises/metadata
Returns a JSON array of exercise objects with an example detailed below:
[
{
"id": "FORWARD_POGOS_CONTACTS",
"name": "Pogos (Forward)",
"category": "Contacts",
"isEnabled": true,
"type": "Output",
"variants": [],
"metrics": [
{
"name": "Average Contact Time",
"field": "averageContactTime",
"unitOfMeasure": "Second"
},
{
"name": "Best Contact Time",
"field": "bestContactTime",
"unitOfMeasure": "Second"
},
{
"name": "Average Air Time",
"field": "averageAirTime",
"unitOfMeasure": "Second"
},
{
"name": "Average Air/Contact",
"field": "averageAirContactIndex",
"unitOfMeasure": ""
},
{
"name": "Average Drive Index",
"field": "averageDriveIndex",
"unitOfMeasure": ""
},
{
"name": "Average Peak Acceleration",
"field": "averagePeakAcceleration",
"unitOfMeasure": "Metres per Second Squared"
},
{
"name": "Completed Reps",
"field": "repCount",
"unitOfMeasure": ""
}
],
"repetitions": [
{
"name": "Contact Time",
"field": "contactTime",
"unitOfMeasure": "Second"
},
{
"name": "Air Time",
"field": "airTime",
"unitOfMeasure": "Second"
},
{
"name": "Air/Contact",
"field": "airContactIndex",
"unitOfMeasure": ""
},
{
"name": "Drive Index",
"field": "driveIndex",
"unitOfMeasure": ""
},
{
"name": "Peak Acceleration",
"field": "peakAcceleration",
"unitOfMeasure": "Metres per Second Squared"
}
]
},
...
]
Get Athlete
Get details of all athletes in the organisation’s account.
GET https://api.outputsports.com/api/v1/athletes
Returns a JSON array of athletes with an example detailed below:
[
{
"id": "irvPOFbgRVupJ4VTCkCo",
"externalId": "A-7",
"firstName": "Test",
"lastName": "Athlete",
"fullName": "Test Athlete",
"dateOfBirth": "1993-10-06T23:00:00Z"
},
...
]
Get Measurements
Get measurement data for athlete(s) and/or exercise(s):
Start date and end date are required and they should be in ISO8601 format
The maximum date range can be 31 days - batch requests for longer time periods
If exerciseMetadataIds is empty then all exercises will be retrieved
If athleteIds is empty then all athletes will be retrieved
POST https://api.outputsports.com/api/v1/exercises/measurements
{
"startDate": "2023-01-01T00:00:00.000Z",
"endDate": "2023-02-01T00:00:00.000Z",
"exerciseMetadataIds": [
"FORWARD_POGOS_CONTACTS"
],
"athleteIds": [
"athlete_id"
]
}
Returns a JSON array of exercise measurements with detailed example below:
[
{
"id": "dlq26yfSBnQhwHDeaWyH",
"athleteId": "athlete_id",
"athleteFirstName": "Athlete",
"athleteLastName": "Name",
"exerciseId": "BARBELL_BACK_SQUAT",
"exerciseCategory": "Barbell Velocity",
"exerciseType": "Output",
"completedDate": "2023-01-04T18:31:53.024Z",
"variant": null,
"metrics": [
{
"field": "meanPower",
"value": 712.9365283253193
},
{
"field": "bestMeanPower",
"value": 786.6473886669561
},
{
"field": "bestMeanForce",
"value": 1421.0350206514495
},
{
"field": "peakPower",
"value": 2953.013702203673
},
{
"field": "targetRepCount",
"value": 4.0
},
{
"field": "meanForce",
"value": 1406.654329847439
},
{
"field": "peakForce",
"value": 4031.9522117955935
},
{
"field": "relativePeakForce",
"value": 47.999431092804684
},
{
"field": "meanVelocity",
"value": 0.5034302107935733
},
{
"field": "weight",
"value": 140.0
},
{
"field": "relativePeakPower",
"value": 35.1549250262342
},
{
"field": "repCount",
"value": 4.0
},
{
"field": "relativeMeanForce",
"value": 16.745884879136177
},
{
"field": "totalWork",
"value": 3540.08470832784
},
{
"field": "peakVelocity",
"value": 1.4285659889299522
},
{
"field": "relativeMeanPower",
"value": 8.487339622920468
},
{
"field": "peakAcceleration",
"value": 0.0
},
{
"field": "meanAcceleration",
"value": 0.0
}
],
"repetitions": [
[
{
"field": "concentricTime",
"value": 1.205
},
{
"field": "meanAcceleration",
"value": 0.0
},
{
"field": "meanForce",
"value": 1407.3820628223025
},
{
"field": "meanPower",
"value": 715.4737453592496
},
{
"field": "meanVelocity",
"value": 0.502860079729517
},
{
"field": "peakAcceleration",
"value": 0.0
},
{
"field": "peakForce",
"value": 2767.0831589100644
},
{
"field": "peakPower",
"value": 2371.1177315236237
},
{
"field": "peakVelocity",
"value": 1.3015793927441657
},
{
"field": "relativeMeanForce",
"value": 16.754548366932173
},
{
"field": "relativeMeanPower",
"value": 8.517544587610114
},
{
"field": "relativePeakForce",
"value": 32.941466177500764
},
{
"field": "relativePeakPower",
"value": 28.2275920419479
},
{
"field": "verticalDisplacement",
"value": 0.6059463960740681
},
{
"field": "work",
"value": 832.2067803681251
}
],
...
]
},
...
]
Important:
400 Bad Request - Usually indicates that the request is malformed e.g date range exceeded or validation problem
Demo Integration Account
A demo integrations account is available for developers to test against a real Output account with real data. This is usually reserved for developers that don’t have access to their Organisation’s credentials.
Please contact [email protected] for the login information.