Skip to main content
Skip to Content

Users API

Users are the team members in your workspace. Manage invitations, roles, permissions, and user settings through the API.

The User Object

{
  "id": "usr_cuid123456",
  "email": "john@yourcompany.com",
  "name": "John Smith",
  "avatar_url": "https://...",
  "role": "admin",
  "title": "Senior Developer",
  "department": "Engineering",
  "phone": "+1 (555) 123-4567",
  "timezone": "America/New_York",
  "status": "active",
  "capacity": {
    "hours_per_week": 40,
    "billable_target": 75
  },
  "rates": {
    "cost_rate": 75.00,
    "bill_rate": 150.00
  },
  "permissions": {
    "can_see_rates": true,
    "can_approve_time": true,
    "can_manage_invoices": false
  },
  "last_active_at": "2026-01-25T14:30:00Z",
  "created_at": "2025-06-15T10:00:00Z"
}

User Fields

FieldTypeDescription
idstringUnique identifier (prefix: usr_)
emailstringEmail address (unique)
namestringDisplay name
avatar_urlstringProfile picture URL
roleenumUser role (see below)
titlestringJob title
departmentstringDepartment/team
phonestringPhone number
timezonestringUser’s timezone
statusenumactive, invited, deactivated
capacityobjectWork capacity settings
ratesobjectCost and billing rates
permissionsobjectGranular permissions
last_active_atdatetimeLast activity timestamp
created_atdatetimeWhen user was added

User Roles

RoleDescription
ownerFull access, billing management, can delete workspace
adminFull access except billing and workspace deletion
managerCan manage team, approve time, view reports
memberStandard user, logs time, works on projects
viewerRead-only access (free seat)
contractorExternal contractor with limited access

List Users

GET/v1/usersList all users

Returns all users in your workspace.

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger50Results per page (max: 100)
statusstringactiveFilter: active, invited, deactivated, all
rolestringFilter by role
departmentstringFilter by department
searchstringSearch by name or email

Request

curl "https://api.govantage.co/v1/users?status=active" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Response

{
  "data": [
    {
      "id": "usr_cuid123456",
      "email": "john@yourcompany.com",
      "name": "John Smith",
      "role": "admin",
      "title": "Senior Developer",
      "status": "active",
      "last_active_at": "2026-01-25T14:30:00Z"
    },
    {
      "id": "usr_cuid789012",
      "email": "jane@yourcompany.com",
      "name": "Jane Doe",
      "role": "member",
      "title": "Designer",
      "status": "active",
      "last_active_at": "2026-01-25T12:15:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 12
  }
}

Get a User

GET/v1/users/:idRetrieve a user by ID

Query Parameters

ParameterTypeDescription
includestringComma-separated: time_entries, projects, stats

Request

curl "https://api.govantage.co/v1/users/usr_cuid123456?include=stats" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Response

{
  "data": {
    "id": "usr_cuid123456",
    "email": "john@yourcompany.com",
    "name": "John Smith",
    "role": "admin",
    "title": "Senior Developer",
    "department": "Engineering",
    "timezone": "America/New_York",
    "status": "active",
    "capacity": {
      "hours_per_week": 40,
      "billable_target": 75
    },
    "rates": {
      "cost_rate": 75.00,
      "bill_rate": 150.00
    },
    "stats": {
      "hours_this_week": 32.5,
      "hours_this_month": 142.0,
      "billable_percent": 78,
      "active_projects": 5,
      "open_tickets": 12
    }
  }
}

Get Current User

GET/v1/users/meGet the authenticated user

Returns the user associated with the current API key.

curl "https://api.govantage.co/v1/users/me" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Invite a User

POST/v1/users/inviteInvite a new team member

Sends an invitation email to join your workspace.

Request Body

FieldTypeRequiredDescription
emailstringYesEmail address
namestringYesDisplay name
rolestringYesUser role
titlestringNoJob title
departmentstringNoDepartment
hours_per_weekintegerNoWeekly capacity (default: 40)
billable_targetintegerNoBillable % target (default: 75)
cost_ratedecimalNoHourly cost rate
bill_ratedecimalNoDefault billing rate

Request

curl -X POST "https://api.govantage.co/v1/users/invite" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newuser@yourcompany.com",
    "name": "New User",
    "role": "member",
    "title": "Developer",
    "department": "Engineering",
    "hours_per_week": 40,
    "billable_target": 75
  }'

