DSV

DSV Access Token API

OAuth 2.0 token endpoint for the DSV Generic APIs. Exchanges myDSV username/password (sent as client_id/client_secret with grant_type=client_credentials) plus a DSV-Subscription-Key for a 10-minute bearer access token and a 30-day refresh token. Mandatory for every Generic and Warehousing API since the 31 January 2026 migration deadline.

Work with this as data

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/dsv-access-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 Specification

dsv-access-token-demo-v1-openapi.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "Access Token (DEMO)",
    "description": "This API is used to generate a DSV OAuth 2.0 access token for the Demo environment.\n\nThe access token is required to authenticate and authorize requests to DSV APIs.\n\nTo obtain the token, send a POST request with the content type application/x-www-form-urlencoded.\n\nThe request must include the grant_type parameter, which defines the authentication flow:\n\n- client_credentials \u2013 Generates an access token using the provided client credentials\n- refresh_token \u2013 Generates a new access token using a previously issued refresh token\n\nThe client credentials must be passed using:\n- client_id : 'abc@company.com' (MyDSV Username) \n- client_secret : Password (MyDSV Password) \n - API Key : cxxxxxxx4f4ad3afe8312317XXXXf(DSV-Subscription-Key) \n\nFor integrations consuming WMS APIs, the scope parameter must be set to CL. \n\nFor WMS APIs, the client credentials must be passed using:\n- client_id : 'abc@company.com' (CL User ID) \n- client_secret : Password (CL Password) \n- Scope : CL (Scope always CL) \n - API Key : cxxxxxxx4f4ad3afe8312317XXXXf (DSV-Subscription-Key) \n\nPlease refer to the API specification and Postman collection for request format, required parameters, and sample usage.",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.dsv.com/my-demo/oauth/v1"
    }
  ],
  "paths": {
    "/token": {
      "post": {
        "tags": [
          "Token"
        ],
        "summary": "Fetch DSV Access Token",
        "description": "Fetch myDSV Access Token (DEMO)",
        "operationId": "get-token",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "properties": {
                  "grant_type": {
                    "type": "string",
                    "description": "Possible values \n client_credentials - for issuing the token, to be used along wiht client_id and client_secret, \n refresh_token - for refreshing the token, to be used along with refresh_token"
                  },
                  "client_id": {
                    "type": "string",
                    "description": "Your username (i.e. your myDSV login for Generic APIs)"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "Your password (i.e. your myDSV password for Generic APIs)"
                  },
                  "scope": {
                    "type": "string",
                    "description": "The scopes or permissions associated with the access token. Possible values \n CL - aplicable only for Warehousing APIs."
                  },
                  "refresh_token": {
                    "type": "string",
                    "description": "Refresh bearer token"
                  }
                }
              },
              "example": {
                "grant_type": "client_credentials",
                "client_id": "my-client-id-123",
                "client_secret": "my-password-xyz",
                "scope": "CL"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                },
                "example": {
                  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImR1bW15LWtleS1pZCJ9.eyJleHAiOjE5MjQ5OTIwMDAsImlhdCI6MTkyNDk4ODQwMCwianRpIjoiZHVtbXktanRpLTEyMzQ1IiwiaXNzIjoiaHR0cHM6Ly9xYS5zc28uZHN2LmNvbS9hdXRoL3JlYWxtcy9EU1YiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiZHVtbXktc3ViLWlkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZHN2LXFhLXB1YmxpYy1hcGkiLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwibmFtZSI6IkR1bW15IFNlcnZpY2UgQWNjb3VudCIsInByZWZlcnJlZF91c2VybmFtZSI6ImR1bW15LnVzZXJAZXhhbXBsZS5jb20iLCJlbWFpbCI6ImR1bW15LnVzZXJAZXhhbXBsZS5jb20ifQ",
                  "expires_in": 600,
                  "refresh_expires_in": 2592000,
                  "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhYjkzN2FiZC03OTY0LTRmOWItODdmZS05ZWI1YjU1N2Q5MTAifQ.eyJleHAiOjE3NzY5MzY5NDMsImlhdCI6MTc3NDM0NDk0MywianRpIjoiZmY2ZjA5MDctNDg0OC00MGRmLWE2NTgtNTgwYzc1NTExYTRhIiwiaXNzIjoiaHR0cHM6Ly9xYS5zc28uZHN2LmNvbS9hdXRoL3JlYWxtcy9EU1YiLCJhdWQiOiJodHRwczovL3FhLnNzby5kc3YuY29tL2F1dGgvcmVhbG1zL0RTViIsInN1YiI6IjhkZjUzYTRjLWUyMjYtNDY3Zi04YjFiLWFmMjI3ODA2ZDIzNiIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJkc3YtcXVhLXB1YmxpYy1hcGkiLCJzaWQiOiI3NTkwMzg3My0xYWEwLTRjMGItYTAyNi0xZDU1N2NlODEwMmIiLCJzY29wZSI6Im9wZW5pZCB1c2VyLWF0dHJpYnV0ZXMgd2ViLW9yaWdpbnMgYWNyIGJhc2ljIGVtYWlsIG9yZ2FuaXphdGlvbiByb2xlcyBwcm9maWxlIn0.lYkFwOnzrDhxcmESN_UoN1kRyfddmt4g3u8n5-1oDOlHRzkAkmrkn6ipFTP3m0KK25cR2mkZN-QOa_qJWpN_CA",
                  "token_type": "Bearer",
                  "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUC03UklfZTF3RjlyaklhdmdlaF84R0xsTm5weWRlVFhiQ0djYk04dGdrIn0.eyJleHAiOjE3NzQzNDU1NDMsImlhdCI6MTc3NDM0NDk0MywianRpIjoiYTVhOGM3NGMtODkyZS00MjM0LWEwMmUtM2Q5OThiYTQwZTM4IiwiaXNzIjoiaHR0cHM6Ly9xYS5zc28uZHN2LmNvbS9hdXRoL3JlYWxtcy9EU1YiLCJhdWQiOiJkc3YtcXVhLXB1YmxpYy1hcGkiLCJzdWIiOiI4ZGY1M2E0Yy1lMjI2LTQ2N2YtOGIxYi1hZjIyNzgwNmQyMzYiLCJ0eXAiOiJJRCIsImF6cCI6ImRzdi1xdWEtcHVibGljLWFwaSIsInNpZCI6Ijc1OTAzODczLTFhYTAtNGMwYi1hMDI2LTFkNTU3Y2U4MTAyYiIsImF0X2hhc2giOiI5My1HVElkNGc3ZU9wR1RMYlBvZkJ3IiwiYWNyIjoiMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6IlNlcnZpY2UgQWNjb3VudCIsInByZWZlcnJlZF91c2VybmFtZSI6ImFwaTIuZHN2QGltcGFjdC5kayIsImZhbWlseV9uYW1lIjoiU2VydmljZSBBY2NvdW50IiwiZW1haWwiOiJhcGkyLmRzdkBpbXBhY3QuZGsifQ.X68Ab3aVjK1b-m1CCUK5wdMfUq6AjN9e63A0OsMkxi2A-rTqi7xr4EH_3gP1fVjEkd4ptaY54LkQZzz6zNr-csQYrA7uCz-fLBoV19VIM3QSpfWQYAiCJLsAfRfXWF3sOWTwKjTuXlzMKu7ZHNYekmAPDFMSsPQsBOEbQwLdIuCHy4FADmMjXjZEckt_ho3Aq3biz8-WKbAixBUshfpFXsVBrx2sMTRnQE-u599y1rJMRJJhw6OxxY8JmNC6eGslkc4gjcF6_Qlr1sjI7TJLlCnrejQyA8pHQyhVM8wNYH9bbq3QSd2a2y_n0ZBeKXE3BHJ8NHDBB4sDqmbYo5W17ylopn_Ldje6-F2isCnneqai9QFmPNEz9XA2mWGP41OgWFZzKvQsVbKRkEL1f-sjIkr2p6J0Mq0DL0zojILCyAAjJJjfI-w4blDvyjjgJfMJzQyNEb9QZquHgTgEAxa1ONSlZ9zRzhXaq1b_kjAjpn0IjYZ2xTiclbPEExQcbrGODjTp0g7l3dDlYSMH-5uLxLmiaRzLmaZkwbc_zg4lXxeSxsg24FQev6GCPs4NHHo5dwEili0IaVPK1Ms5WUyTuk20Omr_4vI708k1n3J1OXi-bNEjkqeInTAVVfdIfZrJvrZg2aZVbriRvO-DhyZG_zSpteNyhVz8PxgDyBnBqjk",
                  "not-before-policy": 0,
                  "session_state": "75903873-1aa0-4c0b-a026-1d557ce8102b",
                  "scope": "openid user-attributes email organization profile"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "TokenResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "description": "The OAuth 2.0 access token string that must be used in the Authorization header for API requests.",
            "nullable": true,
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
          },
          "expiresIn": {
            "type": "integer",
            "description": "Time in seconds before the access token expires.",
            "format": "int32",
            "example": 3600
          },
          "refreshExpiresIn": {
            "type": "integer",
            "description": "Time in seconds before the refresh token expires.",
            "format": "int32",
            "example": 7200
          },
          "refreshToken": {
            "type": "string",
            "description": "The token used to refresh the access token once it expires.",
            "nullable": true,
            "example": "d1f3a9e4-1234-4b56-b89c-9876543210ab"
          },
          "tokenType": {
            "type": "string",
            "description": "The type of token issued, usually 'Bearer'.",
            "nullable": true,
            "example": "Bearer"
          },
          "scope": {
            "type": "string",
            "description": "Granted scopes associated with the token.",
            "nullable": true,
            "example": "openid user-attributes email organization profile"
          }
        }
      }
    },
    "securitySchemes": {
      "apiKeyHeader": {
        "type": "apiKey",
        "name": "DSV-Subscription-Key",
        "in": "header"
      },
      "apiKeyQuery": {
        "type": "apiKey",
        "name": "DSV-Subscription-Key",
        "in": "query"
      }
    }
  },
  "security": [
    {
      "apiKeyHeader": []
    },
    {
      "apiKeyQuery": []
    }
  ]
}