Create API Key
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"apiKey": "<string>"
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys"
payload = {
"name": "<string>",
"apiKey": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', apiKey: '<string>'})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'apiKey' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAPI Keys
Create API Key
Create a new API key
POST
/
app
/
v1
/
organizations
/
{organizationId}
/
projects
/
{projectId}
/
api-keys
Create API Key
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"apiKey": "<string>"
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys"
payload = {
"name": "<string>",
"apiKey": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', apiKey: '<string>'})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'apiKey' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"apiKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCreates a new API key for a project. The key value is only returned once in the creation response and cannot be retrieved later.
Path Parameters
Organization ID
Project ID
Request Body
Descriptive name for the API key (e.g., “iOS Production App”)
Custom key value (optional, system-generated if not provided)
Example Request
{
"name": "Android Production App"
}
Response
Returns the created API Key object including the key value.{
"id": "afd8012b-d81e-41c6-92cd-eed0c6cb3676",
"name": "Android Production App",
"key": "7zvFJw9L0qEoYdKx2mBt1sLpZj3nX7gW",
"status": "active",
"createdAt": "2024-03-20T10:00:00Z",
"updatedAt": "2024-03-20T10:00:00Z"
}
Store the key value securely. This is the only time it will be returned. If lost, you must create a new API key.
Error Responses
Name Already Exists
{
"error": {
"code": "APIKEY_NAME_ALREADY_EXISTS",
"message": "API key with name \"Android Production App\" already exists"
}
}
Code Examples
curl -X POST "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/api-keys" \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{
"name": "Android Production App"
}'
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/api-keys',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_JWT',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Android Production App'
})
}
);
const apiKey = await response.json();
// Store this key securely - it won't be shown again
console.log(`Created API key: ${apiKey.key}`);
struct CreateAPIKeyRequest: Encodable {
let name: String
}
var request = URLRequest(url: URL(string: "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/api-keys")!)
request.httpMethod = "POST"
request.setValue("Bearer YOUR_JWT", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body = CreateAPIKeyRequest(name: "iOS Production App")
request.httpBody = try JSONEncoder().encode(body)
let (data, _) = try await URLSession.shared.data(for: request)
let apiKey = try JSONDecoder().decode(APIKey.self, from: data)
// Store apiKey.key securely
val response = client.post("https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/api-keys") {
header("Authorization", "Bearer YOUR_JWT")
contentType(ContentType.Application.Json)
setBody(mapOf("name" to "Android Production App"))
}
val apiKey = response.body<APIKey>()
// Store apiKey.key securely - it won't be shown again
println("Created API key: ${apiKey.key}")
⌘I