- Partitioned access: Users, templates, and activity are scoped to a single workspace.
- Usage tracking: See envelopes sent per workspace for clean reporting.
- Security by design: No cross-workspace exposure of documents or data.
Core Endpoints
Core endpoints (see the API reference for full details):- POST
/workspaces— create a workspace - GET
/workspaces/{workspace_id}— retrieve workspace details - PUT
/workspaces/{workspace_id}— update workspace - GET
/workspaces— list workspaces (pagination) - GET
/workspace/{workspace_id}/settings— get workspace settings - PUT
/workspace/{workspace_id}/settings— update workspace settings
Rate limits (per API key):
- Workspace operations: 100 requests per minute
- Workspace settings (GET): 200 requests per minute
- Workspace settings (PUT): 100 requests per minute
api-reference/workspaces:
api-reference/workspaces/create-a-new-workspaceapi-reference/workspaces/list-workspacesapi-reference/workspaces/update-a-workspace
Create a workspace
Endpoint: POST/workspaces
Required body: { "name": "string" }
Example (curl):
Workspace resource with id, name, and timestamps. Example shape:
Retrieve a workspace
Endpoint: GET/workspaces/{workspace_id}
Example (curl):
Workspace resource (see example above).
Update a workspace
Endpoint: PUT/workspaces/{workspace_id} — full resource replacement. Required body same as CreateWorkspace (e.g., { "name": "New name" }).
Example (curl):
List workspaces
Endpoint: GET/workspaces
Supports page and page_size query parameters. Example:
results (array of Workspace) and pagination metadata.
RBAC and API key best practices
- Use scoped API keys where possible: keep a server-only master API key and create per-workspace API keys for integration partners if your platform supports it.
- Never return API keys to the browser. For operations initiated by end users, call your backend which performs the API call to Firma.
- Use idempotency where supported (for endpoints that accept
Idempotency-Key) to avoid double-creation from retries.
Edge cases & troubleshooting
- Duplicate names: workspace names are display-friendly and may not be unique; use the
idfor programmatic references. - Protected workspaces: the
protectedflag indicates system-owned workspaces that cannot be deleted or modified by normal flows. - Rate limits & errors: inspect non-2xx responses for
{ error, code }and surface meaningful messages to operators. - Rate limit exceeded (429): Monitor
X-RateLimit-Remainingheader and implement exponential backoff for retries.
Next steps
- Configure workspace settings for custom email templates and timezone (100-200 req/min)
- Send signing requests within workspaces (100 req/min)
- Set up webhooks to track workspace activity (60 req/min)
- JWT authentication for embedded workflows (120 req/min)