Response

{
  "data": {
    "id": "usr_cuid345678",
    "email": "newuser@yourcompany.com",
    "name": "New User",
    "role": "member",
    "status": "invited",
    "invitation_sent_at": "2026-01-25T10:30:00Z",
    "invitation_expires_at": "2026-02-01T10:30:00Z"
  }
}

Update a User

PUT/v1/users/:idUpdate a user

Request

curl -X PUT "https://api.govantage.co/v1/users/usr_cuid123456" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Lead Developer",
    "department": "Engineering",
    "capacity": {
      "hours_per_week": 40,
      "billable_target": 80
    },
    "rates": {
      "cost_rate": 85.00,
      "bill_rate": 175.00
    }
  }'

Only admins and owners can update user roles and permissions. Users can update their own profile (name, timezone, etc.).


Deactivate a User

POST/v1/users/:id/deactivateDeactivate a user

Deactivated users cannot log in but their data is preserved for historical reporting.

curl -X POST "https://api.govantage.co/v1/users/usr_cuid123456/deactivate" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Response

{
  "data": {
    "id": "usr_cuid123456",
    "status": "deactivated",
    "deactivated_at": "2026-01-25T10:30:00Z"
  }
}

Reactivate a User

POST/v1/users/:id/reactivateReactivate a user
curl -X POST "https://api.govantage.co/v1/users/usr_cuid123456/reactivate" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Resend Invitation

POST/v1/users/:id/resend-invitationResend invitation email

For users with status: invited who haven’t accepted yet.

curl -X POST "https://api.govantage.co/v1/users/usr_cuid123456/resend-invitation" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Update Permissions

PUT/v1/users/:id/permissionsUpdate user permissions

Available Permissions

PermissionDescription
can_see_ratesView billing rates and profitability
can_see_costsView cost rates and margins
can_approve_timeApprove team time entries
can_manage_invoicesCreate and send invoices
can_manage_clientsCreate and edit clients
can_manage_projectsCreate and edit projects
can_manage_teamInvite and manage users
can_view_reportsAccess reporting
can_export_dataExport data to CSV

Request

curl -X PUT "https://api.govantage.co/v1/users/usr_cuid123456/permissions" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "can_see_rates": true,
    "can_approve_time": true,
    "can_manage_invoices": false,
    "can_view_reports": true
  }'

User Time Summary

GET/v1/users/:id/time-summaryGet time summary for a user
curl "https://api.govantage.co/v1/users/usr_cuid123456/time-summary?period=this_month" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx"

Response

{
  "data": {
    "period": {
      "start": "2026-01-01",
      "end": "2026-01-31"
    },
    "hours": {
      "total": 142.0,
      "billable": 110.5,
      "non_billable": 31.5
    },
    "utilization": {
      "target": 75,
      "actual": 78,
      "status": "on_track"
    },
    "by_project": [
      { "project_id": "prj_xxxxx", "project_name": "Website Redesign", "hours": 45.5 },
      { "project_id": "prj_yyyyy", "project_name": "Mobile App", "hours": 65.0 }
    ]
  }
}

Bulk Operations

Bulk Update Department

PUT/v1/users/bulkUpdate multiple users
curl -X PUT "https://api.govantage.co/v1/users/bulk" \
  -H "Authorization: Bearer vnt_sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": ["usr_xxxxx", "usr_yyyyy", "usr_zzzzz"],
    "updates": {
      "department": "Product Team"
    }
  }'

Webhooks

Subscribe to user events:

EventDescription
user.createdNew user accepted invitation
user.updatedUser details changed
user.deactivatedUser deactivated
user.reactivatedUser reactivated
user.role_changedUser role changed

Next Steps