Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/tui-group-token-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Tui Group Token API
version: '1.0'
description: 'Operations tagged token across 2 of this provider''s published API definitions: tui-group-tui-newskies-digital-api-openapi.yml, tui-group-tui-newskies-gonow-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
- url: https://prod.api.tui/flight/newskies/gonow
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/gonow
description: TUI Playground
security:
- JWT: []
tags:
- name: token
paths:
/api/v1/token:
post:
tags:
- token
summary: Creates the general access token that will grant access to the API.
operationId: v1_token_post
requestBody:
x-name: request
description: The token request.
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRequest'
examples:
Default:
description: A request is optional. With no request you will get back the default anonymous token.
value: {}
Application Specific:
description: When supplying an application name you will get the default anonymous token configured for that application (if available).
value:
applicationName: WebApp
x-position: 1
responses:
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfTokenResponse'
examples:
Created:
description: A successful token with the idle time out in minutes.
value:
data:
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJVbmtub3duIiwianRpIjoiZjZmNmQwMTAtOTM4OC0zM2Q1LTEwOGItYTk0NDNmMzcxMDc4IiwiaXNzIjoiZG90UkVaIEFQSSJ9.43Wh_19jHPHzEIPNxTUWaJQtTPHSkB_WmEPL-xxxxxx
idleTimeoutInMinutes: 15
deprecated: true
put:
tags:
- token
summary: Keeps the active token alive.
description: 'GraphQL endpoint: tokenKeepAlive'
operationId: v1_token_put
responses:
'440':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
examples:
Timed out:
description: The token timed out, please get a new token.
value:
errors:
- id: null
code: core:Token:Timeout
message: null
type: Error
details: null
rawMessage: The provided token has timed out.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
examples:
Ok:
description: No content returned.
value:
data: null
deprecated: true
delete:
tags:
- token
summary: Abandons the active token.
description: 'GraphQL endpoint: tokenDelete'
operationId: v1_token_delete
responses:
'440':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
examples:
Timed out:
description: The token timed out, please get a new token.
value:
errors:
- id: null
code: core:Token:Timeout
message: null
type: Error
details: null
rawMessage: The provided token has timed out.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
examples:
Ok:
description: No content returned.
value:
data: null
deprecated: true
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/auth/v1/token:
get:
tags:
- token
summary: Get the information about the short-lived JWT.
description: 'With custom application names (system type in NewSkies), because of the nature of the underlying system type, the
`NskServer.SystemName` will always show as `UserDefined`. To see the custom name, see the
`ServerContext.ApplicationName`.
GraphQL endpoint: jwtToken'
operationId: auth_v1_token_get
responses:
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfJwtDetailsResponse'
put:
tags:
- token
summary: Updates the short-lived JWT.
description: Updates the short-lived JWT.
operationId: auth_v1_token_put
requestBody:
x-name: request
description: The refresh request.
content:
application/json:
schema:
$ref: '#/components/schemas/JwtRefreshRequest'
x-position: 1
responses:
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfJwtResponse'
examples:
JWT token creation successful:
description: Successful token creation with valid user credentials.
value:
data:
token: '**JWT Token**'
cultureCode: en-US
currencyCode: USD
roleCode: AIR2
locationCode: HDQ
domainCode: DEF
organizationCode: '88888888'
expires: '2026-07-09T06:10:14.6420287+00:00'
userKey: NDEwMjQ-
personKey: NzE3MzI-
'400':
description: There was a problem with the request and it could not be completed.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfString'
examples:
Agent not found:
description: For security unless in debug mode for testing servers the same error will be returned for multiple credential scenarios.
value:
errors:
- id: null
code: nsk-server:Credentials:Failed
message: nsk-server:Credentials:Failed
type: Error
details: null
rawMessage: No agent found for requested agent name DEF/authAppMFAUse.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Invalid password:
description: For security unless in debug mode for testing servers the same error will be returned for multiple credential scenarios.
value:
errors:
- id: null
code: nsk-server:Credentials:Failed
message: nsk-server:Credentials:Failed
type: Error
details: null
rawMessage: The agent (DEF/authAppMFAUser) failed authentication.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Invalid culture code:
description: The provided culture code in the request is an invalid culture identifier.
value:
errors:
- id: null
code: nsk:CultureCode:InvalidCultureCode
message: The culture code `asdf` is invalid.
type: Validation
details: null
rawMessage: The culture code `asdf` is invalid.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
- id: null
code: nsk:Exceptions:OutOfRange
message: 'The value ''asdf'' is out of range for ''CultureCodeValidator.Culture Code''.\nExpected values: (en-US,de-DE,en-AU,en-CA,en-IE,es-ES,es-MX,eu-ES,fr-FR,hi-IN,id-ID,ja-JP,ko-KR,th-TH,zh-CN)'
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Culture code not configured:
description: The provided culture code in the request is not configured in the resources. For valid culture codes, see GET /api/nsk/v1/resources/cultures
value:
errors:
- id: null
code: nsk:Exceptions:OutOfRange
message: 'The value ''asdf'' is out of range for ''CultureCodeValidator.Culture Code''.\nExpected values: (en-US,de-DE,en-AU,en-CA,en-IE,es-ES,es-MX,eu-ES,fr-FR,hi-IN,id-ID,ja-JP,ko-KR,th-TH,zh-CN)'
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
'401':
description: Authentication is required for this request.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfJwtResponse'
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/nsk/v1/token:
get:
tags:
- token
summary: Get the information about the current token.
description: '- With custom application names (system type in NewSkies), because of the nature of the underlying system type, the
`NskServer.SystemName` will always show as `UserDefined`. To see the custom name, see the
`ServerContext.ApplicationName`.
- The values `IsVirtual` and `HasBookingInState` no longer apply if the NSK JWT token is being used.
GraphQL endpoint: token'
operationId: nsk_v1_token_get
responses:
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfNskSessionContext'
deprecated: true
delete:
tags:
- token
summary: Abandons the active token.
operationId: nsk_v1_token_delete
responses:
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
deprecated: true
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/nsk/v2/token:
post:
tags:
- token
summary: Creates the general access token that will grant access to the API.
description: 'Security Note:
This endpoint has the ability to log in as any role assigned to a user
or that is allowed through impersonation settings. A user may still log
into a role that is not assigned to them if the impersonation settings
allow it.'
operationId: nsk_v2_token_post
requestBody:
x-name: request
description: The nsk token request.
content:
application/json:
schema:
$ref: '#/components/schemas/NskTokenRequestv2'
x-position: 1
responses:
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfMultiFactorTokenResponse'
'202':
description: Accepted, continue multi-factor authentication.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfMultiFactorTokenResponse'
examples:
MFA registration required.:
description: This role requires multi-factor authentication. This user has not yet choose the preferred type of MFA and registered with it. See POST /token/multifactor
value:
messages:
- code: nsk-server:MFA:RegistrationRequired
type: Information
value: Multi-factor registration is required.
status: 0
details: null
data:
multiFactorRequired:
challengeId: null
requiresRegistration: true
requiresChallengeCode: false
types:
- 2
- 1
- 0
token: null
idleTimeoutInMinutes: 0
MFA challenge required.:
description: This role requires multi-factor authentication. This user has already registered but needs to use their chosen registration method for the 2nd factor authentication.
value:
messages:
- code: nsk-server:MFA:ChallengeCodeRequired
type: Information
value: Multi-factor authentication required. Please check your second factor method and enter the challenge code.
status: 0
details: null
data:
multiFactorRequired:
challengeId: 01234567890123456789
requiresRegistration: false
requiresChallengeCode: true
types:
- 0
token: null
idleTimeoutInMinutes: 0
'400':
description: There was a problem with the request and it could not be completed.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfString'
examples:
MFA registration required.:
description: This role requires multi-factor authentication. This user has not yet choose the preferred type of MFA and registered with it. See POST /token/multifactor
value:
errors:
- id: null
code: nsk-server:MFA-RegistrationRequired
message: Multi-factor registration is required.
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
MFA challenge required.:
description: This role requires multi-factor authentication. This user has already registered but needs to use their chosen registration method for the 2nd factor authentication. The types returned represent the available types and not necessarily which type your 2FA was sent to.
value:
errors:
- id: null
code: nsk-server:MFA-ChallengeCodeRequired
message: Multi-factor authentication required. Please check your second factor method and enter the challenge code.
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
deprecated: true
put:
tags:
- token
summary: 'Given a non-null request, upgrades the current session''s logged in user.
Otherwise, keeps the active token alive.'
description: 'Security Note:
This endpoint has the ability to log in as any role assigned to a user
or that is allowed through impersonation settings. A user may still log
into a role that is not assigned to them if the impersonation settings
allow it.
GraphQL endpoint: tokenUpgradev2'
operationId: nsk_v2_token_put
requestBody:
x-name: request
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialsBase'
x-position: 1
responses:
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
deprecated: true
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/auth/v1/token/anonymous:
post:
tags:
- token
summary: Create a short-lived anonymous JWT.
description: 'Tokens have a set
expiration time. Client applications should call the put endpoint to get a new token before this
expiration time.'
operationId: auth_v1_token_anonymous_post
requestBody:
x-name: request
description: Get token request.
content:
application/json:
schema:
$ref: '#/components/schemas/JwtRefreshRequest'
examples:
Anonymous JWT Token Request:
description: Example request for creating an anonymous JWT token.
value:
applicationName: Digital API
cultureCode: en-US
newSession: true
Empty Request:
description: An empty anonymous JWT token request.
value:
applicationName: null
cultureCode: null
newSession: false
x-position: 1
responses:
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfJwtResponse'
examples:
JWT token creation successful:
description: Successful token creation with valid anonymous credentials.
value:
data:
token: '**JWT Token**'
cultureCode: en-US
currencyCode: USD
roleCode: TAW3
locationCode: WWW
domainCode: WW2
organizationCode: '88888888'
expires: '2026-07-09T06:10:14.6132458+00:00'
userKey: NDEwMjQ-
personKey: NzE3MzI-
'400':
description: There was a problem with the request and it could not be completed.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfString'
examples:
Agent not found:
description: For security unless in debug mode for testing servers the same error will be returned for multiple credential scenarios.
value:
errors:
- id: null
code: nsk-server:Credentials:Failed
message: nsk-server:Credentials:Failed
type: Error
details: null
rawMessage: No agent found for requested agent name DEF/authAppMFAUse.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Invalid password:
description: For security unless in debug mode for testing servers the same error will be returned for multiple credential scenarios.
value:
errors:
- id: null
code: nsk-server:Credentials:Failed
message: nsk-server:Credentials:Failed
type: Error
details: null
rawMessage: The agent (DEF/authAppMFAUser) failed authentication.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Invalid culture code:
description: The provided culture code in the request is an invalid culture identifier.
value:
errors:
- id: null
code: nsk:CultureCode:InvalidCultureCode
message: The culture code `asdf` is invalid.
type: Validation
details: null
rawMessage: The culture code `asdf` is invalid.
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
- id: null
code: nsk:Exceptions:OutOfRange
message: 'The value ''asdf'' is out of range for ''CultureCodeValidator.Culture Code''.\nExpected values: (en-US,de-DE,en-AU,en-CA,en-IE,es-ES,es-MX,eu-ES,fr-FR,hi-IN,id-ID,ja-JP,ko-KR,th-TH,zh-CN)'
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
Culture code not configured:
description: The provided culture code in the request is not configured in the resources. For valid culture codes, see GET /api/nsk/v1/resources/cultures
value:
errors:
- id: null
code: nsk:Exceptions:OutOfRange
message: 'The value ''asdf'' is out of range for ''CultureCodeValidator.Culture Code''.\nExpected values: (en-US,de-DE,en-AU,en-CA,en-IE,es-ES,es-MX,eu-ES,fr-FR,hi-IN,id-ID,ja-JP,ko-KR,th-TH,zh-CN)'
type: Validation
details: null
rawMessage: null
exception: null
debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
data: null
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/nsk/v1/token/culture:
post:
tags:
- token
summary: Sets the culture code for the lifetime of the token.
description: 'Note there is middleware that looks for "Culture" on every request in the headers or query string parameters.
These can be used if you want to set the culture for a single request only.
GraphQL endpoint: tokenCultureSet'
operationId: nsk_v1_token_culture_post
parameters:
- name: defaultCultureCode
in: query
description: The culture code to use as the default for the life of this token.
schema:
type:
- string
- 'null'
x-position: 1
responses:
'200':
description: OK. Request completed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponse'
deprecated: true
servers:
- url: https://prod.api.tui/flight/newskies/rest
description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
description: TUI Playground
/api/auth/v1/token/multifactor:
post:
tags:
- token
summary: Register multi-factor authentication options.
description: 'Allows first time users to select their multifactor authentication method and will send a challenge code to that
method.'
operationId: auth_v1_token_multifactor_post
requestBody:
x-name: request
description: The multi-factor registration request
content:
application/json:
schema:
$ref: '#/components/schemas/MultiFactorRegisterRequest'
examples:
Register Email:
description: Initial request to register an email.
value:
credentials:
domain: DEF
username: agent123
password: '*******'
registration:
email: getChallengeCode@mfa.com
type: 0
Verify:
description: Second request to verify the challenge code with a challenge id.
value:
credentials:
domain: DEF
username: agent123
password: '*******'
verify:
challengeCode: '012345'
challengeId: 01234567890123456789
Register SMS:
description: Initial request to register an phone number.
value:
credentials:
domain: DEF
username: agent123
password: '*******'
registration:
phone: 123-123-1234
type: 1
Register TOTP:
description: Initial request to register an authenticator app.
value:
credentials:
domain: DEF
username: agent123
password: '*******'
registration:
type: 2
required: true
x-position: 1
responses:
'201':
description: The item was created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfMultiFactorRegisterResponse'
examples:
Verified Example:
description: MFA registrations has been verified. This will only need to be done once and the user can now proceed to POST /token/user to restart the authentication process.
value:
data:
qrCodeUrl: null
challengeId: null
'202':
description: Waiting on additional data.
content:
application/json:
schema:
$ref: '#/components/schemas/IJsonResponseOfMultiFactorRegisterResponse'
examples:
TOTP Example:
description: This value can be used in websites or by devs using sites such as https://jaredwinick.github.io/base64-image-viewer/ and would be scanned by an authenticator app to provide the challenge code. Next please call this same endpoint to verify the MFA registration.
value:
data:
qrCodeUrl: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeoAAAHqAQAAAADjFjCXAAADHElEQVR42u2dW47bMAxFiXoBXpK27iV5AQY0jsyXkkE/Sg3QoscfRjLx+TEuSF2S0kivXIeAg4ODg4ODg4P/Tbjotd2f9uv53PsZt+1+dL+fa6c92gb+S0oX+P+Jq+qGhkJcQ3/t1F9vbW7dlLj1RKA68IrqXjGsDdVZ1LuvS24Rvm7Pc9fziGoS1YEvU90rmqm4Rq4doc9vqA7852LdI7grp1T/iurAf2Zd91Kd/k1SwGNdB75QdeFh2/n7Gx4WfJHq4noS6RGxzi3Ft4UX3jx4Idbtl7kJK5WY4DzNiqRHiHXgi1Q3hLR3tRRuaR/9jcrJuzp58+A1D6sGdajOiiaRYaNoEpYC1YHX3IQXQ9yvapod2dS6ZONvsepDdeAVN+Gxrr3bh6Gwy3sTkn9FdeAlDxvOQaskGtckGwmtJndiHfgC1anCNi8Va/c1yica8KJyh+rAyx72s936fntUNyBUB77Ew+bGgzVjtWkRHtZqKFSJwRdl2Nzun0La5DCiaYHqwIuqs7yqpToLeI+5PcSdawxDoTrwBR5Wy3KpD3uZ6vyrKhHVga9Y180GNc3X9SkINs+/qA58Raz7GC05dW499u2kLgXrOvD6us4bD7KlCc6pLbGlHgaqAy9nWN+ek6fqXj+32JlocjQlojrwaoY16c2xztLsN19RHXhVdWEQRD9Z+U7kY6MObgJ8iYe1PWIW5kTSRp1m4yY2c8csMfiidZ2VSnLjPy3z9IcthUNUB17zsHNbbBqos/l2l97Oug58SawTV9Pl6zorEHupzvplVE7AV6jOuq+mv9wRy7HO139kWPC66vp0sIlMFeFD8hkBOTHz5sGrGVYk+YU8jOKbEseVjhjjzYP/uZuY9/5PW2G1XxaTJqzrwBefc5I7/aeelZiNrO/lQXXgVdW11POaZtmj8X/4aLFWjlEdeFF1KbjFCXXXNH3X3eayCxt8reraXDRuKeGq4OhNgC8/q3PeN+GH7cT2MOp14IvXdTHLno6/TjsohF3Y4OvP6oy5zWOfqiQ97eWhDwteVx3/IAYcHBwcHBwc/F/HvwBzCfzfcRsB9wAAAABJRU5ErkJggg==
challengeId: 01234567890123456789
Email or SMS Example:
description: An email will be sent that provides a challenge code. Next please call this same endpoint to verify the MFA registration. If registration is not verified then it will timeout after 10 minutes and will be required again in future authentication calls.
value:
data:
qrCodeUrl: null
challengeId: 012345678901234567
# --- truncated at 32 KB (127 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tui-group/refs/heads/main/openapi/tui-group-token-api-openapi.yml