Update Email Config
curl --request POST \
--url https://api.velt.dev/v2/workspace/emailconfig/update \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"triggers": {
"comment_annotation.add": true,
"comment.add": true,
"comment_annotation.status_change": true,
"comment_annotation.assign": true,
"comment_annotation.priority_change": true
}
}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/emailconfig/update"
payload = { "data": {
"useEmailService": True,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"triggers": {
"comment_annotation.add": True,
"comment.add": True,
"comment_annotation.status_change": True,
"comment_annotation.assign": True,
"comment_annotation.priority_change": True
}
}
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"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-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
useEmailService: true,
emailServiceConfig: {
type: '<string>',
apiKey: '<string>',
fromEmail: '<string>',
fromCompany: '<string>',
triggers: {
'comment_annotation.add': true,
'comment.add': true,
'comment_annotation.status_change': true,
'comment_annotation.assign': true,
'comment_annotation.priority_change': true
}
}
}
})
};
fetch('https://api.velt.dev/v2/workspace/emailconfig/update', 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/emailconfig/update",
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' => [
'useEmailService' => true,
'emailServiceConfig' => [
'type' => '<string>',
'apiKey' => '<string>',
'fromEmail' => '<string>',
'fromCompany' => '<string>',
'triggers' => [
'comment_annotation.add' => true,
'comment.add' => true,
'comment_annotation.status_change' => true,
'comment_annotation.assign' => true,
'comment_annotation.priority_change' => true
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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/emailconfig/update"
payload := strings.NewReader("{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
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/emailconfig/update")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/emailconfig/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Email configuration updated successfully.",
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "sendgrid",
"apiKey": "SG.xxxxxxxxxx",
"fromEmail": "noreply@example.com",
"fromCompany": "Example Corp"
}
}
}
}
Email Notifications Configuration
Update Email Config
POST
/
v2
/
workspace
/
emailconfig
/
update
Update Email Config
curl --request POST \
--url https://api.velt.dev/v2/workspace/emailconfig/update \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"triggers": {
"comment_annotation.add": true,
"comment.add": true,
"comment_annotation.status_change": true,
"comment_annotation.assign": true,
"comment_annotation.priority_change": true
}
}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/emailconfig/update"
payload = { "data": {
"useEmailService": True,
"emailServiceConfig": {
"type": "<string>",
"apiKey": "<string>",
"fromEmail": "<string>",
"fromCompany": "<string>",
"triggers": {
"comment_annotation.add": True,
"comment.add": True,
"comment_annotation.status_change": True,
"comment_annotation.assign": True,
"comment_annotation.priority_change": True
}
}
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"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-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
useEmailService: true,
emailServiceConfig: {
type: '<string>',
apiKey: '<string>',
fromEmail: '<string>',
fromCompany: '<string>',
triggers: {
'comment_annotation.add': true,
'comment.add': true,
'comment_annotation.status_change': true,
'comment_annotation.assign': true,
'comment_annotation.priority_change': true
}
}
}
})
};
fetch('https://api.velt.dev/v2/workspace/emailconfig/update', 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/emailconfig/update",
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' => [
'useEmailService' => true,
'emailServiceConfig' => [
'type' => '<string>',
'apiKey' => '<string>',
'fromEmail' => '<string>',
'fromCompany' => '<string>',
'triggers' => [
'comment_annotation.add' => true,
'comment.add' => true,
'comment_annotation.status_change' => true,
'comment_annotation.assign' => true,
'comment_annotation.priority_change' => true
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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/emailconfig/update"
payload := strings.NewReader("{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
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/emailconfig/update")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/emailconfig/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"useEmailService\": true,\n \"emailServiceConfig\": {\n \"type\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"fromEmail\": \"<string>\",\n \"fromCompany\": \"<string>\",\n \"triggers\": {\n \"comment_annotation.add\": true,\n \"comment.add\": true,\n \"comment_annotation.status_change\": true,\n \"comment_annotation.assign\": true,\n \"comment_annotation.priority_change\": true\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Email configuration updated successfully.",
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "sendgrid",
"apiKey": "SG.xxxxxxxxxx",
"fromEmail": "noreply@example.com",
"fromCompany": "Example Corp"
}
}
}
}
Use this API to update the email service configuration for a workspace. At least one of
useEmailService or emailServiceConfig must be provided.
This endpoint uses API-key-level auth: pass
x-velt-api-key and x-velt-auth-token as headers. You can obtain these from the Get Auth Tokens endpoint.Defaults on first enable. If you enable the service — either with
useEmailService: true or by sending emailServiceConfig.type: "custom" — and the stored config has no triggers yet (defaults are seeded even if type / SendGrid fields already exist), defaults are seeded automatically: the service is marked as a custom provider (type: "custom"), the standard comment triggers and all huddle triggers are turned on, and useEmailService is set to true. Existing non-trigger fields are preserved, and any emailServiceConfig values you send in the same request are merged on top of these defaults.The response
data echoes the latest post-write state as { useEmailService, emailServiceConfig } — the same shape returned by Get Email Config. Fields not part of your request fall back to the existing stored values.Endpoint
POST https://api.velt.dev/v2/workspace/emailconfig/update
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
boolean
Whether to enable the email service.
object
Email service configuration object.
Show properties
Show properties
string
Email service provider type. Accepted values:
"default" or "sendgrid".string
API key for the email service provider.
string
Sender email address.
string
Sender company name.
object
Event triggers that activate email notifications. Each key is an event type string and the value is a boolean to enable (
true) or disable (false) that trigger. See Webhooks for the full list of event types. Common keys include:Example Request
{
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "sendgrid",
"apiKey": "SG.xxxxxxxxxx",
"fromEmail": "noreply@example.com",
"fromCompany": "Example Corp"
}
}
}
Example Response
Success Response
{
"result": {
"status": "success",
"message": "Email configuration updated successfully.",
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "sendgrid",
"apiKey": "SG.xxxxxxxxxx",
"fromEmail": "noreply@example.com",
"fromCompany": "Example Corp"
}
}
}
}
Failure Response
{
"error": {
"status": "INVALID_ARGUMENT",
"message": "Invalid email service configuration."
}
}
{
"result": {
"status": "success",
"message": "Email configuration updated successfully.",
"data": {
"useEmailService": true,
"emailServiceConfig": {
"type": "sendgrid",
"apiKey": "SG.xxxxxxxxxx",
"fromEmail": "noreply@example.com",
"fromCompany": "Example Corp"
}
}
}
}
Was this page helpful?
⌘I

