Developer API and CLI
Workstation exposes the same CRM contract through the public REST API and a JSON CLI. They share scopes, validation, pagination, visibility, and audit behavior.
Use browser login for a person working in the CLI. Use a Developer App key for CI, unattended automation, and direct REST API clients.
Sign in to the CLI with your browser
Section titled “Sign in to the CLI with your browser”curl -fsSL https://workstation.repzo.com/install-cli | bashrepzo setup agentsrepzo auth login --profile work --base-url 'https://your-workstation.example'On Windows PowerShell, install with irm https://workstation.repzo.com/install-cli.ps1 | iex before running the same repzo setup and login commands.
The installer downloads a standalone binary and verifies its SHA-256 checksum. When cosign is available, it also verifies the release’s Sigstore signature. Node and npm are not required. Manual downloads are available from the public Repzo CLI releases.
The CLI opens Workstation in your default browser. Sign in if needed, choose the access to grant, and approve the request. The CLI listens only on an ephemeral 127.0.0.1 callback, validates the response with OAuth state and PKCE, then stores a short-lived access token and rotating refresh token in macOS Keychain when available (or a private mode-0600 file).
Delegated CLI access always keeps the signed-in user’s current role and record visibility. Removing the user, disabling their account, or reducing their permissions takes effect on later API calls. Run repzo auth logout --profile work to revoke the server-side CLI session and delete its local credentials.
Run repzo upgrade to preview an available standalone release and repzo upgrade --yes to install it. The upgrade verifies the release checksum, checks the staged executable’s version, and rolls back if the installed binary cannot be confirmed.
Create a Developer App key
Section titled “Create a Developer App key”- Open Settings → Integrations & Developers → Developer Apps.
- Create an API Key app.
- Grant only the read or write scopes the integration needs.
- Copy the
foxa-*token when it is shown. Workstation stores only its hash and cannot show the plaintext again.
Keep the token in an environment variable or secret store. Do not commit it or place it directly in a command.
Public API coverage
Section titled “Public API coverage”Standard CRUD is available for contacts, accounts, deals, activities, campaigns, projects, tickets, invoices, carts, orders, line items, price offers, products, pipelines, saved reports, appointments, requests, request types, tags, forms, segments, content collections, and articles. Contacts carry the pipeline, stage, status, source, and channel fields used for lead-management workflows. Pipeline stages are nested under /pipelines/{id}/stages.
Operational routes cover:
- report categories, filter values, and aggregate execution;
- outbound event subscriptions, scoped to the calling Developer App;
- inbox queues, conversations, messages, replies, notes, assignment, close/reopen, and snooze;
- visible chat channels plus message read/write;
- voice call history, call channels, analytics, and deprecated geo-locked click-to-call;
- Send campaign lookup, transactional/system dispatch, event ingest, and subscription opt-out.
- request submission, approval, and rejection;
- entity tags and supported activity/email associations;
- form and article publishing plus segment evaluation;
- import job status and scheduled CSV/XLSX exports.
Import uploads stay in the Workstation interface because they require file upload, preview, and column mapping. The public API can inspect those jobs and create exports without accepting internal media IDs.
Authentication/password flows, billing administration, connector secrets, support impersonation, destructive workspace maintenance, and private AI traces are intentionally not part of v1.
Use the REST API or CLI
Section titled “Use the REST API or CLI”REST requests use the /api/v1 base path:
curl 'https://your-workstation.example/api/v1/contacts?page=1&limit=20' \ -H 'Authorization: Bearer foxa-your-key'Install the standalone CLI and create a named profile:
curl -fsSL https://workstation.repzo.com/install-cli | bashrepzo setup agentsrepzo auth login --profile work --base-url 'https://your-workstation.example'repzo profiles use workrepzo doctorFor CI or another non-browser environment, pipe a Developer App key through stdin:
printf '%s' "$REPZO_DEVELOPER_APP_TOKEN" | repzo auth login --profile ci --token-stdinREPZO_TOKEN and REPZO_BASE_URL can still override a profile for an ephemeral process.
Domain commands produce JSON and call the same routes:
repzo tickets create --data @ticket.json --dry-runrepzo inbox conversations reply CONVERSATION_ID --data @reply.json --dry-runrepzo chat send CHANNEL_ID --data '{"body":"Hello","bodyFormat":"plain"}' --dry-runrepzo contacts list --allEvery mutation requires --yes; use --dry-run first. The CLI retries temporary 429, 502, 503, and 504 responses, and --all follows both offset and cursor pagination.
Successful commands return a stable envelope that agents can chain:
{ "ok": true, "data": [{ "id": "contact-id", "firstName": "Maya" }], "summary": "1 result", "breadcrumbs": [ { "action": "get", "cmd": "repzo contacts get contact-id", "description": "Get Maya" } ], "meta": { "page": 1, "command": "repzo contacts list" }}Pass --quiet for raw data in shell scripts. Pass --agent for raw, non-interactive agent output; --agent --help still returns focused command discovery. Errors are structured on stderr with a stable error.code, an actionable hint, and a retryable flag.
| Exit | Error code | Meaning |
|---|---|---|
1 |
usage |
Invalid command, flag, or local input |
2 |
not_found |
Profile or API resource not found |
3 |
auth |
Missing or invalid authentication |
4 |
forbidden |
Missing access or API scope |
5 |
rate_limit |
Retry limit reached |
6 |
network |
API could not be reached |
7 |
api |
Validation or server failure |
8 |
ambiguous |
A more specific target is required |
For agent discovery and setup:
repzo commands --jsonrepzo inbox conversations --agent --helprepzo setup agentsrepzo setup codexrepzo setup clauderepzo setup agents installs the bundled skill under ~/.agents/skills/repzo-workstation and links every detected Codex or Claude installation to that shared copy. Use a specific setup command to connect one agent explicitly. Start a new agent thread after setup. Installed skills refresh automatically on the first CLI command after a CLI version upgrade, and repzo doctor verifies their paths and versions.
Use repzo openapi or open /api/v1/docs for the exact fields and filters. Generate shell completion with repzo completion zsh, bash, or fish. Inputs are strict; unknown fields and filters return 422.
Safety and troubleshooting
Section titled “Safety and troubleshooting”- Start with read scopes and add write scopes only when needed.
- Read a record and its metadata before updating it.
- Use ISO-2 country codes and stable custom property names.
- A
403usually means the Developer App lacks the required scope. - A
422means the request does not match the public contract; inspect its error details instead of guessing fields. - A
429means the public API rate limit was reached; honor the retry window.
See Settings for the rest of the workspace configuration surface.