레퍼런스HTTP APIWorkspace settings

List the workspace's achievement rules

GET
/v1/achievement-rules

The latest version of every rule of the caller's workspace, disabled ones included (disabled_at), grouped by category in the categories' order and by title within one. A rule is one title, one type and one definition; judge: always counts the type's evidence as it appears, luna asks the judge whether the definition holds. agent_ids is null: every agent. Every member reads it, and so does a member's personal key (workspace.read); an agent's key is 403.

Scope: sessions:read (API key or cookie session).

Authorization

headerAuthorizationBearer <token>

For servers and scripts: an API key sent as an HTTP bearer token, Bearer <key>. It holds exactly the scopes it was issued with; a key issued before scopes existed holds none. It never needs the CSRF header, and it cannot manage agents, members, teams or API keys. Issue one in the web console under Settings → API keys; each operation names the scope it needs.

Scope: sessions:read

Response Body

The latest versions.

application/json
  1. response
items*array<>
Example Request
curl -X GET 'https://example.com/v1/achievement-rules'
Example Response
{  "items": [    {      "id": "7d3a4e5f-6b7c-4d8e-8f9a-1b2c3d4e5f60",      "family_id": "8e4b5f6a-7c8d-4e9f-9a0b-2c3d4e5f6a71",      "version": 1,      "category_id": "5b1e2c3d-4f5a-4b6c-8d7e-9f0a1b2c3d4e",      "title": "Design doc written",      "type_id": "6c2f3d4e-5a6b-4c7d-9e8f-0a1b2c3d4e5f",      "definition": "A design document for a change the session made: it says what changes and why.",      "judge": "luna",      "agent_ids": null,      "created_by": "3e7f1a90-5c2d-4b8e-8f61-2a9d0c4b7e35",      "created_at": "2026-11-02T01:00:00.000Z",      "superseded_by": null,      "disabled_at": null,      "disabled_by": null    }  ]}