Create API key
Create a new MCP API key. The full key value is only returned once at creation time. Store it securely.
curl -X POST "https://api.mythic-analytics.com/api/v1/mcp/api-keys" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"name": "Production Gateway Key",
"scopes": [
"tools:execute",
"tools:read"
],
"expires_at": "2024-12-25T10:00:00Z"
}'
import requests
import json
url = "https://api.mythic-analytics.com/api/v1/mcp/api-keys"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"name": "Production Gateway Key",
"scopes": [
"tools:execute",
"tools:read"
],
"expires_at": "2024-12-25T10:00:00Z"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.mythic-analytics.com/api/v1/mcp/api-keys", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"name": "Production Gateway Key",
"scopes": [
"tools:execute",
"tools:read"
],
"expires_at": "2024-12-25T10:00:00Z"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"name": "Production Gateway Key",
"scopes": [
"tools:execute",
"tools:read"
],
"expires_at": "2024-12-25T10:00:00Z"
}`)
req, err := http.NewRequest("POST", "https://api.mythic-analytics.com/api/v1/mcp/api-keys", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.mythic-analytics.com/api/v1/mcp/api-keys')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"name": "Production Gateway Key",
"scopes": [
"tools:execute",
"tools:read"
],
"expires_at": "2024-12-25T10:00:00Z"
}'
response = http.request(request)
puts response.body
{
"success": true,
"data": "null"
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
POST
/mcp/api-keys
POST
Bearer Token
Bearer Tokenstring
RequiredAdmin API key as bearer token. Format: Bearer YOUR_ADMIN_KEY
Admin API key as bearer token. Format:
Bearer YOUR_ADMIN_KEYAPI Key (query: admin_key)
admin_keystring
RequiredAlternative to the Authorization header for server-to-server scenarios.
Alternative to the Authorization header for server-to-server scenarios.
Content-Typestring
RequiredThe media type of the request body
Options: application/json
namestring
RequiredHuman-readable name for the key.
scopesarray
Permission scopes for the key.
expires_atstring
Optional expiration date. Null means no expiration.
Format: date-time
Request Preview
Response
Response will appear here after sending the request
Authentication
header
Authorizationstring
RequiredBearer token. Admin API key as bearer token. Format: Bearer YOUR_ADMIN_KEY
query
admin_keystring
RequiredAPI Key for authentication. Alternative to the Authorization header for server-to-server scenarios.
Body
application/json
namestring
RequiredHuman-readable name for the key.
scopesarray
Permission scopes for the key.
expires_atstring
Optional expiration date. Null means no expiration.
Responses
successboolean
datastring
successboolean
datastring
errorstring
countinteger
successboolean
datastring
errorstring
countinteger
Was this page helpful?
Last updated Feb 26, 2026
Built with Documentation.AI