curl --request GET \
--url https://api.identity.v2.portao3.com.br/realms/{realmId}/usersimport requests
url = "https://api.identity.v2.portao3.com.br/realms/{realmId}/users"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/users")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.identity.v2.portao3.com.br/realms/{realmId}/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{
"next": "NmEzZjljMjFlNGIwN2Q1YThjMTJmM2U5",
"items": [
{
"id": "8f1c2d3e-4b5a-4c6d-9e7f-a1b2c3d4e5f6",
"email": "ana.souza@acme.com.br",
"firstName": "Ana",
"lastName": "Souza",
"cpf": "52998224725",
"status": "ACTIVE",
"statusCode": "USER_ACTIVE",
"realm": {
"id": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"level": "USER",
"name": ""
},
"hasMfa": true,
"hasPin": true,
"hasFacialBiometric": true,
"pinErrorsCount": 0,
"mfaErrorsCount": 0,
"createdAt": "2026-03-02T14:21:07.512Z",
"updatedAt": "2026-10-13T18:43:50.746Z",
"createdBy": "43230779-2cfb-4525-a40c-77fbf15e68f0",
"updatedBy": "43230779-2cfb-4525-a40c-77fbf15e68f0",
"deletedBy": "",
"organizations": [
{
"id": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"level": "USER",
"legalName": "Acme Comércio de Alimentos Ltda",
"tradingName": "Acme Alimentos"
}
],
"birthdate": "1990-05-17T00:00:00.000Z",
"phone": "+5511987654321",
"customFields": {}
}
]
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "IDENTITY",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "ids",
"message": "Too big: expected array to have <=100 items",
"code": "IDS_MAX"
}
]
}List users
Lists the users of your realm.
curl --request GET \
--url https://api.identity.v2.portao3.com.br/realms/{realmId}/usersimport requests
url = "https://api.identity.v2.portao3.com.br/realms/{realmId}/users"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/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://api.identity.v2.portao3.com.br/realms/{realmId}/users")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.identity.v2.portao3.com.br/realms/{realmId}/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{
"next": "NmEzZjljMjFlNGIwN2Q1YThjMTJmM2U5",
"items": [
{
"id": "8f1c2d3e-4b5a-4c6d-9e7f-a1b2c3d4e5f6",
"email": "ana.souza@acme.com.br",
"firstName": "Ana",
"lastName": "Souza",
"cpf": "52998224725",
"status": "ACTIVE",
"statusCode": "USER_ACTIVE",
"realm": {
"id": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"level": "USER",
"name": ""
},
"hasMfa": true,
"hasPin": true,
"hasFacialBiometric": true,
"pinErrorsCount": 0,
"mfaErrorsCount": 0,
"createdAt": "2026-03-02T14:21:07.512Z",
"updatedAt": "2026-10-13T18:43:50.746Z",
"createdBy": "43230779-2cfb-4525-a40c-77fbf15e68f0",
"updatedBy": "43230779-2cfb-4525-a40c-77fbf15e68f0",
"deletedBy": "",
"organizations": [
{
"id": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"level": "USER",
"legalName": "Acme Comércio de Alimentos Ltda",
"tradingName": "Acme Alimentos"
}
],
"birthdate": "1990-05-17T00:00:00.000Z",
"phone": "+5511987654321",
"customFields": {}
}
]
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "IDENTITY",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "ids",
"message": "Too big: expected array to have <=100 items",
"code": "IDS_MAX"
}
]
}ids, status, realmLevel (the access level in the realm), hasPin, hasMfa, org (members of one organization), or a text match on name, email or document. A list filter takes its values comma-separated (?status=ACTIVE,IN_ONBOARDING); repeating the parameter (?status=ACTIVE&status=IN_ONBOARDING) works too. A page holds up to 100 users (limit); send the previous page’s next cursor for the following one.Path Parameters
Query Parameters
Only the users with these IDs.
Format: UUID
Example (comma-separated list): ?ids=8f1c2d3e-4b5a-4c6d-9e7f-a1b2c3d4e5f6,29bfc458-6d62-4e37-9a89-dc620926bae5
100Only users whose first or last name contains each word of this text (case-insensitive), or whose e-mail contains the whole text.
200Only users whose e-mail contains this text (case-insensitive).
200Only users whose document (CPF) contains these characters. Punctuation is ignored, so 123.456 and 123456 match the same users.
32Only members of this organization.
64Only users in one of these statuses.
Example (comma-separated list): ?status=ACTIVE,IN_ONBOARDING
IN_ONBOARDING, CREATING, ACTIVE, DEACTIVATED, BLOCKED Only users with one of these access levels in the realm.
Example: ?realmLevel=ADMIN
ADMIN, USER Only users who set up a transaction PIN (true) or did not (false).
Example: ?hasPin=true
Only users who enabled multi-factor authentication (true) or did not (false).
Example: ?hasMfa=true
Page size, 1–100. Defaults to 15.
1 <= x <= 100Cursor returned as next by the previous page. Omit for the first page.
Field to sort by. Defaults to createdAt.
64Sort direction, ASC or DESC. Defaults to DESC (newest first).
8