curl --request GET \
--url https://use.hoop.dev/api/usersimport requests
url = "https://use.hoop.dev/api/users"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/users', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://use.hoop.dev/api/users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://use.hoop.dev/api/users"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://use.hoop.dev/api/users")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"email": "jsmith@example.com",
"groups": [
"sre",
"dba"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_login_at": "2026-10-14T13:45:00Z",
"name": "John Wick",
"password": "mysecurepassword",
"picture": "",
"role": "standard",
"slack_id": "U053ELZHB53",
"status": "active",
"verified": true
}
]{
"message": "the error description"
}{
"message": "the error description"
}List Users
List the users of the organization. Pass page or page_size to get a paginated response. Only admins and auditors receive last_login_at.
curl --request GET \
--url https://use.hoop.dev/api/usersimport requests
url = "https://use.hoop.dev/api/users"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/users', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://use.hoop.dev/api/users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://use.hoop.dev/api/users"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://use.hoop.dev/api/users")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"email": "jsmith@example.com",
"groups": [
"sre",
"dba"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_login_at": "2026-10-14T13:45:00Z",
"name": "John Wick",
"password": "mysecurepassword",
"picture": "",
"role": "standard",
"slack_id": "U053ELZHB53",
"status": "active",
"verified": true
}
]{
"message": "the error description"
}{
"message": "the error description"
}Query Parameters
Filter by part of the email, ignoring case
Filter by user status
active, inactive, invited, reviewing Maximum number of items to return (1-100). When provided, enables pagination
Page number (1-based). When provided, enables pagination
Response
Array of users. With page or page_size, the {pages, data} envelope of openapi.PaginatedResponse-openapi_UserListItem
Email address of the user
Groups registered for this user
["sre", "dba"]
Unique identifier of the resource
The time of the last sign-in or access token refresh. It is null when none was recorded.
"2026-10-14T13:45:00Z"
Display name
"John Wick"
Local auth cases have a password
"mysecurepassword"
The profile picture url to display
""
Permission related to the user
- admin - Has super privileges and has access to any resource in the system
- approver - Grant access to approval routes.
- standard - Grant access to standard routes.
- unregistered - Grant access to unregistered routes. It's a transient state where the user is authenticated but is not registered. This state is only available for multi tenant environments
admin, approver, standard, unregistered "standard"
The identifier of slack to send messages to users
"U053ELZHB53"
The status of the user. Inactive users cannot access the system
active, inactive, invited, reviewing DEPRECATED in flavor of role
Was this page helpful?