Call Project Command with an API key. This page lists each open endpoint,
the fields you can send, and a copy-ready example.
Base URL: https://projectcommand.reversal.org.
Machine-readable catalog:
https://projectcommand.reversal.org/api/v1/docs/.
Mint a changelog key at Changelog keys after you sign in.
More endpoints
These also accept a key or no key. Staff-only session routes are listed in the machine-readable catalog at /api/v1/docs/.
GET
https://projectcommand.reversal.org/api/v1/health/
none
Returns csrf when a staff session is present.
GET
https://projectcommand.reversal.org/api/v1/docs/
none
Documentation layer: features, snap-ins, and this endpoint catalog.
POST
https://projectcommand.reversal.org/api/v1/financials/
cpcl_ key, API key, or session
Query: action=payment
Body: venture_id, amount, source, external_id, paid_on, project_id, name, notes, currency
action=payment. Header X-Api-Key. A cpcl_ key only writes its company, venture, or project. Same source + external_id returns the existing row. USD only. One project is chosen when the venture has a single project.
GET
https://projectcommand.reversal.org/api/v1/jobs/
session|pixel_key
Query: limit, offset, status, project_id
Staff list item includes cost, sell, margin.
GET
https://projectcommand.reversal.org/api/v1/jobs/{id}/
session|pixel_key
GET
https://projectcommand.reversal.org/api/v1/jobs/{id}/customer/
session|pixel_key
Query: view=customer
Customer-safe payload.
POST|PATCH
https://projectcommand.reversal.org/api/v1/jobs/
session|pixel_key
Query: id on PATCH
Body: title, client_label, project_id, status, source
GET|POST|PATCH
https://projectcommand.reversal.org/api/v1/alert-urls/
session|api_key|cpcl_
Query: project_id, project_slug, venture_id, organization_id, company_id, page_url, id, limit, offset
Body: project_id, project_slug, page_url, link_url, message, status
One custom message per page URL on a project. link_url is the URL tied to that page. POST again for the same page_url updates the row. PATCH status is active or paused.
GET|POST|PATCH|DELETE
https://projectcommand.reversal.org/api/v1/pixels/
session|pixel_key
Query: id, app_slug, owner_user_ref, project_id, action, key_id
Body: name, app_slug, owner_user_ref, status, project_id, allowed_hosts
Manage EE tracking pixels and eepx_ keys. POST with only project_id fills name/slug from that Command project.
GET
https://projectcommand.reversal.org/api/v1/traffic/
session|pixel_key read
Query: pixel|pixel_id|id, range=24h|7d|30d, view=summary|hits
Staff traffic reports. Use analytics for public embed numbers.
GET
https://projectcommand.reversal.org/api/v1/analytics/
none|pixel_key read|session for portfolio
Query: pixel px_... or app=rcna, view=card|report, range=24h|7d|30d
CORS * callable pack. Compact card by default. view=report adds hours, weekdays, rates, share tables. app=rcna is Recovery Networks. Staff session with no pixel returns the portfolio report. recent[] only with staff or eepx_ read.
GET
https://projectcommand.reversal.org/api/v1/changelog/analytics/
session|changelog_key
Query: days, organization_id, venture_id, project_id
Frequency board for cp_changelog_entries. days defaults to 7 (1-30). projects[] include share_pct and per_day. Key scope applies. UI: /changelog/.
GET
https://projectcommand.reversal.org/api/v1/changelog/export/
session|changelog_key
Query: format, organization_id, venture_id, project_id, q, date_from, date_to, download
Download the scoped ship log. format=apps|csv|md|json. date_from and date_to are YYYY-MM-DD, US Eastern, inclusive. The ship log page starts the fields at the last 2 days. apps is a Markdown list grouped by project. Cap 5000 rows. json&download=0 returns the JSON envelope. UI: /changelog/#export.
GET
https://projectcommand.reversal.org/api/v1/bugs/export/
session|changelog_key
Query: project_id, venture_id, organization_id, format, download
Download scoped bugs. Staff with no filter gets every row. A cpcl_ key stays inside its scope. Cap 2000. UI: project Bugs tab.
GET|POST|PATCH
https://projectcommand.reversal.org/api/v1/snapins/
session|changelog_key read
Query: project_id
Body: action=enable|disable|reorder|notes, snapin_key, project_id, stack, extra_notes
Stack changelog, checks, health, mermaids, pastes, chat, pdfs, contracts, whitepapers on a project.
GET|POST
https://projectcommand.reversal.org/api/v1/checks/
session|changelog_key
Query: project_id
Body: action=run|context|override|enable|disable|create|attest, project_id, check_key, base_url, env_rel_path, param_value, runner
Parameter catalog in cp_checks. Security and .env first. INSERT or POST action=create to snap in more. .env values are never returned. UI: /checks/. DataPolicy standards render under that audit.
GET|POST
https://projectcommand.reversal.org/api/v1/holdings-groups/
session|cpcl_
Body: action=sync, csrf on session write
Mirrors ee_holdings.`groups` and user_groups onto cp_groups (source=holdings) under the EE Holdings project. Holdings is source of truth. UI: /groups/.
GET|POST
https://projectcommand.reversal.org/api/v1/sales-groups/
session|cpcl_
Body: action=sync, csrf on session write
Mirrors salesdb.sales_groups and sales_group_members onto cp_groups (source=sales). Sales is source of truth. API only; Holdings groups use /groups/.
GET|POST
https://projectcommand.reversal.org/api/v1/finance-groups/
session|cpcl_
Body: action=sync, csrf on session write
Mirrors finance_db.finance_groups onto cp_groups (source=finance) under the EE Financial project. Finance admin is source of truth. UI: https://ee.financial/admin/dashboard/#product-groups
GET|POST
https://projectcommand.reversal.org/api/v1/venture-health/
session|changelog_key
Query: project_id
Body: action=save_base|add|remove|required|run, project_id, base_url, label, path, expect_status, is_required, url_id
One checklist per venture. Privacy, whitepaper, /seller, and the 404 row start required. is_required 1 counts toward Required done. Optional rows still run. Probes do not follow redirects. UI: /projects/view/?tab=health.
GET|POST
https://projectcommand.reversal.org/api/v1/project-coowners/
session|changelog_key
Query: project_id, public_id
Body: action=add|remove, project_id, public_id, email, staff_id
Owner or operator, or a cpcl_ key that covers the project. A new co-owner signs in only to attached projects. Role owner is never changed. The email has a sign-in link and a view link. A new password is emailed once and is not returned. Changing the accountable owner or EE product manager on project save sends the same links to the stored inbox.
GET|POST
https://projectcommand.reversal.org/api/v1/staff-roster/
session|changelog_key
Query: venture_id, project_id, action=list|check|board
Body: action=upsert|remove|seed|check, venture_id, project_id, role_key, role_label, person_name, person_email, status, is_required, id
Org roles to build out on a venture or project. Not login co-owners. Required seats must be filled for action=check to pass. UI: /staff/ and project tab Staff.
GET|POST|PATCH
https://projectcommand.reversal.org/api/v1/helpdesk/
session|api_key|cpcl_
Query: project_id, project_slug, venture_id, organization_id, company_id, id, status, limit, offset
Body: project_id, project_slug, subject, body, priority, channel, requester_name, requester_email, page_url, source_ref, status, assignee_staff_id, action=reply, reply, is_internal
Ticket lifecycle per project. priority is low, medium, high, or urgent. status is open, in_progress, waiting, resolved, or closed. A cpcl_ key is locked to its company, venture, or project. Open creates write a Command alert. PATCH can set status/priority/assignee or action=reply. Distinct from /api/v1/contact/ helpdesk notes. UI: /helpdesk/.