Other ways in
HTTP API
A key and a POST. Everything the other paths do, they do through this.
There is no SDK and nothing to install. Every endpoint takes Authorization: Bearer pf_your_key and speaks JSON.
Publish
POST https://app.peerforge.app/api/publish
{ "title": "Q3 plan", "body": "<html>…", "contentType": "text/html" }
→ { "url", "shortId", "versionNo", "comments": { … } }Publish a new version
POST https://app.peerforge.app/api/publish
{ "id": "A1CIBlz4", "baseVersion": 2, "title": "Q3 plan", "body": "…" }A stale baseVersion is refused with 409 and the version to retry from.
Read
GET https://app.peerforge.app/api/artifacts/<shortId>/source
GET https://app.peerforge.app/api/artifacts/<shortId>/comments
GET https://app.peerforge.app/api/artifacts/<shortId>Share
PATCH https://app.peerforge.app/api/artifacts/<shortId>/access
{ "visibility": "domain", "allowedDomains": ["acme.com"] }Named and domain lists are replaced wholesale, so removing somebody means sending the list without them.
Without an account
POST https://app.peerforge.app/api/publish/anonymous
{ "title": "…", "body": "…", "contentType": "text/html" }
→ { "url", "claimUrl", "expiresAt" }No key. Ten an hour from one network, and it expires in thirty days unless the claim link is used.