--- title: OpenAPI Introduction description: FastGPT OpenAPI Introduction --- ## Automated API Documentation The automated API documentation covers all endpoints in the current version, regardless of whether they can be called via API Key. All future endpoints will be auto-generated, with documentation continuously improved. - [China Mainland API Documentation](https://cloud.fastgpt.cn/openapi) - [International API Documentation](https://cloud.fastgpt.io/openapi) ## Usage Guide FastGPT OpenAPI lets you authenticate with an API Key to access FastGPT services and resources -- such as calling app chat endpoints, uploading knowledge base data, search testing, and more. For compatibility and security reasons, not all endpoints support API Key access. ## How to Find Your BaseURL **Note: BaseURL is not an endpoint address -- it's the root URL for all endpoints. Requesting the BaseURL directly won't work.** ![](/imgs/fastgpt-api-baseurl.png) ## How to Get an API Key FastGPT has **2 types** of API Keys: a global key (cannot directly call app chat) and an app-specific key that includes an AppId (can directly call app chat). We recommend using `app-specific keys` only for app or chat-related endpoints, and `global keys` for everything else. | Global Key | App-Specific Key | | --------------------- | --------------------- | | ![](/imgs/fastgpt-api2.jpg) | ![](/imgs/fastgpt-api1.jpg) | ## Basic Configuration In OpenAPI, all endpoints authenticate via Header.Authorization. ``` baseUrl: "http://localhost:3000/api" headers: { Authorization: "Bearer {{apikey}}" } ``` **Example: Start an App Chat** ```sh curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxxxxx' \ --header 'Content-Type: application/json' \ --data-raw '{ "chatId": "111", "stream": false, "detail": false, "messages": [ { "content": "Who is the director", "role": "user" } ] }' ``` ## Custom User ID Since `v4.8.13`, you can pass a custom user ID that will be saved in the chat history. ```sh curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxxxxx' \ --header 'Content-Type: application/json' \ --data-raw '{ "chatId": "111", "stream": false, "detail": false, "messages": [ { "content": "Who is the director", "role": "user" } ], "customUid": "xxxxxx" }' ``` In the chat history, this record's user will be displayed as `xxxxxx`.