> ## Documentation Index
> Fetch the complete documentation index at: https://docs.niadra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List profiles

> The customers of the space by latest activity, with the pseudonym and masked handles, a page at a time.



## OpenAPI

````yaml openapi/en/cell.json GET /v1/profiles
openapi: 3.1.0
info:
  title: Niadra data API
  version: '1'
  description: >-
    Writing, context, history, objects, identity, privacy and governance of one
    space. Every space has a stable address, with the space and the region in
    its name.
servers:
  - url: https://{space}.{region}.api.niadra.com
    variables:
      space:
        default: acme-prod
        description: The space, which comes in the source key.
      region:
        default: us-east-2
        description: The region of the space, which also comes in the key.
security: []
paths:
  /v1/profiles:
    get:
      tags:
        - identity
      summary: List profiles
      description: >-
        The customers of the space by their latest activity, for a person to
        browse: pseudonym, kind and

        masked identifiers, never one in full. An erased profile is not listed.
        A page may hold fewer rows than

        `limit`; the list ends where `next_cursor` is null. One receipt per
        page.


        **Authentication.** Console person token with the `security`,
        `integration` role (or admin), or a source key with the `admin` scope.
      operationId: list_profiles_v1_profiles_get
      parameters:
        - in: query
          name: order
          required: false
          schema:
            $ref: '#/components/schemas/ListOrder'
            default: last_seen_desc
          description: >-
            The order: `last_seen_desc`, the latest activity first (the
            default), or `last_seen_asc`, the longest without activity first.
          example: last_seen_desc
        - in: query
          name: kind
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/SubjectKind'
              - type: 'null'
            title: Kind
          description: 'Only profiles of this kind: `person`, `account` or `partner`.'
        - in: query
          name: cursor
          required: false
          schema:
            anyOf:
              - maxLength: 64
                type: string
              - type: 'null'
            title: Cursor
          description: The `next_cursor` of the page before, as it came.
        - in: query
          name: limit
          required: false
          schema:
            default: 50
            maximum: 100
            minimum: 1
            title: Limit
            type: integer
          description: How many rows a page, from 1 to 100; the default is 50.
          example: 50
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page_ProfileListed_'
              example:
                items:
                  - profile_id: 0192f7a1-5b10-7c3a-8e21-4d2f8a4c0e01
                    pseudonym: p_kvkv3okp7vnw3mqs
                    kind: person
                    handles:
                      - type: phone_e164
                        value: +14*****0123
                        last_seen: '2026-09-22T17:07:03Z'
                      - type: system_id
                        value: 48*13
                        last_seen: '2026-09-20T09:12:40Z'
                    handle_count: 2
                    last_seen: '2026-09-22T17:07:03Z'
                next_cursor: 1790096823000000.0192f7a15b107c3a8e214d2f8a4c0e02
          description: A page of profiles, with the cursor of the next one.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: The request does not match the contract.
      security:
        - sourceKey: []
        - personToken: []
components:
  schemas:
    ListOrder:
      enum:
        - last_seen_desc
        - last_seen_asc
      title: ListOrder
      type: string
    SubjectKind:
      enum:
        - person
        - account
        - partner
      title: SubjectKind
      type: string
      description: >-
        A person, a customer organization (`account`) or an organization that
        takes part without being a customer (`partner`).
    Page_ProfileListed_:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/ProfileListed'
          title: Items
          type: array
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
      required:
        - items
      title: Page[ProfileListed]
      type: object
    Problem:
      additionalProperties: false
      description: RFC 9457 problem details; `code` comes from the versioned error catalog.
      properties:
        code:
          title: Code
          type: string
        detail:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Detail
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Request Id
        status:
          title: Status
          type: integer
        title:
          title: Title
          type: string
        type:
          default: about:blank
          title: Type
          type: string
      required:
        - title
        - status
        - code
      title: Problem
      type: object
    ProfileListed:
      additionalProperties: false
      description: >-
        A row of the customer list: enough to recognize a customer and open
        their memory, never an

        identifier in full.
      properties:
        handle_count:
          description: How many identifiers the profile has.
          title: Handle Count
          type: integer
        handles:
          description: The three with the latest activity, the latest first.
          items:
            $ref: '#/components/schemas/ListedHandle'
          title: Handles
          type: array
        kind:
          $ref: '#/components/schemas/SubjectKind'
        last_seen:
          description: The latest activity on any of the profile's identifiers.
          format: date-time
          title: Last Seen
          type: string
        profile_id:
          format: uuid
          title: Profile Id
          type: string
        pseudonym:
          title: Pseudonym
          type: string
      required:
        - profile_id
        - pseudonym
        - kind
        - handles
        - handle_count
        - last_seen
      title: ProfileListed
      type: object
    ListedHandle:
      additionalProperties: false
      properties:
        last_seen:
          format: date-time
          title: Last Seen
          type: string
        type:
          $ref: '#/components/schemas/HandleType'
        value:
          description: >-
            Always masked, whatever the caller's role: a contact by its ends, a
            document by its last two characters, an opaque id by its two first
            and two last.
          title: Value
          type: string
      required:
        - type
        - value
        - last_seen
      title: ListedHandle
      type: object
    HandleType:
      enum:
        - phone_e164
        - wa_id
        - wa_jid
        - wa_lid
        - wa_bsuid
        - email
        - gov_id_hmac
        - app_user_id
        - system_id
        - org_registry_hmac
        - email_domain
        - anon_id
      title: HandleType
      type: string
      description: >-
        The kind of identifier. The value is classified by its format, never by
        the field it came from.
  securitySchemes:
    sourceKey:
      type: http
      scheme: bearer
      description: nia_sk_...
    personToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````