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 ProjectsgetGet ProjectpostUpdate ProjectdelDelete Project
Add DNS records
ProjectsSettings

Update Project

Updates a project's settings. Only the fields present in changes are written, so this is a partial update despite the POST. Slugs are unique across Saasco. Reusing one that belongs to another project returns 409.

POST
/projects/{projectId}

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project to update.

Request Body

application/json

changesrequiredobject

Fields to change. Anything omitted is left as-is.

autoTopUpEnabledboolean

Whether automatic credit top-up is enabled.

metaobject | null

Project metadata bag.

namestring

Display name of the project.

slugstring

Unique URL slug across Saasco. Reusing one that belongs to another project returns 409. A new slug cannot start with test_.

stripeCustomerIdstring | null

Live Stripe customer ID.

taglinestring | null

Short description shown on the project.

testStripeCustomerIdstring | null

Test-mode Stripe customer ID.

thumbnailstring | null

Image URL for the project.

autoTopUpAmountnumber | null
autoTopUpThresholdnumber | null

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://www.saasco.com/api/v2/projects/string" \  -H "Content-Type: application/json" \  -d '{    "changes": {}  }'
{
  "id": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "name": "string",
  "tagline": "string",
  "slug": "string",
  "balance": 0,
  "balanceVersion": -9007199254740991,
  "thumbnail": "string",
  "stripeCustomerId": "string",
  "testStripeCustomerId": "string",
  "autoTopUpEnabled": true,
  "meta": {
    "agentSetupStartedAt": "string",
    "sdkInstalledAt": "string",
    "onboardingCompletedAt": "string",
    "onboardingStep": "name",
    "onboardingManual": true,
    "contactListVisibleColumns": [
      {
        "id": "string",
        "order": 0
      }
    ],
    "defaultEmailCampaignSendOrder": {
      "direction": "asc",
      "propertyKey": "string"
    },
    "defaultEmailFromDomain": "string",
    "defaultEmailFromName": "string",
    "defaultEmailFromUsername": "string",
    "companyAddressLine1": "string",
    "companyAddressLine2": "string",
    "companyCity": "string",
    "companyRegion": "string",
    "companyPostalCode": "string",
    "companyCountry": "st",
    "knowledgeArticlesVisibleColumns": [
      {
        "id": "string",
        "order": 0
      }
    ],
    "timezone": "string",
    "setupGuideVisits": [
      "string"
    ],
    "setupGuideEmailDomainSkipped": true,
    "setupGuideMcpSkipped": true,
    "setupGuideSupportDomainSkipped": true,
    "setupGuideTestEmailSent": true,
    "setupGuideGoLiveConfirmed": true
  },
  "liveProjectId": "string",
  "autoTopUpAmount": 20,
  "autoTopUpThreshold": 10,
  "appConfigs": [
    {
      "id": "string",
      "createdAt": "string",
      "updatedAt": "string",
      "appId": "string",
      "activated": true,
      "setupCompleted": true,
      "projectId": "string"
    }
  ]
}
{
  "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 Project

Fetches a single project along with its app configs: one entry per Saasco app the project has enabled, carrying that app's activation and setup-completion state. Returns 404 if the project does not exist.

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.