Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Meza-dev/Ghostly/llms.txt

Use this file to discover all available pages before exploring further.

The GET /v1/projects endpoint returns an array of all projects owned by the authenticated user. Projects are used to group test runs and can be created with a custom label and hex color. Authentication is accepted via either a JWT (dashboard sessions) or an X-Api-Key header (CLI, SDK, and MCP integrations).

Authentication

All requests to /v1/projects require authentication. Pass credentials using one of the two supported schemes:
SchemeHeader
API KeyX-Api-Key: <your-key>
JWT (session)Authorization: Bearer <token>
This endpoint only returns projects that belong to the authenticated user. Projects from other accounts are never included in the response.

Response — 200 OK

The response is a JSON array. Each element is a Project object.
id
string
required
UUID that uniquely identifies the project.
label
string
required
Human-readable display name set at creation time.
color
string
required
Hex color code used by the dashboard UI to tint the project badge. Defaults to #6366f1 when not specified at creation.
createdAt
string
required
ISO 8601 timestamp indicating when the project was created, e.g. "2025-01-15T10:30:00.000Z".

Example response

[
  {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "label": "Marketing Site",
    "color": "#6366f1",
    "createdAt": "2025-01-15T10:30:00.000Z"
  },
  {
    "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "label": "Checkout Flow",
    "color": "#10b981",
    "createdAt": "2025-02-03T14:22:00.000Z"
  }
]

Examples

curl

curl https://your-ghostly-host/v1/projects \
  -H "X-Api-Key: your_api_key_here"

TypeScript SDK

import { GhostlyClient } from "@ghostly/client";

const client = new GhostlyClient({
  baseUrl: "https://your-ghostly-host",
  apiKey: "your_api_key_here",
});

const projects = await client.listProjects();

for (const project of projects) {
  console.log(`[${project.color}] ${project.label}${project.id}`);
}
Use project.id to filter run listings. Pass it as the project query parameter when calling GET /v1/runs?project=<id> or client.listRuns(project.id).

Build docs developers (and LLMs) love