Skip to main content
POST
/
workspace
/
{workspace_id}
/
domains
/
{id}
/
verify-dns
@firma-dev/sdk
import { FirmaClient } from "@firma-dev/sdk";

const firma = new FirmaClient({ apiKey: "YOUR_API_KEY" });

const response = await firma.emailDomains.verifyWorkspaceDomainDns({
    workspace_id: "workspace_id",
    id: "id"
});
console.log(response);
curl --request POST \
--url https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns \
--header 'Authorization: <api-key>'
import requests

url = "https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns"

headers = {"Authorization": "<api-key>"}

response = requests.post(url, headers=headers)

print(response.text)
const options = {method: 'POST', headers: {Authorization: '<api-key>'}};

fetch('https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns', 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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns"

req, _ := http.NewRequest("POST", url, nil)

req.Header.Add("Authorization", "<api-key>")

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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns")
.header("Authorization", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/domains/{id}/verify-dns")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "verified": true,
  "message": "Domain is fully verified and ready to send emails",
  "domain": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "domain": "sales.acme.com",
    "verification_status": 2,
    "domain_status": 1,
    "is_primary": true
  },
  "dns_records": [
    {
      "type": "TXT",
      "name": "@",
      "value": "v=spf1 include:amazonses.com ~all",
      "status": "verified"
    },
    {
      "type": "CNAME",
      "name": "resend._domainkey",
      "value": "resend._domainkey.amazonses.com",
      "status": "verified"
    },
    {
      "type": "TXT",
      "name": "_dmarc",
      "value": "v=DMARC1; p=none;",
      "status": "verified"
    }
  ]
}

Authorizations

Authorization
string
header
required

API key for authentication. Use your API key directly without any prefix (e.g., 'your-api-key'). Bearer prefix is optional but not required.

Path Parameters

workspace_id
string<uuid>
required

Workspace ID

id
string<uuid>
required

Domain ID

Response

DNS verification result

DNS verification result

verified
boolean
required

Whether all DNS records are verified

message
string
required
domain
object
required

Email domain configuration for sending signing request emails

dns_records
object[]

Status of each DNS record