SMAO API Documentation
Distributor API v1Partners

Update assigned plan for the partner's own organization

PATCH
/partners/{partnerId}/plan

Changes the plan assigned to the partner's own (MSP) organization — the one referenced by the partner's organizationId. The change takes effect immediately: the current subscription (typically the trial the organization was provisioned with) is marked as upgraded and a new active, distributor-billed subscription is created with the selected plan. If the organization is already on the requested plan, no change is made.

This is the only way to move an MSP organization off its trial: it is deliberately not addressable through the customer /organizations endpoints. Use the plans endpoint to see available plan slugs and commitment options.

Authorization

DistributorApiKey
AuthorizationBearer <token>

Long-lived distributor API key scoped to a channel partner on the shared smao instance.

In: header

Path Parameters

partnerId*string

MongoDB ObjectId of the partner (MSP).

Match^[a-fA-F0-9]{24}$

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/partners/665abc123def456789012345/plan" \  -H "Content-Type: application/json" \  -d '{    "plan": {      "slug": "professional",      "commitment": "yearly"    }  }'
{  "status": "success",  "partner": {    "id": "665abc123def456789012345",    "name": "MSP Hamburg GmbH",    "externalPartnerId": "MSP-001",    "contactEmail": "admin@msp-hamburg.de",    "contactName": "Hans Mueller",    "isActive": true,    "notes": null,    "organizationId": "665abc123def456789012346",    "organizationCount": 12,    "createdAt": "2026-03-20T10:41:14.553Z"  },  "plan": {    "id": "6967b1c7138bed3e7f6bf7e6",    "slug": "string",    "name": "string",    "commitment": "none",    "currency": "string",    "baseFee": 0  }}