Internal management API. These endpoints are authenticated via TutorFlow admin auth in the current MVP, not via Platform API keys.
POST /v1/platform/workspaces
Create a new platform workspace.
Example Request
curl -X POST https://api.tutorflow.io/v1/platform/workspaces \
-H "Authorization: Bearer tf_platform_..." \
-H "Content-Type: application/json" \
-d '{
"name": "My EdTech Company",
"slug": "my-edtech",
"email": "admin@myedtech.com",
"planCode": null,
"billingMode": "internal_invoice",
"stripeCustomerId": "cus_test_123"
}'Response
{
"id": "uuid",
"name": "My EdTech Company",
"slug": "my-edtech",
"email": "admin@myedtech.com",
"status": "ACTIVE",
"creditBalance": 0,
"planCode": null,
"billingMode": "internal_invoice",
"stripeCustomerId": "cus_test_123",
"stripeSubscriptionId": null,
"stripeSubscriptionItemIdFast": null,
"stripeSubscriptionItemIdStandard": null,
"stripeSubscriptionItemIdAdvanced": null,
"rateLimitPerMinute": 1000,
"createdAt": "2025-01-15T10:00:00Z"
}GET /v1/platform/workspaces
List all workspaces you have access to.
Example Request
curl https://api.tutorflow.io/v1/platform/workspaces \
-H "Authorization: Bearer tf_platform_..."Response
[
{
"id": "uuid",
"name": "My EdTech Company",
"slug": "my-edtech",
"email": "admin@myedtech.com",
"status": "ACTIVE",
"creditBalance": 0,
"createdAt": "2025-01-15T10:00:00Z"
}
]GET /v1/platform/workspaces/:id
Get details of a specific workspace.
Example Request
curl https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID \
-H "Authorization: Bearer tf_platform_..."Response
Returns the full workspace object (same schema as the POST response above).
PATCH /v1/platform/workspaces/:id
Update workspace details.
Example Request
curl -X PATCH https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID \
-H "Authorization: Bearer tf_platform_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Company Name",
"email": "new@email.com",
"planCode": "standard",
"billingMode": "stripe_metered",
"stripeCustomerId": "cus_test_123",
"stripeSubscriptionId": "sub_test_123",
"stripeSubscriptionItemIdFast": "si_fast_123",
"stripeSubscriptionItemIdStandard": "si_standard_123",
"stripeSubscriptionItemIdAdvanced": "si_advanced_123"
}'Billing Fields
billingMode:internal_invoiceorstripe_meteredstripeCustomerId: Stripe customer used for invoicing or meter reportingstripeSubscriptionId: optional Stripe subscription backing metered billingstripeSubscriptionItemIdFast: optional Stripe subscription item for the fast tierstripeSubscriptionItemIdStandard: optional Stripe subscription item for the standard tierstripeSubscriptionItemIdAdvanced: optional Stripe subscription item for the advanced tier
Response
Returns the full updated workspace object.
POST /v1/platform/workspaces/:id/credits
Add credits to a workspace's balance.
Credits are the internal billing ledger for the current MVP. Public pricing is exposed as per-evaluation pricing, while the backend uses credits to support included usage and future plan variations.
Example Request
curl -X POST https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID/credits \
-H "Authorization: Bearer tf_platform_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"note": "Monthly credit top-up"
}'Response
{
"id": "uuid",
"creditBalance": 1000
}POST /v1/platform/workspaces/:id/suspend
Suspend a workspace. All API keys will stop working.
Example Request
curl -X POST https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID/suspend \
-H "Authorization: Bearer tf_platform_..."Response
{
"id": "uuid",
"status": "SUSPENDED"
}POST /v1/platform/workspaces/:id/activate
Reactivate a suspended workspace.
Example Request
curl -X POST https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID/activate \
-H "Authorization: Bearer tf_platform_..."Response
{
"id": "uuid",
"status": "ACTIVE"
}POST /v1/platform/workspaces/:id/link
Link a platform workspace to an existing TutorFlow organization. This enables shared billing and unified management.
Example Request
curl -X POST https://api.tutorflow.io/v1/platform/workspaces/WORKSPACE_ID/link \
-H "Authorization: Bearer tf_platform_..." \
-H "Content-Type: application/json" \
-d '{
"organizationId": "existing-org-uuid"
}'Note:
organizationIdhere refers to the TutorFlow organization being linked to, not the workspace itself.
Response
{
"id": "uuid",
"organizationId": "existing-org-uuid",
"status": "ACTIVE"
}