Saasco logoSaasco logo
Saasco logoSaasco logo

Introduction

OverviewGetting startedWhat is Saasco?

SDK

Quick startTrackingIdentifyConfigurationWidgetsProperties

MCP

Quick startHow it worksAuthorizationTool reference

REST API

Quick start
getList DomainsgetGet DomainpostCreate DomainpostUpdate DomaindelDelete DomainpostActivate Email SendingpostActivate Email ReceivingdelDisable Email SendingdelDisable Email ReceivingpostEnable ShortlinkdelDisable ShortlinkpostEnable Link TrackinggetGet Email Receiving ConfiggetGet Sender ReputationgetGet Sender Reputation By Domain NamegetGet Domain Warmup StatuspostVerify Email DNSpostVerify Email Receiving DNSpostVerify Shortlink
Add DNS records
ProjectsDomains

Create Domain

Registers a hostname on the project. Names are unique across Saasco. Reusing one that belongs to another project returns 400. Creating one does not enable sending, receiving, or shortlinks — those are separate activate calls.

POST
/projects/{projectId}/domains

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project that will own the domain.

Request Body

application/json

namerequiredstring

Hostname to register, without a protocol. Must be unique across Saasco.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://www.saasco.com/api/v2/projects/string/domains" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{
  "id": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "emailStatus": "INACTIVE",
  "emailProvider": "string",
  "emailProviderDomainId": "string",
  "emailReceivingStatus": "INACTIVE",
  "emailReceivingProviderId": "string",
  "trackingSubdomain": "string",
  "trackingVerificationStatus": "PENDING",
  "shortlinkEnabled": true,
  "vercelConfigured": true,
  "vercelVerificationStatus": "PENDING",
  "vercelVerificationError": "string",
  "vercelVerificationDNS": [
    {
      "domain": "string",
      "reason": "string",
      "type": "string",
      "value": "string"
    }
  ],
  "emailVerificationRequestedAt": "string",
  "receivingVerificationRequestedAt": "string",
  "shortlinkVerificationRequestedAt": "string",
  "senderReputationComputedAt": "string",
  "warmupStatus": "PENDING",
  "warmupStartedAt": "string",
  "warmupWindowStartedAt": "string",
  "projectId": "string",
  "name": "string",
  "senderReputation": 50,
  "warmupDay": 0,
  "warmupSentCount": 0
}
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}

Get Domain

Fetches a domain plus its email DNS config and whether verification jobs are still running. Once a check has been asked for and that capability is not live yet, this also writes the status the provider reports now — sending and tracking from Resend, inbound from Resend, shortlinks from Vercel — so the domain list does not stay Waiting on DNS after the records have verified. Returns 404 if no domain matches.

Update Domain

Updates client-writable domain fields. Only the keys present in changes are written. Reputation, warmup, and the tracking subdomain are stripped even if sent — those are server-managed. Prefer the activate, disable, and verify endpoints for capability changes.