MENU navbar-image

Introduction

API documentation for Profixio

This documentation aims to provide all the information you need to work with our API.

Pagination

While different methods require different data either as part of the URL, the query string or request body there are some parameters that are common to all API methods. These are passed as optional query parameters.

Mosts requests are paginated.

Query Parameters

page integer optional

The current page. Default is 1.

limit integer optional

Limit the number of records returned per page. Default is 15, the maximum is 500.

Paginated responses always contain meta and links keys with information about the paginator's state.

The data field contains the actual data for the current page, while the meta field contains information about the pagination.

{
  "data": [
    {
      "id": 1,
      "name": "Eladio Schroeder Sr.",
      "email": "[email protected]"
    },
    {
      "id": 2,
      "name": "Liliana Mayert",
      "email": "[email protected]"
    }
  ],
  "links":{
    "first": "http://example.com/users?page=1",
    "last": "http://example.com/users?page=1",
    "prev": null,
    "next": null
  },
  "meta":{
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "http://example.com/users",
    "per_page": 15,
    "to": 10,
    "total": 10
  }
}

Changelog

09.09.2024

28.08.2024

22.05.2024

16.05.2024

15.05.2024

Authenticating requests

To authenticate requests, include a X-Api-Secret header with the value "{YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Contact Profixio to get an API token.

Endpoints

Permissions

requires authentication

See what permissions your api key has

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/userinfo" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/userinfo';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/userinfo"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 119
 

{
    "wsUser": {
        "applicationName": "Odit et et modi.",
        "contactEmail": "[email protected]",
        "contactName": "Pearl Hauck Sr."
    },
    "permissions": {
        "organisations": [
            {
                "organisationId": "NFF.NO.FB",
                "viewTournament": true,
                "listTournaments": false,
                "updateAllTournaments": false,
                "updateSpecificTournament": true,
                "specificTournaments": [
                    {
                        "tournamentId": 12214,
                        "basicAccess": true,
                        "extendedAccess": true
                    }
                ]
            }
        ]
    }
}
 

Request      

GET api/userinfo

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Sports

requires authentication

The sports registered in Profixio. An organisation may have one or several associated sports.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/sports?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/sports';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/sports"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 118
 

