Skip to main content
All CollectionsHubIntegrations
Output API Product Guide
Output API Product Guide

The below guide will tell you what current integrations are up and running, while also providing some more detail for developers who may be looking into making an API integration.

Elizabeth Kinsella-Kent avatar
Written by Elizabeth Kinsella-Kent
Updated over 2 weeks ago

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.

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

RockDaisy

Opteamal

In Progress/TBD Integrations:

  • Metrifit


Developer Information

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:

  1. An athlete or coach login was used instead of the organisation owner account

  2. 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.

Did this answer your question?