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

List Domains

Lists the project's domains. Filter by sending status, shortlink state, or readyToSend (ACTIVE and tracking verified — use that when picking a from-domain).

GET
/projects/{projectId}/domains

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project to list domains from.

Query Parameters

emailStatusstring

Restrict the result to this sending status: INACTIVE, PENDING, ACTIVE, or ERROR.

Value in: "INACTIVE" | "PENDING" | "ACTIVE" | "ERROR"
readyToSendboolean

When true, only domains that are ACTIVE and have verified link tracking. Use this when picking a from-domain to send from. Leave it off to include domains still waiting on DNS.

shortlinkEnabledboolean

Restrict the result to domains with shortlinks on or off.

vercelConfiguredboolean

Restrict the result to domains that have been added to Vercel for shortlinks.

vercelVerificationStatusstring

Restrict the result to this shortlink DNS status: PENDING, VALID, or INVALID.

Value in: "PENDING" | "VALID" | "INVALID"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://www.saasco.com/api/v2/projects/string/domains"
[
  {
    "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": "NOT_FOUND",
  "message": "Not found",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}

Delete Project

Permanently deletes a project and everything cascading from it. Any queued usage is settled against the balance first, and the delete is refused with 403 if that leaves the project owing money. Top up before retrying. Returns the deleted project as it was at the point of deletion. This cannot be undone.

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.