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

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.

GET
/projects/{projectId}

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project to fetch.

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"
{
  "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": "NOT_FOUND",
  "message": "Not found",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}

List Projects

Lists the projects the caller can reach, each with its app configs. API keys are scoped to a single project, so an API-key caller always gets exactly that one project back. Session and MCP callers omit `take` for every membership they belong to; the dashboard passes `take` for the recent page and `id` to keep the current project. An MCP URL with `?projectId=` is limited to that project.

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.