# API Basics
The versioning of each API is independent of the document version.
# Requirements
All APIs require an API Key in the header when making a call. If you haven't issued an API Key, you can issue one in [Generate API key](dashboard-generate-api-key).
| Field | Type | Description |
| :-------- | :----- | :---------- |
| x-api-key | String | API Key |
# Response Structure
All API responses follow the structure of the response object below.
|
Field
|
Type
|
Description
|
|
detail
|
String
|
Message value according to the API call result.
|
|
result
|
Object
|
Result value according to the API call.\
(Provided in case of a successful API call)
|
# Common Error Responses
The following are common error responses that can occur when making API calls.
1. **401 Unauthorized**
* API Key is missing or invalid
```json
{
"detail": "Unauthorized"
}
```
2. **403 Plan is expired**
* Plan usage period has expired
```json
{
"detail": "Plan is expired"
}
```
3. **403 Rate limit exceeded**
* API call count has exceeded the defined Rate limit
```json
{
"detail": "Rate limit exceeded"
}
```
4. **403 Quota exceeded**
* API call count has exceeded the defined Quota
```json JSON
{
"detail": "Quota exceeded"
}
```
# Versioning
By default, the versions for APIs and Callbacks are managed separately. For example, GET v1/A and GETv2/B APIs can have different versions.
The versioning policy for APIs and Callbacks is as follows:
### No version upgrade
* Adding new columns to the response object
### Version upgrade
* Changing the column names in the response object
* Changing the values of specific columns in the response object (data type, ENUM values, etc.)
* Changing the structure of the response object
* Adding new features that are not supported in previous versions