Sending domains
Create domain
Registers a new sending domain for the project. Signal generates the required DNS records and a stable, optional DMARC aggregate-reporting address. Add the records to your DNS provider before verifying the domain.
Requirements
- Permission:
domains:write. - Project access: the path project must match the API key’s project.
- Region: a domain outside the project’s home region requires the multi-region entitlement.
- HTTP rate limit: 30 requests per 300 seconds per API key.
POST
/
v1
/
projects
/
{projectId}
/
domains
TypeScript
import { createApolloSignalApiClient } from "@apollo-deploy/signal-sdk";
const signal = createApolloSignalApiClient({ apiKey: "ap_signal_..." });
const result = await signal.domains.createDomain(/* params */);
console.log(result);from apollo_signal import SignalClient
signal = SignalClient(api_key="ap_signal_...")
result = signal.domains.createDomain(# params)
print(result)import signal "github.com/apollo-deploy/signal-sdk-go"
client := signal.NewClient("ap_signal_...")
result, err := client.Domains.CreateDomain(context.Background() /* params */)
if err != nil {
log.Fatal(err)
}
fmt.Println(result)import com.apollodeploy.signal.SignalClient;
SignalClient signal = new SignalClient("ap_signal_...");
var result = signal.domains().createDomain(/* params */);
System.out.println(result);import com.apollodeploy.signal.SignalClient
val signal = SignalClient("ap_signal_...")
val result = signal.domains.createDomain(/* params */)
println(result)require "apollo_signal"
signal = ApolloSignal::Client.new(api_key: "ap_signal_...")
result = signal.domains.createDomain(# params)
puts resultuse ApolloSignal\SignalClient;
$signal = new SignalClient("ap_signal_...");
$result = $signal->domains->createDomain(/* params */);
var_dump($result);use apollo_signal::SignalClient;
let signal = SignalClient::new("ap_signal_...");
let result = signal.domains.createDomain(/* params */).await?;
println!("{:?}", result);using ApolloSignal;
var signal = new SignalClient("ap_signal_...");
var result = await signal.Domains.CreateDomainAsync(/* params */);
Console.WriteLine(result);curl --request POST \
--url https://api.signal.apollodeploy.com/v1/projects/{projectId}/domains \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domain": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: '<string>'})
};
fetch('https://api.signal.apollodeploy.com/v1/projects/{projectId}/domains', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"bimiStatus": "<string>",
"createdAt": "<string>",
"dkimStatus": "<string>",
"dmarcStatus": "<string>",
"domain": "<string>",
"id": "<string>",
"mailFromDomain": "<string>",
"mailFromStatus": "<string>",
"projectId": "<string>",
"region": "<string>",
"spfStatus": "<string>",
"status": "<string>",
"updatedAt": "<string>",
"verificationRecords": {
"dkim": [
{
"name": "<string>",
"type": "<string>",
"value": "<string>",
"status": "<string>"
}
],
"mailFromMx": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"mailFromSpf": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"bimi": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"dmarcRecommended": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"trackingCname": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
}
},
"bimiLogoUrl": "<string>",
"verifiedAt": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}Authorizations
Project-bound Apollo Signal API key. Keys begin with ap_signal_ and must carry the permission shown on the operation.
Path Parameters
The project to register the domain in.
Body
application/json
Domain name and optional configuration.
Response
Domain registered. Contains the DNS records that must be published.
Show child attributes
Show child attributes
Was this page helpful?
⌘I
TypeScript
import { createApolloSignalApiClient } from "@apollo-deploy/signal-sdk";
const signal = createApolloSignalApiClient({ apiKey: "ap_signal_..." });
const result = await signal.domains.createDomain(/* params */);
console.log(result);from apollo_signal import SignalClient
signal = SignalClient(api_key="ap_signal_...")
result = signal.domains.createDomain(# params)
print(result)import signal "github.com/apollo-deploy/signal-sdk-go"
client := signal.NewClient("ap_signal_...")
result, err := client.Domains.CreateDomain(context.Background() /* params */)
if err != nil {
log.Fatal(err)
}
fmt.Println(result)import com.apollodeploy.signal.SignalClient;
SignalClient signal = new SignalClient("ap_signal_...");
var result = signal.domains().createDomain(/* params */);
System.out.println(result);import com.apollodeploy.signal.SignalClient
val signal = SignalClient("ap_signal_...")
val result = signal.domains.createDomain(/* params */)
println(result)require "apollo_signal"
signal = ApolloSignal::Client.new(api_key: "ap_signal_...")
result = signal.domains.createDomain(# params)
puts resultuse ApolloSignal\SignalClient;
$signal = new SignalClient("ap_signal_...");
$result = $signal->domains->createDomain(/* params */);
var_dump($result);use apollo_signal::SignalClient;
let signal = SignalClient::new("ap_signal_...");
let result = signal.domains.createDomain(/* params */).await?;
println!("{:?}", result);using ApolloSignal;
var signal = new SignalClient("ap_signal_...");
var result = await signal.Domains.CreateDomainAsync(/* params */);
Console.WriteLine(result);curl --request POST \
--url https://api.signal.apollodeploy.com/v1/projects/{projectId}/domains \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domain": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: '<string>'})
};
fetch('https://api.signal.apollodeploy.com/v1/projects/{projectId}/domains', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"bimiStatus": "<string>",
"createdAt": "<string>",
"dkimStatus": "<string>",
"dmarcStatus": "<string>",
"domain": "<string>",
"id": "<string>",
"mailFromDomain": "<string>",
"mailFromStatus": "<string>",
"projectId": "<string>",
"region": "<string>",
"spfStatus": "<string>",
"status": "<string>",
"updatedAt": "<string>",
"verificationRecords": {
"dkim": [
{
"name": "<string>",
"type": "<string>",
"value": "<string>",
"status": "<string>"
}
],
"mailFromMx": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"mailFromSpf": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"bimi": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"dmarcRecommended": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
},
"trackingCname": {
"name": "<string>",
"type": "<string>",
"value": "<string>",
"optional": true,
"priority": 123,
"status": "<string>"
}
},
"bimiLogoUrl": "<string>",
"verifiedAt": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"errors": [
{
"detail": "<string>",
"pointer": "<string>"
}
],
"instance": "<string>",
"requestId": "<string>"
}