Skip to content

Workspaces API

Manage workspaces and team members for collaborative invoice management.

Create Workspace

POST /api/v1/workspaces

Request:

{
  "name": "Engineering Team"
}

Response:

{
  "data": {
    "id": "wsp_01ABC",
    "name": "Engineering Team",
    "created_at": "2026-07-20T10:00:00Z",
    "updated_at": "2026-07-20T10:00:00Z"
  }
}
Try it

List Workspaces

GET /api/v1/workspaces

Response:

{
  "data": [
    {
      "id": "wsp_01ABC",
      "name": "Engineering Team",
      "created_at": "2026-07-20T10:00:00Z",
      "updated_at": "2026-07-20T10:00:00Z"
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": null
  }
}
Try it

Get Workspace

GET /api/v1/workspaces/{workspace_id}

Response:

{
  "data": {
    "id": "wsp_01ABC",
    "name": "Engineering Team",
    "created_at": "2026-07-20T10:00:00Z",
    "updated_at": "2026-07-20T10:00:00Z"
  }
}
Try it

Update Workspace

PATCH /api/v1/workspaces/{workspace_id}

Request:

{
  "name": "Product Team"
}

Response:

{
  "data": {
    "id": "wsp_01ABC",
    "name": "Product Team",
    "created_at": "2026-07-20T10:00:00Z",
    "updated_at": "2026-07-20T15:30:00Z"
  }
}
Try it

Delete Workspace

DELETE /api/v1/workspaces/{workspace_id}

Response:

{
  "data": {
    "deleted": true
  }
}

Try it

Workspace Members

Add Member

POST /api/v1/workspaces/{workspace_id}/members

Request:

{
  "email": "teammate@acme.com",
  "role": "member"
}
Field Required Description
email Yes Email address of the user to invite
role No One of owner, admin, member (default: member)

Response: returns the full member list for the workspace, including the newly added member.

{
  "data": [
    {
      "id": "wsm_01DEF",
      "workspace_id": "wsp_01ABC",
      "email": "teammate@acme.com",
      "role": "member",
      "created_at": "2026-07-20T10:05:00Z"
    }
  ]
}
Try it

List Members

GET /api/v1/workspaces/{workspace_id}/members

Response:

{
  "data": [
    {
      "id": "wsm_01DEF",
      "workspace_id": "wsp_01ABC",
      "email": "teammate@acme.com",
      "role": "member",
      "created_at": "2026-07-20T10:05:00Z"
    }
  ]
}
Try it

Update Member Role

PATCH /api/v1/workspaces/{workspace_id}/members/{member_id}

Request:

{
  "role": "admin"
}

Response (the updated member object is returned directly, not wrapped in a data envelope):

{
  "id": "wsm_01DEF",
  "workspace_id": "wsp_01ABC",
  "email": "teammate@acme.com",
  "role": "admin",
  "created_at": "2026-07-20T10:05:00Z"
}
Try it

Remove Member

DELETE /api/v1/workspaces/{workspace_id}/members/{member_id}

Response:

{
  "data": {
    "deleted": true
  }
}
Try it

Idempotency

Create and update endpoints accept an Idempotency-Key header. If you retry a request with the same key, the original response is returned instead of creating a duplicate resource.

curl -X POST https://invoicepdfs.com/api/v1/workspaces \
  -H "Authorization: Bearer inv_live_abc123..." \
  -H "Idempotency-Key: unique-request-id-456" \
  -H "Content-Type: application/json" \
  -d '{"name": "Engineering Team"}'

Roles

Role Permissions
owner Full access, manage billing, delete workspace
admin Manage members, create/edit all resources
member Create and manage own invoices and resources