Accretion API (producers)¶
Production-board tasks live in Accretion Engine at accretion.sinxjy.com. Producers onboard their coding agent with a personal ace_ token, and the agent edits the board directly over this REST API — no MCP server required. Everything below is the verified live contract for project 11 (Rephrased).
Auth¶
- Base URL:
https://accretion.sinxjy.com/api/v1 - Every request: header
Authorization: Bearer <token> - The producer's token is stored locally at
~/.rephrased/accretion-token.txt(Windows:C:\Users\<you>\.rephrased\accretion-token.txt), written by MCP onboarding after validation. - The token IS the producer's identity. Everything the agent creates or moves is recorded as the token owner. Never paste it in chat; re-register to rotate.
Roles in project 11: admin, producer, lead, member.
- WRITER_ROLES (admin, producer, lead, member) — create / update / delete / move / assign work items.
- PLANNER_ROLES (admin, producer, lead) — create / reorder / delete board sections.
Endpoints (project id = 11)¶
| Method | Path | What it does |
|---|---|---|
| GET | /auth/me |
Verify the token — returns user id / username / email. Run first. |
| GET | /projects |
Projects this token can see (membership-scoped, not an inventory). |
| GET | /projects/11/members |
Members + their userId values for assignments. |
| GET | /projects/11/work-items |
List top-level tasks. Filters: boardId, sectionId, categoryId, stageId, importanceId, milestoneId, parentId, isStory, search, sortBy, sortDir. |
| GET | /projects/11/work-items/{id} |
One task, full detail. 200 = live, 404 = soft-deleted. |
| POST | /projects/11/work-items |
Create. See payload below. |
| PATCH | /projects/11/work-items/{id} |
Update fields (stage, board, section, assignees are separate). |
| PATCH | /projects/11/work-items/bulk/move |
Move many: {"ids":[1,2], "stageId":53, "boardId":25?, "sectionId":?}. |
| PATCH | /projects/11/work-items/bulk/reorder |
{"items":[{"id":1,"sortOrder":0}, ...]}. |
| POST | /projects/11/work-items/{id}/assignments |
Assign: {"userId": N} → 201. Fires an in-app notification. No GET assignments route exists. |
| DELETE | /projects/11/work-items/{id}/assignments/{userId} |
Unassign → 204. |
| POST | /projects/11/boards/{id}/sections |
Create a board section (PLANNER_ROLES): {"name":"ENGINEER","stageSetId":2,"categoryId":97,"materializeDefault":false}. |
| DELETE | /projects/11/work-items/{id} |
Soft-delete. Deleting a section soft-deletes the tasks inside it. |
Create payload (POST /projects/11/work-items)¶
title(required, 1–500)description(≤ 10000)code(≤ 50, free text, not unique — duplicates exist)categoryId,stageId,importanceId,boardId,sectionId,milestoneId,parentId(all optional, must belong to project 11)isStory(bool),estimatedCost,startDate,dueDate
Update payload (PATCH /projects/11/work-items/{id})¶
Same fields, nullable, plus sortOrder.
Project 11 ID tables¶
Boards: 22 26/09/14 S01 · 23 26/09/21 S02 · 24 26/09/28 S03 · 25 10/05/2026 S04
Categories: 90 Art · 91 Design · 92 Writing · 93 Marketing · 94 Sound · 95 Ideas · 96 Bug · 97 Engineering
Importance: 41 Urgent · 42 High · 43 Normal · 44 Low
Milestones: 71 Second Playable · 72 Midterm · 73 SOTG · 74 Alpha · 75 Beta · 76 Final
Stage sets: - default (null): 50 Blocked · 51 Clarification · 52 Ready · 53 In Progress · 54 Review · 55 Done - set 1: 56 Blocked · 63 Not Started · 65 In progress · 66 Complete · 67 Needs Revision · 68 Additional Time - set 2 (ENGINEER): 69 BLOCKED · 70 READY · 71 IN PROGRESS · 72 IN REVIEW · 73 APPROVED · 74 SUBMITTED · 75 COMPLETE
Board 23 (S02) sections: ENGINEER (category 97, stage set 2) · DESIGN (category 91, default set) · NARRATIVE (category 92, default set) · ART (category 90, set 1).
Traps that cost real time (verified)¶
- The flat list hides subtasks.
GET /projects/11/work-itemsexcludes items with aparentIdunless you pass?parentId=X. "Gone from the list" ≠ deleted — check per-id: 200 = live, 404 = soft-deleted. Suspicious sign: flattotalCountsmaller than the sum of the board sections'taskCounts. - Section-less boards silently re-stage tasks. Boards 22/24/25 ship with zero sections. On a section-less board, any non-default-set
stageId(e.g. ENGINEER set 2) is silently re-homed to the default set's first stage (50 Blocked) — no error. Create the section first (POST/boards/{id}/sections), or accept stage 50 on fresh sprint boards. - Codes are not unique. Two
CORE-003s coexist. Never match tasks bycode; use the numericid. - Moving a task into a section explicitly stamps that section's category onto the task ("dragging across sections = this is now Art").
- Error codes:
401bad/missing token ·403role insufficient ·400validation (route reached — the error names the bad fields).
Curl examples (project 11)¶
TOK=$(cat ~/.rephrased/accretion-token.txt | tr -d '\r\n')
B=https://accretion.sinxjy.com/api/v1
# who am I (always verify first)
curl -s -H "Authorization: Bearer $TOK" "$B/auth/me"
# list tasks on the S02 board
curl -s -H "Authorization: Bearer $TOK" "$B/projects/11/work-items?boardId=23"
# create a design task on S02
curl -s -X POST -H "Authorization: Bearer $TOK" -H 'Content-Type: application/json' \
-d '{"title":"Producer task example","categoryId":91,"boardId":23,"importanceId":43}' \
"$B/projects/11/work-items"
# move one task to In Progress (default set)
curl -s -X PATCH -H "Authorization: Bearer $TOK" -H 'Content-Type: application/json' \
-d '{"stageId":53}' "$B/projects/11/work-items/123"
# bulk-move several tasks to Done
curl -s -X PATCH -H "Authorization: Bearer $TOK" -H 'Content-Type: application/json' \
-d '{"ids":[123,124],"stageId":55}' "$B/projects/11/work-items/bulk/move"
# assign (userId from GET /projects/11/members)
curl -s -X POST -H "Authorization: Bearer $TOK" -H 'Content-Type: application/json' \
-d '{"userId":7}' "$B/projects/11/work-items/123/assignments"
Change history¶
- 2026-09-28 — Created. Producer role added to MCP onboarding; producers edit the board via REST with their own
ace_token. Endpoint + ID tables verified against the live instance andserver/routes.