{
    "data": [
        {
            "id": "BA",
            "name": "bandy"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/sports?page=1",
        "last": "https://www.profixio.com/api/sports?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/sports?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/sports",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/sports

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Matches

Livescore

Match Event Types

requires authentication

Get a list of match event types in a organisation.

The types are used to categorize match events.

Some examples of match event types are:

Period starts and stops

Events that starts/stops the match or periods includes 'gamestateStartStopInfo' in the event data.

Line up

Changes in team lineup can be submitted in three ways (not all are supported by all organisations):

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SHF.SE.HB/matchEventTypes?sport=HB" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SHF.SE.HB/matchEventTypes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sport' => 'HB',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SHF.SE.HB/matchEventTypes"
);

const params = {
    "sport": "HB",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 111
 

{
    "data": [
        {
            "id": 186,
            "sportId": "HB",
            "parentId": null,
            "name": "Matchstart",
            "publicName": "Start första halvlek",
            "isTeamEvent": false,
            "isPersonEvent": false,
            "numberOfPersonsInEvent": null,
            "isGoalEvent": false,
            "numberOfGoals": null,
            "isTeamFoul": false,
            "isPersonFoul": false,
            "givesTimeout": false,
            "removesTimeout": false,
            "isPenaltyCompetition": false,
            "allowsComment": false,
            "penaltyDuration": {
                "minutesLimit": null,
                "minutesForPeriodsLessThanLimit": 0,
                "minutesForPeriodsGreaterOrEqualToLimit": 0
            },
            "isExpulsion": false,
            "isFullTimeExpulsion": null,
            "isYellowCard": false,
            "assignablePlayer": false,
            "assignableCoach": false,
            "assignableAssistantCoach": false,
            "benchForAttacks": null,
            "startsTimer": false,
            "stopsTimer": false,
            "allowsReport": false,
            "gamestateStartStopType": 1,
            "gamestateStartStopInfo": {
                "startsMatch": true,
                "stopsPeriod": false,
                "startsPeriod": false,
                "stopsMatch": false,
                "startsExtraPeriod": false,
                "stopsExtraPeriod": false
            },
            "switches2Players": false,
            "isActivatingOnePlayer": false,
            "isTeamLineupMultiplePersons": false,
            "sign": null,
            "addsStoppageTimeForPeriod": false
        },
        {
            "id": 187,
            "sportId": "HB",
            "parentId": null,
            "name": "Halvlek slut",
            "publicName": "%%omgang%%:a halvlek är slut",
            "isTeamEvent": false,
            "isPersonEvent": false,
            "numberOfPersonsInEvent": null,
            "isGoalEvent": false,
            "numberOfGoals": null,
            "isTeamFoul": false,
            "isPersonFoul": false,
            "givesTimeout": false,
            "removesTimeout": false,
            "isPenaltyCompetition": false,
            "allowsComment": false,
            "penaltyDuration": {
                "minutesLimit": null,
                "minutesForPeriodsLessThanLimit": 0,
                "minutesForPeriodsGreaterOrEqualToLimit": 0
            },
            "isExpulsion": false,
            "isFullTimeExpulsion": null,
            "isYellowCard": false,
            "assignablePlayer": false,
            "assignableCoach": false,
            "assignableAssistantCoach": false,
            "benchForAttacks": null,
            "startsTimer": false,
            "stopsTimer": false,
            "allowsReport": false,
            "gamestateStartStopType": 2,
            "gamestateStartStopInfo": {
                "startsMatch": false,
                "stopsPeriod": true,
                "startsPeriod": false,
                "stopsMatch": false,
                "startsExtraPeriod": false,
                "stopsExtraPeriod": false
            },
            "switches2Players": false,
            "isActivatingOnePlayer": false,
            "isTeamLineupMultiplePersons": false,
            "sign": null,
            "addsStoppageTimeForPeriod": false
        }
    ]
}
 

Request      

GET api/organisations/{organisation_id}/matchEventTypes

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SHF.SE.HB

Query Parameters

sport   string  optional  

The ID of the sport. Example: HB

Match lineup / staff and players

requires authentication

Get the lineup for a match. Available some minutes before match start. Varies from tournament to tournament.

See the match->lineupAvailableFrom field.

If called before x minutes, the server responds with a 403 Forbidden.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/matches/30843160/lineup" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matches/30843160/lineup';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160/lineup"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
 "data": {
   "home": {
     "staff": [
       {
         "id": 655735,
         "addedManually": false,
         "firstName": "John",
         "lastName": "Doe",
         "personId": 48668812,
         "birthDate": '1980-01-02',
         "role": {
           "id": 2,
           "name": "Coach"
         }
       }
     ],
     "players": [
       {
         "id": 864135,
         "number": "1",
         "addedManually": false,
         "firstName": "Kenny",
         "lastName": "Maduro",
         "position": null,
         "personId": 332342,
         "birthDate": "2002-05-11",
         "isCaptain": false
       },
       {
         "id": 8642232,
         "number": "2",
         "addedManually": true,
         "firstName": "Cristiano",
         "lastName": "Ronaldo",
         "position":
         {
             "id": 4,
             "name": "MV",
             "goalkeeper": true
         }
         "personId": null,
         "birthDate": null,
         "isCaptain": false
       }
     ]
   },
   "away": {
     "staff": [],
     "players": []
   }
 }
}
 

Example response (403, Lineup not available yet):


{
    "message": "Lineup not available yet"
}
 

Request      

GET api/tournaments/{tournament_id}/matches/{match_id}/lineup

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

match_id   integer   

The ID of the match. Example: 30843160

Match Protocol Events

requires authentication

List of match events. Most recent events first.

The event types vary from sport to sport.

Events of type "gamestateStartStopType" are used to indicate the start and end of a game or period.

Some events are team specific, and some are player/staff specific. The teamId field indicates which team the event belongs to. The "person" field is only set for player/staff specific events.

Some events also have a second person, for example a player who is substituted, or a goal with an assist. The "person2" field is only set for events with a second person.

In some cases, goals does not have a person field. This means that the secretary has not yet entered the player who scored the goal.

All events include the current score.

Game time: Some matches have a match clock, some may not. The "totalGameTime", "timeInPeriod" and "overtimeInperiod" fields are only set for matches with a match clock.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/34301/matches/31553763/events" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/34301/matches/31553763/events';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/34301/matches/31553763/events"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 96
 

{
    "data": [
        {
            "id": 1108827,
            "eventTypeId": 189,
            "description": "Matchen är slut",
            "isTeamEvent": false,
            "teamId": null,
            "teamName": null,
            "currentScore": {
                "home": 13,
                "away": 44
            },
            "isShootoutRound": false,
            "shootoutScore": null,
            "totalGameTime": "60:00",
            "displayGameTime": "60:00",
            "period": 2,
            "timeInPeriod": "30.00",
            "overtimeInperiod": "0.00",
            "comment": null,
            "goals": null,
            "symbol": "",
            "timeout": false,
            "startsPenaltyCompetition": false,
            "isExpulsion": false,
            "penalty": null,
            "switches2Players": false,
            "isTeamLineupMultiplePersons": false,
            "isActivatingOnePlayer": false,
            "gamestateStartStopType": 4,
            "isTeamFoul": false,
            "isPersonFoul": false,
            "hasReport": false,
            "created_at": "2023-08-19T14:28:20.000000Z",
            "sortOrder": 2300000,
            "startedAt": "2023-08-19T14:28:20.000000Z",
            "pausedAt": null,
            "addSeconds": null,
            "startsMatch": false,
            "stopsPeriod": false,
            "startsPeriod": false,
            "stopsMatch": true,
            "startsExtraPeriod": false,
            "stopsExtraPeriod": false
        }
    ]
}
 

Request      

GET api/tournaments/{tournament_id}/matches/{match_id}/events

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 34301

match_id   integer   

The ID of the match. Example: 31553763

Seasons

Matches in a season

requires authentication

Get a list of matches in a season

See Tournament -> Matches for matches for a specific tournament.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/seasons/711/matches?updated=2022-10-24+08%3A00%3A00&fromDate=2022-10-01&toDate=2022-10-05+14%3A40%3A00&include_referee_ids=1&matchCategory=3247289&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/seasons/711/matches';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'updated' => '2022-10-24 08:00:00',
            'fromDate' => '2022-10-01',
            'toDate' => '2022-10-05 14:40:00',
            'include_referee_ids' => '1',
            'matchCategory' => '3247289',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/seasons/711/matches"
);

const params = {
    "updated": "2022-10-24 08:00:00",
    "fromDate": "2022-10-01",
    "toDate": "2022-10-05 14:40:00",
    "include_referee_ids": "1",
    "matchCategory": "3247289",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 106
 

{
    "data": [],
    "links": {
        "first": "https://www.profixio.com/api/seasons/711/matches?page=1",
        "last": "https://www.profixio.com/api/seasons/711/matches?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/seasons/711/matches?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/seasons/711/matches",
        "per_page": 15,
        "to": null,
        "total": 0
    }
}
 

Request      

GET api/seasons/{season_id}/matches

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

season_id   integer   

The ID of the season. Example: 711

Query Parameters

updated   string  optional  

Display where the record was updated after
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-24 08:00:00

fromDate   string  optional  

Display where date is >= to this value
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-01

toDate   string  optional  

Display where date is <= to this value
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-05 14:40:00

include_referee_ids   boolean  optional  

Include list of referee ids in the response (for leagues). Example: true

matchCategory   integer  optional  

Display where match category is equal to this value. Example: 3247289

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Deleted matches in a season

requires authentication

Get a list of matches in a season that has been deleted

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/seasons/711/deletedMatches?limit=15&page=1&since=2022-10-24+08%3A00%3A00" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/seasons/711/deletedMatches';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
            'since' => '2022-10-24 08:00:00',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/seasons/711/deletedMatches"
);

const params = {
    "limit": "15",
    "page": "1",
    "since": "2022-10-24 08:00:00",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 105
 

{
    "data": [
        {
            "matchId": 31977972,
            "tournamentId": 37654,
            "deletedAt": "2024-09-30 19:53:38"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/seasons/711/deletedMatches?page=1",
        "last": "https://www.profixio.com/api/seasons/711/deletedMatches?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/seasons/711/deletedMatches?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/seasons/711/deletedMatches",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/seasons/{season_id}/deletedMatches

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

season_id   integer   

The ID of the season. Example: 711

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

since   string  optional  

Display where the record was deleted after. Format is: YYYY-MM-DD HH:MM:SS Example: 2022-10-24 08:00:00

Tables

Match tables for a tournament

requires authentication

Get the match tables for a tournament. The tables are grouped by match category, and by match groups.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/6/tables?matchCategory=3247289" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/6/tables';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'matchCategory' => '3247289',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/6/tables"
);

const params = {
    "matchCategory": "3247289",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 104
 

[]
 

Request      

GET api/tournaments/{tournament_id}/tables

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 6

Query Parameters

matchCategory   integer  optional  

Display where match category is equal to this value. Example: 3247289

Matches in a tournament

requires authentication

Get the matches for a tournament/league. The matches are grouped by match category, and by match groups.

Includes the matchgroups and matchcategories.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/matches?updated=2022-10-24+08%3A00%3A00&fromDate=2022-10-01&toDate=2022-10-05+14%3A40%3A00&include_referee_ids=1&matchCategory=3247289&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matches';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'updated' => '2022-10-24 08:00:00',
            'fromDate' => '2022-10-01',
            'toDate' => '2022-10-05 14:40:00',
            'include_referee_ids' => '1',
            'matchCategory' => '3247289',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matches"
);

const params = {
    "updated": "2022-10-24 08:00:00",
    "fromDate": "2022-10-01",
    "toDate": "2022-10-05 14:40:00",
    "include_referee_ids": "1",
    "matchCategory": "3247289",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 97
 

{
    "data": [],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/matches?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/matches?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/matches?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/matches",
        "per_page": 15,
        "to": null,
        "total": 0
    }
}
 

Request      

GET api/tournaments/{tournament_id}/matches

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

updated   string  optional  

Display where the record was updated after
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-24 08:00:00

fromDate   string  optional  

Display where date is >= to this value
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-01

toDate   string  optional  

Display where date is <= to this value
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-05 14:40:00

include_referee_ids   boolean  optional  

Include list of referee ids in the response (for leagues). Example: true

matchCategory   integer  optional  

Display where match category is equal to this value. Example: 3247289

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Match by id

requires authentication

Get a specific match for a tournament/league.

Includes the matchgroups and matchcategories.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/matches/30843160" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matches/30843160';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 30843160,
        "txid": 44,
        "number": "44",
        "tournamentId": 10,
        "name": "",
        "gameRound": 1,
        "date": "2019-11-25",
        "time": "09:30:00",
        "homeTeam": {
            "teamRegistrationId": 721490,
            "globalTeamId": null,
            "name": "Croatia",
            "goals": null,
            "isWinner": false,
            "seeding": null
        },
        "awayTeam": {
            "teamRegistrationId": 721480,
            "globalTeamId": null,
            "name": "Czech Republic",
            "goals": null,
            "isWinner": false,
            "seeding": null
        },
        "hasWinner": false,
        "winnerTeam": null,
        "field": {
            "id": 1227139,
            "name": "Bane1",
            "arena": {
                "id": 205514,
                "arenaName": "Standard"
            }
        },
        "isHidden": false,
        "periodInfo": {
            "periodLength": 1,
            "slotLength": 15,
            "numberOfPeriods": 1,
            "pauseLength": 0,
            "extraPeriodLength": null
        },
        "isGroupPlay": true,
        "isLeaguePlay": false,
        "isPlayoff": false,
        "playoffLevel": null,
        "includedInTableCalculation": true,
        "matchCategory": {
            "id": 1102493,
            "name": "Men",
            "categoryCode": "M"
        },
        "matchGroup": {
            "id": 3247289,
            "displayName": "B",
            "name": "2"
        },
        "matchLeague": null,
        "settResultsFormatted": null,
        "sets": [],
        "matchUrl": "http://www.profixio.com/app/uefaeurosintef/match/30843160",
        "matchDataUpdated": "2024-09-29T19:53:24.768592Z",
        "resultsUpdated": null,
        "fieldUpdated": null,
        "teamsUpdated": null,
        "lineupAvailableFrom": "2019-11-25T08:25:00Z",
        "datetimeStart": "2019-11-25T08:30:00Z",
        "spectators": null,
        "organizerGlobalClubId": null
    }
}
 

Request      

GET api/tournaments/{tournament_id}/matches/{match_id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

match_id   integer   

The ID of the match. Example: 30843160

Update game url

requires authentication

Update the game live url a match, which will be shown as a link in the match cards.

Example request:
curl --request POST \
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160/game_url" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ext_live_url\": \"https:\\/\\/www.youtube.com\\/watch?v=123456\"
}"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matches/30843160/game_url';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ext_live_url' => 'https://www.youtube.com/watch?v=123456',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160/game_url"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "ext_live_url": "https:\/\/www.youtube.com\/watch?v=123456"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (204):

Empty response
 

Request      

POST api/tournaments/{tournament_id}/matches/{match_id}/game_url

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

match_id   integer   

The ID of the match. Example: 30843160

Body Parameters

ext_live_url   string  optional  

The external live url. Example: https://www.youtube.com/watch?v=123456

Update match

requires authentication

Update the score for a match.

Example request:
curl --request PUT \
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"result\": {
        \"home\": 2,
        \"away\": 1
    },
    \"sets\": [
        {
            \"home\": 21,
            \"away\": 19
        }
    ]
}"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matches/30843160';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'result' => [
                'home' => 2,
                'away' => 1,
            ],
            'sets' => [
                [
                    'home' => 21,
                    'away' => 19,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matches/30843160"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "result": {
        "home": 2,
        "away": 1
    },
    "sets": [
        {
            "home": 21,
            "away": 19
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (204):

Empty response
 

Request      

PUT api/tournaments/{tournament_id}/matches/{match_id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

match_id   integer   

The ID of the match. Example: 30843160

Body Parameters

result   object  optional  

The result of the match. The result is required if using sets.

home   integer  optional  

The home team score. Example: 2

away   integer  optional  

The away team score. Example: 1

sets   object[]  optional  

The sets of the match. Only for volleyball etc.

home   integer  optional  

The home team score in the set. Example: 21

away   integer  optional  

The away team score in the set. Example: 19

Organisation

Organisation by id

requires authentication

Basic information about the current organisation.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/BC.NO.FB" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/BC.NO.FB';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/BC.NO.FB"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 117
 

{
    "data": {
        "id": "BC.NO.FB",
        "name": "Bergen Challenger",
        "email": "",
        "country": "no",
        "sports": [
            {
                "sportId": "FB_BC"
            }
        ]
    }
}
 

Request      

GET api/organisations/{id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the organisation. Example: BC.NO.FB

organisation_id   string   

The ID of the organisation. Example: SVBF.SE.SVB

Categories in a organisation

requires authentication

List of categories for an organisation.

The categories are kept between seasons.

Each league tournament must belong to a Category.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/categories?sportId=VB&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/categories';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sportId' => 'VB',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/categories"
);

const params = {
    "sportId": "VB",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 116
 

{
    "data": [
        {
            "id": 13,
            "description": "Elitserien",
            "level": 2,
            "sport": "VB",
            "belongsToDistrict": false,
            "adminDistrictId": null
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/categories?page=1",
        "last": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/categories?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/categories?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/categories",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/organisations/{organisation_id}/categories

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SVBF.SE.SVB

Query Parameters

sportId   string  optional  

Filter the result for a specific sport. BB, VB, FB etc. Must be at least 2 characters. Example: VB

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

GlobalClubs in a organisation

requires authentication

A GlobalClub may participate in many tournaments.

See the globalClubId field on TeamRegistrations and Clubs in a tournament.

For swedish organisations, the legacyId maps to the club id in IdrottOnline

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/clubs?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/clubs';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/clubs"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 114
 

{
    "data": [
        {
            "id": 2415,
            "name": "Alingsås Volleybollklubb",
            "shortName": "Alingsås VK",
            "districtId": 55,
            "legacyiD": "10461",
            "updatedAt": "2024-06-28 13:41:22"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/clubs?page=1",
        "last": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/clubs?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/clubs?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/clubs",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/organisations/{organisation_id}/clubs

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SVBF.SE.SVB

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

All players in a organisation

requires authentication

If you want to filter by club, you can use the club_id parameter. For large organisations, this can be useful to reduce the number of players returned.

Also shows current ranking points for Swedish Bordtennis

This endpoint is not paginated.

Required scope: read_all_players_in_organisation

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SBTF.SE.BT/allPlayers" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"club_id\": 2919
}"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SBTF.SE.BT/allPlayers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'club_id' => 2919.0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SBTF.SE.BT/allPlayers"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "club_id": 2919
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 109
 

{
    "data": [
        {
            "id": 95188,
            "firstName": "Palma",
            "lastName": "Green",
            "birthYear": "2008",
            "birthDate": "2008-12-21",
            "playerClubIdsLicensed": "2919",
            "playerClubId": 2919,
            "gender": "M",
            "rankingPoints": null,
            "rankingPlacement": null,
            "contractClubIds": null
        },
        {
            "id": 89368,
            "firstName": "Jacques",
            "lastName": "Howe",
            "birthYear": "1996",
            "birthDate": "1996-02-05",
            "playerClubIdsLicensed": "2919",
            "playerClubId": 2919,
            "gender": "M",
            "rankingPoints": 1553,
            "rankingPlacement": 1155,
            "contractClubIds": null
        }
    ]
}
 

Request      

GET api/organisations/{organisation_id}/allPlayers

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SBTF.SE.BT

Body Parameters

club_id   number  optional  

Optional filter for the club ID. Example: 2919

Districts

Get all districts for an organisation

requires authentication

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 113
 

{
    "data": [
        {
            "id": 802,
            "name": "Handbollförbundet Öst",
            "shortname": "HF Öst",
            "external_id": 268,
            "postal_code": "11860",
            "place": "STOCKHOLM",
            "adress": "Skansbrogatan 7, Idrottens Hus",
            "adress2": "",
            "organisationnumber": "802001-3499"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/organisations/SHF.SE.HB/districts?page=1",
        "last": "https://www.profixio.com/api/organisations/SHF.SE.HB/districts?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/organisations/SHF.SE.HB/districts?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/organisations/SHF.SE.HB/districts",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/organisations/{organisation_id}/districts

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SHF.SE.HB

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Get a district

requires authentication

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts/802" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts/802';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SHF.SE.HB/districts/802"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 112
 

{
    "data": {
        "id": 802,
        "name": "Handbollförbundet Öst",
        "shortname": "HF Öst",
        "external_id": 268,
        "postal_code": "11860",
        "place": "STOCKHOLM",
        "adress": "Skansbrogatan 7, Idrottens Hus",
        "adress2": "",
        "organisationnumber": "802001-3499"
    }
}
 

Request      

GET api/organisations/{organisation_id}/districts/{id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SHF.SE.HB

id   integer   

The ID of the district. Example: 802

Invoices

Lists club invoices for an organisation

requires authentication

requires scope: update_invoices_fx_organisation

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SBF.SE.BR/invoices?createdFromDate=2022-10-01&isExported=1&fromNumber=1&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SBF.SE.BR/invoices';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'createdFromDate' => '2022-10-01',
            'isExported' => '1',
            'fromNumber' => '1',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SBF.SE.BR/invoices"
);

const params = {
    "createdFromDate": "2022-10-01",
    "isExported": "1",
    "fromNumber": "1",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "invoice": {
                "number": 635927,
                "date": "2005-08-05",
                "due_date": "1989-10-25",
                "paid_date": null,
                "sent_at": null,
                "paid_amount": 0,
                "exported": false,
                "sum": 0,
                "credited_amount": 0,
                "remaining_amount": 0,
                "is_paid": true,
                "eksport_status_code": null,
                "export_status_message": null
            },
            "head": {
                "topptekst": "eum",
                "forbund_adresse": "eum",
                "forbund_postnr": "praesentiu",
                "forbund_poststed": "reiciendis",
                "forbund_telefon": "+17342201360",
                "forbund_telefaks": "",
                "forbund_epost": "[email protected]",
                "forbund_hjemmeside": "in",
                "forbund_iban": "",
                "forbund_swift": "",
                "forbund_organisasjonsnummer": "60088143",
                "forbund_konto": "",
                "id": 33206,
                "klubbid": 29926,
                "fakturanr": 635927,
                "eksternid": 29926,
                "navn": "Dianaborough",
                "kontaktnavn": "",
                "adresse": "omnis",
                "postnr": "quibusdam",
                "poststed": "quos",
                "opprettetdato": "2005-08-05",
                "forfalldato": "1989-10-25"
            },
            "lines": []
        },
        {
            "invoice": {
                "number": 548,
                "date": "2015-03-16",
                "due_date": "1977-05-20",
                "paid_date": null,
                "sent_at": null,
                "paid_amount": 0,
                "exported": false,
                "sum": 0,
                "credited_amount": 0,
                "remaining_amount": 0,
                "is_paid": true,
                "eksport_status_code": null,
                "export_status_message": null
            },
            "head": {
                "topptekst": "vel",
                "forbund_adresse": "facilis",
                "forbund_postnr": "perferendi",
                "forbund_poststed": "possimus",
                "forbund_telefon": "+18203347341",
                "forbund_telefaks": "",
                "forbund_epost": "[email protected]",
                "forbund_hjemmeside": "debitis",
                "forbund_iban": "",
                "forbund_swift": "",
                "forbund_organisasjonsnummer": "56399575",
                "forbund_konto": "",
                "id": 33207,
                "klubbid": 29927,
                "fakturanr": 548,
                "eksternid": 29927,
                "navn": "Zettaland",
                "kontaktnavn": "",
                "adresse": "labore",
                "postnr": "voluptatem",
                "poststed": "omnis",
                "opprettetdato": "2015-03-16",
                "forfalldato": "1977-05-20"
            },
            "lines": []
        }
    ]
}
 

Request      

GET api/organisations/{organisation_id}/invoices

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SBF.SE.BR

Query Parameters

createdFromDate   string  optional  

Display where date is >= to this value
Format: YYYY-MM-DD HH:MM:SS or YYYY-MM-DD . Must be a valid date. Example: 2022-10-01

isExported   boolean  optional  

Display where the record is exported. Example: true

fromNumber   integer  optional  

Display where number is >= to this value. Example: 1

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Bulk update

requires authentication

Update the exported status, and paid status of invoices

  1. After importing invoices, set export status to 200 if successful, 400 if failed.
  2. After receiving payment, set paid date and amount.

requires scope: update_invoices_fx_organisation

Example request:
curl --request POST \
    "https://www.profixio.com/app/api/organisations/AUT.MOLESTIAE.IQ/invoices/bulkUpdate" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoices\": [
        {
            \"number\": 107,
            \"export_status_code\": 200,
            \"export_status_message\": \"Invoice 107 created in TotalInvoice\",
            \"paid_date\": \"2021-01-01\",
            \"paid_amount\": 100,
            \"credited_amount\": 100
        }
    ]
}"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/AUT.MOLESTIAE.IQ/invoices/bulkUpdate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'invoices' => [
                [
                    'number' => 107,
                    'export_status_code' => 200,
                    'export_status_message' => 'Invoice 107 created in TotalInvoice',
                    'paid_date' => '2021-01-01',
                    'paid_amount' => 100.0,
                    'credited_amount' => 100.0,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/AUT.MOLESTIAE.IQ/invoices/bulkUpdate"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoices": [
        {
            "number": 107,
            "export_status_code": 200,
            "export_status_message": "Invoice 107 created in TotalInvoice",
            "paid_date": "2021-01-01",
            "paid_amount": 100,
            "credited_amount": 100
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/organisations/{organisation_id}/invoices/bulkUpdate

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   integer   

The ID of the organisation. Example: AUT.MOLESTIAE.IQ

Body Parameters

invoices   object[]   
number   integer   

The invoice number. Example: 107

export_status_code   integer  optional  

The status code of the update. 200 for when your system could recreate the invoice, 400 for failure. Example: 200

Must be one of:
  • 200
  • 400
export_status_message   string  optional  

The status message of the export process. Example: Invoice 107 created in TotalInvoice

paid_date   string  optional  

The date the invoice was paid. Must be a valid date. Example: 2021-01-01

paid_amount   number  optional  

The amount paid. Example: 100

credited_amount   number  optional  

The amount credited. Example: 100

Ranking

RankingPoints for a tournament

requires authentication

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/rankingpoints" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/rankingpoints';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/rankingpoints"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "lag_id": 1080287,
        "fk_klasse": 159911,
        "lag_klasse": "D",
        "entrypoeng": 333,
        "entrypoeng_sort": 333.00000245,
        "playerpoints": {
            "89861": 88,
            "43821": 245
        }
    }
]
 

Request      

GET api/tournaments/{tournament_id}/rankingpoints

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

RankingPoints for a team

requires authentication

Only returns data if the tournament uses ranking. Mostly used for volleyball (NVBF / SVBF)

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/rankingpoints/721480" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/rankingpoints/721480';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/rankingpoints/721480"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "lag_id": 1080287,
    "fk_klasse": 159911,
    "lag_klasse": "D",
    "entrypoeng": 333,
    "entrypoeng_sort": 333.00000245,
    "playerpoints": {
        "89861": 88,
        "43821": 245
    }
}
 

Request      

GET api/tournaments/{tournament_id}/rankingpoints/{lag_lag_id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

lag_lag_id   integer   

The ID of the team. Example: 721480

Season

Seasons in a organisation

requires authentication

List of seasons for an organisation

Sorting: Newest seasons first

Response fields

currentlyActive describes if this is the active season in Profixio for this organisation.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/seasons?sportId=VB&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/seasons';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sportId' => 'VB',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/seasons"
);

const params = {
    "sportId": "VB",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 115
 

{
    "data": [
        {
            "id": 751,
            "name": "Säsongen 2024/25",
            "sportId": "VB",
            "currentlyActive": true,
            "seasonStartDate": "2024-05-16",
            "seasonEndDate": "2025-05-31",
            "registrationStartDate": null,
            "registrationLastDate": null
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/seasons?page=1",
        "last": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/seasons?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/seasons?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/seasons",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/organisations/{organisation_id}/seasons

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SVBF.SE.SVB

Query Parameters

sportId   string  optional  

Filter the result for a specific sport. BB, VB, FB etc. Must be at least 2 characters. Example: VB

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Season by Id

requires authentication

Return information about a specific season by Id

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/seasons/architecto" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/seasons/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/seasons/architecto"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 758,
        "name": "adipisci",
        "sportId": "FB",
        "currentlyActive": true,
        "seasonStartDate": "2024-08-16",
        "seasonEndDate": "2024-01-10",
        "registrationStartDate": "2024-01-04",
        "registrationLastDate": "2024-03-30"
    }
}
 

Request      

GET api/seasons/{id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the season. Example: architecto

The season tree

requires authentication

Lists categories, divisions and tournaments for a season.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/seasons/711/tree?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/seasons/711/tree';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/seasons/711/tree"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 108
 

[
    {
        "id": 496,
        "name": "Förbundsserier",
        "level": 10,
        "sport": "BB",
        "belongsToDistrict": false,
        "adminDistrictId": null,
        "divisions": [
            {
                "id": 4533,
                "name": "Herrar",
                "belongsToDistrict": false,
                "adminDistrictId": null,
                "tournaments": [
                    {
                        "id": 30963,
                        "name": "SBL Herr",
                        "slug": "leagueid13505",
                        "webUrl": "https://www.profixio.com/app/leagueid13505",
                        "matchCount": 196,
                        "belongsToDistrict": false,
                        "adminDistrictId": null,
                        "matchCategories": [
                            {
                                "id": 1124523,
                                "name": "SBL Herr",
                                "categoryCode": "SBL Herr"
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
 

Request      

GET api/seasons/{season_id}/tree

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

season_id   integer   

The ID of the season. Example: 711

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Statistics

Tournament

Playerstatistics

requires authentication

Get player statistics in a series. The player statistics are collected from the matches with livescore, after the match has finished.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/playerStats?matchCategory=3247289" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/playerStats';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'matchCategory' => '3247289',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/playerStats"
);

const params = {
    "matchCategory": "3247289",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "teamId": 1326067,
            "globalClubId": 16573,
            "tournamentId": 38839,
            "teamName": "Hansenview",
            "personId": 986241,
            "firstName": "Brenda",
            "lastLame": "Eichmann",
            "assists": 1,
            "totalGoals": 5,
            "gameGoals": 3,
            "penaltyGoals": 2,
            "games": 3,
            "gamesPlayed": 2
        },
        {
            "teamId": 1326068,
            "globalClubId": 366796063,
            "tournamentId": 38846,
            "teamName": "Lake Franco",
            "personId": 986242,
            "firstName": "Nicolette",
            "lastLame": "Nicolas",
            "assists": 1,
            "totalGoals": 5,
            "gameGoals": 3,
            "penaltyGoals": 2,
            "games": 3,
            "gamesPlayed": 2
        }
    ]
}
 

Request      

GET api/tournaments/{tournament_id}/playerStats

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

matchCategory   integer  optional  

Display where match category is equal to this value. Example: 3247289

Tournament

Tournaments

Tournaments in a organisation

requires authentication

List of tournament (not leagues) for an organisation

Only lists tournament newer than 1 year ago.

Sorting: By start date, newest first

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/tournaments?sportId=VB&limit=15&page=1&open_registration=16" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/tournaments';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sportId' => 'VB',
            'limit' => '15',
            'page' => '1',
            'open_registration' => '16',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/organisations/SVBF.SE.SVB/tournaments"
);

const params = {
    "sportId": "VB",
    "limit": "15",
    "page": "1",
    "open_registration": "16",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 110
 

{
    "data": [
        {
            "id": 38690,
            "name": "Mobigo Cup 2024",
            "slug": "mobigo-cup-2024",
            "isTournament": true,
            "webUrl": "https://www.profixio.com/app/mobigo-cup-2024",
            "organisationId": "SVBF.SE.SVB",
            "startDate": "2024-12-28",
            "endDate": "2024-12-28",
            "sportId": "VB",
            "teamRegistrationConfig": {
                "registrationIsOpen": true,
                "registrationFromDate": "2024-09-22T10:00:00.000000Z",
                "registrationLastDate": "2024-12-18T23:00:00.000000Z",
                "publicDeadline": "2024-12-19T22:59:59.999999Z"
            },
            "address": {
                "street": "Andréegatan 8",
                "postalCode": "23344",
                "place": "Svedala"
            },
            "license": {
                "id": 2349,
                "organisasjonsnr": "",
                "name": "Svedala Volley",
                "globalClubId": 2573
            },
            "matchCount": 0
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/tournaments?page=1",
        "last": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/tournaments?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/tournaments?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/organisations/SVBF.SE.SVB/tournaments",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/organisations/{organisation_id}/tournaments

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

organisation_id   string   

The ID of the organisation. Example: SVBF.SE.SVB

Query Parameters

sportId   string  optional  

Filter the result for a specific sport. BB, VB, FB etc. Must be at least 2 characters. Example: VB

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

open_registration   integer  optional  

1 = Display only tournaments with open registration Example: 16

Leagues

Tournaments in a season

requires authentication

List of tournaments/leagues for a season.

Can be filtered by category and/or sport.

TIP: Also see 'The season tree' endpoint to get all leagues, sorted under divisions and categories.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/seasons/711/tournaments?limit=15&page=1&categoryId=496&sportId=BB" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/seasons/711/tournaments';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
            'categoryId' => '496',
            'sportId' => 'BB',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/seasons/711/tournaments"
);

const params = {
    "limit": "15",
    "page": "1",
    "categoryId": "496",
    "sportId": "BB",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 107
 

{
    "data": [
        {
            "id": 30963,
            "name": "SBL Herr",
            "categoryId": 496,
            "categoryName": "Förbundsserier",
            "divisionId": 4533,
            "divisionName": "Herrar",
            "seasonId": 711,
            "matchCount": 196,
            "registrationTeamCount": 11,
            "matchCategories": [
                {
                    "id": 1124523,
                    "name": "SBL Herr",
                    "categoryCode": "SBL Herr"
                }
            ]
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/seasons/711/tournaments?page=1",
        "last": "https://www.profixio.com/api/seasons/711/tournaments?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/seasons/711/tournaments?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/seasons/711/tournaments",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/seasons/{season_id}/tournaments

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

season_id   integer   

The ID of the season. Example: 711

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

categoryId   integer  optional  

The category the tournament belongs to. Example: 496

sportId   string  optional  

Filter the result for a specific sport. Example: BB

Tournament by id

requires authentication

Info about a tournament

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/architecto" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/architecto"
);

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 38847,
        "name": "aut adipisci quidem2024",
        "slug": "autadipisciquidem2024",
        "isTournament": true,
        "webUrl": "http://www.profixio.com/app/autadipisciquidem2024",
        "organisationId": "NFF.NO.FB",
        "countryId": "NO",
        "startDate": "2024-12-01",
        "endDate": "2024-12-04",
        "language": "",
        "isDeactivated": false,
        "updatedAt": "2024-10-31T14:33:06.000000Z",
        "isCancelled": false,
        "usesClub": true,
        "clubName": "North Roderick",
        "tournamentIsFinished": false,
        "tournamentHasStarted": false,
        "sport": {
            "id": "FB",
            "name": "Fotball",
            "sportsnamePublic": "Fotball"
        },
        "contactinfo": {
            "email": "[email protected]",
            "address": "",
            "postalCode": "06227",
            "place": "Lucienne Curve",
            "phone": "",
            "homepage": "http://www.dare.org/iure-odit-et-et-modi-ipsum-nostrum-omnis"
        },
        "teamRegistrationConfig": {
            "registrationIsOpen": true,
            "registrationFromDate": null,
            "registrationLastDate": "2024-12-07T14:33:06.000000Z",
            "publicDeadline": "2024-12-07T14:33:06.000000Z",
            "hideRegistrationsPublic": false,
            "registrationsCount": 0
        },
        "servicesConfig": {
            "registrationIsOpen": false,
            "hasServices": false,
            "deadline": "2024-12-10T23:00:00.000000Z"
        },
        "playerRegistrationConfig": {
            "registrationIsOpen": true,
            "deadline": "2024-12-09"
        },
        "refereeConfig": {
            "registrationIsOpen": false,
            "registrationStartDate": "2024-12-01",
            "refereeRegistrationDeadline": null
        },
        "matchScheduleConfig": {
            "hideMatches": false,
            "status": "UNPUBLISHED",
            "categoriesCount": 0,
            "matchesCount": 0
        }
    }
}
 

Request      

GET api/tournaments/{id}

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the tournament. Example: architecto

tournament_id   integer   

The ID of the tournament. Example: 10

TeamRegistrations in a tournament

requires authentication

Get teams registered in a tournament. The team registrations are done before matches are published.

The id field here maps to teamRegistrationId on the home and awayteams in a Match

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/teams?players=&seeding=&limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/teams';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'players' => '0',
            'seeding' => '0',
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/teams"
);

const params = {
    "players": "0",
    "seeding": "0",
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 103
 

{
    "data": [
        {
            "id": 721480,
            "name": "Czech Republic",
            "clubId": 175423,
            "globalClubId": null,
            "registrationClass": 119453,
            "registrationClassCode": "M",
            "matchCategories": [
                {
                    "id": 1102493
                }
            ],
            "registrationLevel": null,
            "jersey": "",
            "onWaitingList": false,
            "statusCode": 0,
            "registeredAt": "2017-07-10T09:48:26.000000Z",
            "deletedAt": null,
            "updatedAt": "2017-07-10 09:48:26",
            "isDeactivatedInSchedule": false,
            "countryId": null,
            "registrationFeeStatus": {
                "isPaid": true,
                "baseFee": 0,
                "discount": 0,
                "amount": 0,
                "paid": 0
            },
            "serviceFeeStatus": {
                "isPaid": true,
                "amount": 0,
                "ordersCount": 0,
                "paid": 0
            },
            "registrationComment": "",
            "teamUrl": "https://www.profixio.com/app/uefaeurosintef/teams/721480"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/teams?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/teams?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/teams?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/teams",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/teams

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

players   boolean  optional  

Include list of players for each team. Values: 0 = false, 1 = true. Example: false

seeding   boolean  optional  

Include seeding number. Used for seeding in tournaments. For instance beach volley. Values: 0 = false, 1 = true. Example: false

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

GlobalTeams in a tournament

requires authentication

Get teams for a tournament for Leagues which do not use TeamRegistration.

The id field here maps to globalTeamId on the home and awayteams in a Match

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/globalTeams?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/globalTeams';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/globalTeams"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 102
 

{
    "data": [
        {
            "id": 14655,
            "name": "Broberg/Söderhamn IF",
            "globalClubId": 23175
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/globalTeams?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/globalTeams?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/globalTeams?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/globalTeams",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/globalTeams

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Clubs in a tournament

requires authentication

Get clubs for a tournament. Only returns clubs that has teamRegistrations

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/clubs?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/clubs';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/clubs"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 101
 

{
    "data": [
        {
            "id": 175423,
            "name": "NoName",
            "globalClubId": null,
            "tournamentId": 10,
            "countryId": null
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/clubs?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/clubs?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/clubs?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/clubs",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/clubs

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

MatchCategories in a tournament

requires authentication

Get MatchCategories for a tournament.

A matchcategory can have:

In Playoffs the teams are automatically placed based on the results from the group and league matches.

Example:

MatchCategory
Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/matchCategories?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matchCategories';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matchCategories"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 100
 

{
    "data": [
        {
            "id": 1102493,
            "name": "Men",
            "categoryCode": "M",
            "numberOfSets": 0,
            "sortOrder": 0,
            "matchlength": 15,
            "matchtableUpdatedAt": "2019-09-03T15:11:09.000000Z",
            "matchTableIsHidden": false,
            "numberOfPeriods": 1,
            "isHidden": false,
            "hideResults": false,
            "gender": "M",
            "minutesPerPeriod": 1,
            "poolPlay": 0,
            "matchGroups": [
                {
                    "id": 3247288,
                    "matchCategoryId": 1102493,
                    "displayName": "A",
                    "name": "1",
                    "sortOrder": 0,
                    "matchtableUpdatedAt": "0000-12-31T23:17:00.000000Z"
                },
                {
                    "id": 3247289,
                    "matchCategoryId": 1102493,
                    "displayName": "B",
                    "name": "2",
                    "sortOrder": 0,
                    "matchtableUpdatedAt": "0000-12-31T23:17:00.000000Z"
                },
                {
                    "id": 3247290,
                    "matchCategoryId": 1102493,
                    "displayName": "C",
                    "name": "3",
                    "sortOrder": 0,
                    "matchtableUpdatedAt": "0000-12-31T23:17:00.000000Z"
                },
                {
                    "id": 3247291,
                    "matchCategoryId": 1102493,
                    "displayName": "D",
                    "name": "4",
                    "sortOrder": 0,
                    "matchtableUpdatedAt": "0000-12-31T23:17:00.000000Z"
                }
            ],
            "matchLeagues": [
                {
                    "id": 3313,
                    "name": "L A",
                    "sortOrder": 100
                },
                {
                    "id": 3311,
                    "name": "L B",
                    "sortOrder": 100
                },
                {
                    "id": 3312,
                    "name": "L C",
                    "sortOrder": 100
                }
            ],
            "playoffTrees": [
                {
                    "id": 55087,
                    "published": true,
                    "name": "",
                    "number": 1
                }
            ]
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/matchCategories?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/matchCategories?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/matchCategories?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/matchCategories",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/matchCategories

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

MatchGroups in a tournament

requires authentication

Get the MatchGroups in a tournament. Each MatchGroup belongs to a MatchCategory

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/10/matchGroups?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/10/matchGroups';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/10/matchGroups"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 99
 

{
    "data": [
        {
            "id": 3247288,
            "matchCategoryId": 1102493,
            "displayName": "A",
            "name": "1",
            "sortOrder": 0,
            "matchtableUpdatedAt": "0000-12-31T23:17:00.000000Z"
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/10/matchGroups?page=1",
        "last": "https://www.profixio.com/api/tournaments/10/matchGroups?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/10/matchGroups?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/10/matchGroups",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/matchGroups

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 10

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1

Arenas

Arenas for a tournament

requires authentication

Get the arenas for a tournament. The arenas are grouped by match category, and by match groups.

Example request:
curl --request GET \
    --get "https://www.profixio.com/app/api/tournaments/6/arenas?limit=15&page=1" \
    --header "X-Api-Secret: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.profixio.com/app/api/tournaments/6/arenas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Secret' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '15',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://www.profixio.com/app/api/tournaments/6/arenas"
);

const params = {
    "limit": "15",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "X-Api-Secret": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 98
 

{
    "data": [
        {
            "id": 198159,
            "name": "Älta IP",
            "fields": [
                {
                    "id": 1193360,
                    "name": "Plan 2"
                },
                {
                    "id": 1193361,
                    "name": "Plan 3"
                }
            ]
        }
    ],
    "links": {
        "first": "https://www.profixio.com/api/tournaments/6/arenas?page=1",
        "last": "https://www.profixio.com/api/tournaments/6/arenas?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "Prev",
                "active": false
            },
            {
                "url": "https://www.profixio.com/api/tournaments/6/arenas?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next",
                "active": false
            }
        ],
        "path": "https://www.profixio.com/api/tournaments/6/arenas",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tournaments/{tournament_id}/arenas

Headers

X-Api-Secret      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tournament_id   integer   

The ID of the tournament. Example: 6

Query Parameters

limit   integer  optional  

The number of records per page. Must be at least 1. Must not be greater than 500. Example: 15

page   integer  optional  

The page number of the paginated result. Must be at least 1. Example: 1