Create API Key
curl --request POST \
--url https://api.velt.dev/v2/workspace/apikey/create \
--header 'Content-Type: application/json' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--header 'x-velt-workspace-id: <x-velt-workspace-id>' \
--data '
{
"data": {
"ownerEmail": "<string>",
"type": "<string>",
"createAuthToken": true,
"apiKeyName": "<string>",
"planInfo": {
"type": "<string>"
},
"customPlanInfo": true,
"customPlanInfoData": {},
"allowedDomains": [
"<string>"
],
"addLocalHostToAllowedDomains": true,
"useEmailService": true,
"useWebhookService": true,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"commentTemplateId": "<string>",
"tagTemplateId": "<string>"
},
"webhookServiceConfig": {
"authToken": "<string>",
"rawNotificationUrl": "<string>",
"processedNotificationUrl": "<string>"
}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/apikey/create"
payload = { "data": {
"ownerEmail": "<string>",
"type": "<string>",
"createAuthToken": True,
"apiKeyName": "<string>",
"planInfo": { "type": "<string>" },
"customPlanInfo": True,
"customPlanInfoData": {},
"allowedDomains": ["<string>"],
"addLocalHostToAllowedDomains": True,
"useEmailService": True,
"useWebhookService": True,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"commentTemplateId": "<string>",
"tagTemplateId": "<string>"
},
"webhookServiceConfig": {
"authToken": "<string>",
"rawNotificationUrl": "<string>",
"processedNotificationUrl": "<string>"
}
} }
headers = {
"x-velt-workspace-id": "<x-velt-workspace-id>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-workspace-id': '<x-velt-workspace-id>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
ownerEmail: '<string>',
type: '<string>',
createAuthToken: true,
apiKeyName: '<string>',
planInfo: {type: '<string>'},
customPlanInfo: true,
customPlanInfoData: {},
allowedDomains: ['<string>'],
addLocalHostToAllowedDomains: true,
useEmailService: true,
useWebhookService: true,
emailServiceConfig: {
type: '<string>',
apiKey: '<string>',
fromEmail: '<string>',
fromCompany: '<string>',
commentTemplateId: '<string>',
tagTemplateId: '<string>'
},
webhookServiceConfig: {
authToken: '<string>',
rawNotificationUrl: '<string>',
processedNotificationUrl: '<string>'
}
}
})
};
fetch('https://api.velt.dev/v2/workspace/apikey/create', 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.velt.dev/v2/workspace/apikey/create",
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([
'data' => [
'ownerEmail' => '<string>',
'type' => '<string>',
'createAuthToken' => true,
'apiKeyName' => '<string>',
'planInfo' => [
'type' => '<string>'
],
'customPlanInfo' => true,
'customPlanInfoData' => [
],
'allowedDomains' => [
'<string>'
],
'addLocalHostToAllowedDomains' => true,
'useEmailService' => true,
'useWebhookService' => true,
'emailServiceConfig' => [
'type' => '<string>',
'apiKey' => '<string>',
'fromEmail' => '<string>',
'fromCompany' => '<string>',
'commentTemplateId' => '<string>',
'tagTemplateId' => '<string>'
],
'webhookServiceConfig' => [
'authToken' => '<string>',
'rawNotificationUrl' => '<string>',
'processedNotificationUrl' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-auth-token: <x-velt-auth-token>",
"x-velt-workspace-id: <x-velt-workspace-id>"
],
]);
$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.velt.dev/v2/workspace/apikey/create"
payload := strings.NewReader("{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-workspace-id", "<x-velt-workspace-id>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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.velt.dev/v2/workspace/apikey/create")
.header("x-velt-workspace-id", "<x-velt-workspace-id>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/apikey/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-workspace-id"] = '<x-velt-workspace-id>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "API key created successfully.",
"data": {
"apiKey": "your_new_api_key"
}
}
}
API Key Management
Create API Key
POST
/
v2
/
workspace
/
apikey
/
create
Create API Key
curl --request POST \
--url https://api.velt.dev/v2/workspace/apikey/create \
--header 'Content-Type: application/json' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--header 'x-velt-workspace-id: <x-velt-workspace-id>' \
--data '
{
"data": {
"ownerEmail": "<string>",
"type": "<string>",
"createAuthToken": true,
"apiKeyName": "<string>",
"planInfo": {
"type": "<string>"
},
"customPlanInfo": true,
"customPlanInfoData": {},
"allowedDomains": [
"<string>"
],
"addLocalHostToAllowedDomains": true,
"useEmailService": true,
"useWebhookService": true,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"commentTemplateId": "<string>",
"tagTemplateId": "<string>"
},
"webhookServiceConfig": {
"authToken": "<string>",
"rawNotificationUrl": "<string>",
"processedNotificationUrl": "<string>"
}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/apikey/create"
payload = { "data": {
"ownerEmail": "<string>",
"type": "<string>",
"createAuthToken": True,
"apiKeyName": "<string>",
"planInfo": { "type": "<string>" },
"customPlanInfo": True,
"customPlanInfoData": {},
"allowedDomains": ["<string>"],
"addLocalHostToAllowedDomains": True,
"useEmailService": True,
"useWebhookService": True,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"commentTemplateId": "<string>",
"tagTemplateId": "<string>"
},
"webhookServiceConfig": {
"authToken": "<string>",
"rawNotificationUrl": "<string>",
"processedNotificationUrl": "<string>"
}
} }
headers = {
"x-velt-workspace-id": "<x-velt-workspace-id>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-workspace-id': '<x-velt-workspace-id>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
ownerEmail: '<string>',
type: '<string>',
createAuthToken: true,
apiKeyName: '<string>',
planInfo: {type: '<string>'},
customPlanInfo: true,
customPlanInfoData: {},
allowedDomains: ['<string>'],
addLocalHostToAllowedDomains: true,
useEmailService: true,
useWebhookService: true,
emailServiceConfig: {
type: '<string>',
apiKey: '<string>',
fromEmail: '<string>',
fromCompany: '<string>',
commentTemplateId: '<string>',
tagTemplateId: '<string>'
},
webhookServiceConfig: {
authToken: '<string>',
rawNotificationUrl: '<string>',
processedNotificationUrl: '<string>'
}
}
})
};
fetch('https://api.velt.dev/v2/workspace/apikey/create', 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.velt.dev/v2/workspace/apikey/create",
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([
'data' => [
'ownerEmail' => '<string>',
'type' => '<string>',
'createAuthToken' => true,
'apiKeyName' => '<string>',
'planInfo' => [
'type' => '<string>'
],
'customPlanInfo' => true,
'customPlanInfoData' => [
],
'allowedDomains' => [
'<string>'
],
'addLocalHostToAllowedDomains' => true,
'useEmailService' => true,
'useWebhookService' => true,
'emailServiceConfig' => [
'type' => '<string>',
'apiKey' => '<string>',
'fromEmail' => '<string>',
'fromCompany' => '<string>',
'commentTemplateId' => '<string>',
'tagTemplateId' => '<string>'
],
'webhookServiceConfig' => [
'authToken' => '<string>',
'rawNotificationUrl' => '<string>',
'processedNotificationUrl' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-auth-token: <x-velt-auth-token>",
"x-velt-workspace-id: <x-velt-workspace-id>"
],
]);
$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.velt.dev/v2/workspace/apikey/create"
payload := strings.NewReader("{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-workspace-id", "<x-velt-workspace-id>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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.velt.dev/v2/workspace/apikey/create")
.header("x-velt-workspace-id", "<x-velt-workspace-id>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/apikey/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-workspace-id"] = '<x-velt-workspace-id>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"ownerEmail\": \"<string>\",\n \"type\": \"<string>\",\n \"createAuthToken\": true,\n \"apiKeyName\": \"<string>\",\n \"planInfo\": {\n \"type\": \"<string>\"\n },\n \"customPlanInfo\": true,\n \"customPlanInfoData\": {},\n \"allowedDomains\": [\n \"<string>\"\n ],\n \"addLocalHostToAllowedDomains\": true,\n \"useEmailService\": true,\n \"useWebhookService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"commentTemplateId\": \"<string>\",\n \"tagTemplateId\": \"<string>\"\n },\n \"webhookServiceConfig\": {\n \"authToken\": \"<string>\",\n \"rawNotificationUrl\": \"<string>\",\n \"processedNotificationUrl\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "API key created successfully.",
"data": {
"apiKey": "your_new_api_key"
}
}
}
Use this API to create a new API key for a workspace.
This endpoint uses workspace-level auth: pass
x-velt-workspace-id and x-velt-auth-token (from the Create Workspace response) as headers.Endpoint
POST https://api.velt.dev/v2/workspace/apikey/create
Headers
string
required
Your Workspace ID.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
required
Email address of the API key owner.
string
required
API key type. Accepted values:
"testing" or "production". Production keys require planInfo or customPlanInfo.boolean
Whether to create an auth token along with the API key. Recommended:
true.string
Display name for the API key.
object
Plan information object associated with this API key. Required for
"production" type unless customPlanInfo is true.Show properties
Show properties
string
Plan type identifier (e.g.,
"sdk test", "production").boolean
Whether to use custom plan info instead of standard
planInfo.object
Freeform custom plan info data payload. Required when
customPlanInfo is true. You can pass any key-value pairs needed for your custom plan configuration.string[]
List of domains allowed to use this API key.
boolean
Whether to automatically add localhost to allowed domains.
boolean
Whether to enable the email service for this API key.
boolean
Whether to enable the webhook service for this API key.
object
Configuration object for the email service. See Update Email Config for the full schema.
Show properties
Show properties
string
Email service provider type. Accepted values:
"default" or "sendgrid".string
API key for the email service provider (e.g., your SendGrid API key).
string
Sender email address.
string
Sender company name.
string
SendGrid template ID for comment notification emails.
string
SendGrid template ID for tag/mention notification emails.
object
Configuration object for the webhook service. See Update Webhook Config for the full schema.
Example Request
{
"data": {
"ownerEmail": "owner@example.com",
"type": "testing",
"createAuthToken": true
}
}
Example Response
Success Response
{
"result": {
"status": "success",
"message": "API key created successfully.",
"data": {
"apiKey": "your_new_api_key"
}
}
}
Failure Response
{
"error": {
"status": "INVALID_ARGUMENT",
"message": "ownerEmail is required."
}
}
{
"result": {
"status": "success",
"message": "API key created successfully.",
"data": {
"apiKey": "your_new_api_key"
}
}
}
Was this page helpful?
⌘I

