Skip to main content
The Project Echo REST API lets you list and manage feedback programmatically. Base URL: https://api.projectecho.io/v1 Create keys under API & MCP in the Workspace nav.

Authentication

Send both headers on every request:

Members vs users

These are different people resources:
  • Members (/v1/members) — portal end-users of your product. Email can be exposed for identify/embed flows.
  • Users (/v1/users) — workspace teammates in the staff app. Email is not returned.
Resolve request authors with created_by_member_id → members, or created_by_user_id → users.

Common resources

With the right permissions you can work with:
  • Requests (list, get, create, update, delete)
  • Implementation prompts (get / generate via Anthropic Claude Sonnet — may embed internal notes)
  • Comments (public) and internal notes (staff-only)
  • Votes
  • Members and users
  • Boards, statuses, and tags
  • Changelog drafts (list, create, update, link requests, upload images) — publish stays in the web app
Write actions that act on behalf of a portal member typically need member_id or external_user_id in the JSON body. Internal notes require an author_user_id (teammate UUID).

Implementation prompts

Generate an agent-ready Markdown brief from a request’s title, description, comments, and internal notes using Anthropic Claude Sonnet (default model id claude-sonnet-4-5):
GET /v1/requests/:id also returns implementation_prompt / implementation_prompt_generated_at / implementation_prompt_generated_by when present. MCP tools: get_implementation_prompt, generate_implementation_prompt. Full how-to: Generate implementation prompts with the API and MCP. Staff app: How to generate an implementation prompt.

Request score on API responses

GET /v1/requests and GET /v1/requests/:id include a computed score field on each request:
  • Integer score when scoring is enabled for the workspace (same formula as the staff app)
  • null when scoring is disabled
Score is calculated on read from workspace weights plus signals such as votes, comments, priority, and effort. You do not store or write score through the API. Request payloads also include priority and effort when those fields are set.

Tags on API and MCP

  • GET /v1/tags?kind=request|member lists tags (tags:read)
  • POST /v1/requests/:id/tags and DELETE /v1/requests/:id/tags/:tagId assign or remove request tags (requests:update)
  • POST /v1/members/:id/tags and DELETE /v1/members/:id/tags/:tagId assign or remove member tags (members:update)
  • Request and member responses include a tags array (id, name, color, kind)
MCP tools such as list_tags, add_request_tag, and add_member_tag call the same endpoints. Manage tag definitions in the staff app under Settings; the API assigns existing tags.

Filters

GET /v1/requests supports filters such as board_id, status_id, created_by_user_id, changelog_entry_id, unlinked=true, plus limit and offset. GET /v1/tags requires kind=request or kind=member. GET /v1/changelogs supports status=draft|published, limit, and offset. Agent changelog body format: Changelog TipTap body format for agents. Weekly workflow: Draft changelogs with an agent. Installable skill: Install the Project Echo agent skill.

Tips

  • Start with a read-only key while exploring.
  • Public comments endpoints exclude internal notes — use the internal-notes paths for staff-only content.
  • Prefer MCP when you want AI tools (Claude, Cursor) to call the same capabilities through tools instead of raw HTTP.
Full permission presets are chosen when you create the key. Questions: [email protected] · Help Center.