sota.io

Projects

Manage your sota.io projects via the REST API.

List Projects

GET /v1/projects
curl https://api.sota.io/v1/projects \
  -H "Authorization: Bearer <token>"

Response:

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "My App",
      "slug": "my-app",
      "created_at": "2026-02-25T10:00:00Z",
      "updated_at": "2026-02-25T14:30:00Z"
    }
  ],
  "pagination": {
    "next_cursor": null,
    "has_more": false
  }
}

Query Parameters

ParameterTypeDescription
limitintegerMax results (default: 20, max: 100)
cursorstringPagination cursor from previous response

Create Project

POST /v1/projects
curl -X POST https://api.sota.io/v1/projects \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "My App"}'

Request Body

FieldTypeRequiredDescription
namestringYesDisplay name (1-100 characters)
slugstringNoURL slug (used in {slug}.sota.io). Auto-generated from name if not provided.

The slug is auto-generated from the project name: lowercase, spaces and special characters become hyphens, max 63 characters. For example, "My Cool App" becomes my-cool-app.

You can also provide a custom slug: {"name": "My App", "slug": "custom-slug"}.

Note: The slug cannot be changed after creation because it is part of the app URL ({slug}.sota.io).

Response (201 Created):

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My App",
    "slug": "my-app",
    "created_at": "2026-02-25T10:00:00Z",
    "updated_at": "2026-02-25T10:00:00Z"
  }
}

Update Project

PATCH /v1/projects/:id
curl -X PATCH https://api.sota.io/v1/projects/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Updated App"}'

Request Body

FieldTypeRequiredDescription
namestringYesNew display name (1-100 characters)

Delete Project

DELETE /v1/projects/:id
curl -X DELETE https://api.sota.io/v1/projects/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer <token>"

Returns 204 No Content. This stops all running containers and removes the project. This action is irreversible.