Skip to main content

Slog API

Slog is a headless project management system accessible via REST API and the Model Context Protocol (MCP).

Base URL

Authentication

All resource endpoints require authentication via an Oauth Bearer token or an API key.

API key authentication

API keys are automatically created by the CLI. They can also be used using the /api-keys endpoints to create additional keys with custom names and expiration dates. To authenticate with an API key include it in the Authorization header, e.g.
This can most easily be done using curl. The colon after the key prevents curl from prompting for a password as well.
The API key can also be included in the Slog-Api-Key header:

Oauth authentication

Oauth tokens are generally created and handled by other services. If you have a token you can use it directly for API calls using the Authorization header:

Response Format

Single resources are wrapped in a key matching the resource type. Lists use the plural name with a pagination object.
Errors always use this shape:

Resources

Query Parameters

All list endpoints support the following query parameters.

Field Selection

Request only the fields you need. Nested relations use brace notation.
If omitted, each resource returns a minimal default set (e.g. id, identifier, title, status for tasks).

Return a single record by ID or reference

Filtering

Filters use the form filter[op][field]=value. Multiple filters are combined with AND:
Only fields marked as filterable for a given resource can be filtered. See each resource’s field table.

Sorting

Sorts use the form sort[field]=direction. Multiple sorts are applied in order.
Only fields marked as sortable can be sorted.

Pagination

All list endpoints use cursor-based pagination.
The response pagination.nextCursor is null when there are no more pages.

Batch Requests

Fetch multiple resources in a single round-trip.
Response:
Each result corresponds to the request at the same index. If an individual request fails, that slot contains { "error": { "message": "...", "code": "..." } } and the rest still succeed. Batch supports GET-style requests only (list, get, list sub-resource).

IDs and Identifiers

Every record has an id (a sortable UPID string, e.g. task_01jq...). Tasks additionally have a human-readable identifier generated from the team prefix and an incrementing sequence number (e.g. PLAT-42). The GET /tasks/:id endpoint accepts either format:

Authentication Endpoints

These endpoints are outside the main resource router and do not require a pre-existing token.

OAuth

On success the callback redirects with a JWT:

Current User

Logout

Returns 204 No Content.

API Key Endpoints

API keys allow programmatic access without OAuth. They are created per-user and scoped to your account.

List Keys

Full key values are never returned after creation.

Create Key

expiresAt is optional. The full key is returned only in this response:

Delete Key

Returns 204 No Content.