Amend.sh

API Reference

Beta REST and SDK contract for portal reads, customer writes, owner mutations, and webhooks.

The REST API is served by Convex HTTP actions under /api/v1. The SDK wraps the same route families and keeps the workspace slug in the project option.

import { Amend } from "@amend/sdk";

const amend = new Amend({
  project: "amend-labs",
  apiBaseUrl: "http://127.0.0.1:3211/api/v1",
  token: process.env.AMEND_API_TOKEN,
});

The beta OpenAPI contract lives in packages/api-spec/openapi.yaml.

Authentication

When AMEND_API_TOKEN is configured, owner-level mutations require:

Authorization: Bearer <AMEND_API_TOKEN>

Public portal reads, feedback submissions, identity mapping, event tracking, unsubscribes, and signed provider webhooks remain callable without the owner token where appropriate.

Public Reads

MethodEndpointSDK method
GET/api/v1/versionamend.version()
GET/api/v1/:workspace/portalamend.portal()
GET/api/v1/:workspace/roadmapamend.roadmap()
GET/api/v1/:workspace/changelogamend.changelog()
GET/api/v1/:workspace/updatesamend.updatesForUser()
GET/api/v1/:workspace/github-appamend.githubApp()
GET/api/v1/:workspace/plansamend.plans()
GET/api/v1/_/domainsamend.resolveCustomDomain()

Customer Writes

MethodEndpointSDK method
POST/api/v1/:workspace/identityamend.identify()
POST/api/v1/:workspace/feedbackamend.submitRequest()
POST/api/v1/:workspace/interactionsamend.vote(), comment(), react()
POST/api/v1/:workspace/eventsamend.track()
POST/api/v1/:workspace/preferencesamend.setNotificationPreference()

Owner Reads

MethodEndpointSDK method
GET/api/v1/:workspace/settingsamend.settings()
GET/api/v1/:workspace/decisionsamend.automationDecisions()
GET/api/v1/:workspace/source-eventsamend.sourceEvents()
GET/api/v1/:workspace/build-briefsamend.buildBriefs()
GET/api/v1/:workspace/agent-runsamend.agentRuns()
GET/api/v1/:workspace/deliveriesamend.deliveryOutbox()
GET/api/v1/:workspace/projectsamend.projects()

Owner Mutations

MethodEndpointSDK method
POST/api/v1/:workspace/projectsamend.createProject()
POST/api/v1/:workspace/repositoriesamend.connectRepository()
POST/api/v1/:workspace/source-eventsamend.importSourceEvent()
POST/api/v1/:workspace/draftsamend.draftChangelog()
POST/api/v1/:workspace/changelogamend.upsertChangelog()
POST/api/v1/:workspace/roadmapamend.upsertRoadmapItem()
POST/api/v1/:workspace/rulesamend.updateAutomationRules()
POST/api/v1/:workspace/membersamend.upsertWorkspaceMember()
POST/api/v1/:workspace/integrationsamend.upsertIntegration()
POST/api/v1/:workspace/portal-settingsamend.updatePortalSettings()
POST/api/v1/:workspace/domainsamend.registerCustomDomain()
POST/api/v1/:workspace/deliveriesamend.planDeliveries(), sendDeliveries()
POST/api/v1/:workspace/plansamend.updatePlan()
POST/api/v1/:workspace/checkoutamend.createCheckoutSession()

Webhooks

MethodEndpointVerification
POST/api/v1/:workspace/githubX-Hub-Signature-256 with GITHUB_WEBHOOK_SECRET
POST/api/v1/:workspace/stripeStripe webhook secret and raw body

Legacy /ingest/githubWebhook, /ingest/discordWebhook, and /ingest/sourceEvent routes are kept for compatibility. GitHub uses the same X-Hub-Signature-256 verification, and the Discord and generic source-event routes require the owner bearer token.

Use the OpenAPI file for schema-level details and generated client types. Use this page for the route/auth map when wiring product surfaces.

On this page