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

# Retrieves an institution and validates user access for a specific context

> Use this method to determine if your originating URL or institution ID is associated with an institution,
and optionally validate user access status. The properties returned can be used for branding your AI application.

**Rate Limiting:** 30 requests per minute per IP address.

**Lookup Priority:**
1. First attempts to find institution by matching `url` against registered LTI context IDs
2. If not found, falls back to direct lookup by `institutionid` (publicId)

**User Validation (optional):**
When `email` or `userid` is provided, the endpoint also validates:
- User account status (must be 'active')
- User-Institution membership status (must be 'active')

**Status Values:**
- `active`: Institution/user is active and accessible
- `inactive`: Institution or user account is inactive
- `pending`: User membership is pending approval
- `suspended`: User membership is temporarily suspended
- `invalid`: No institution found matching the provided criteria




## OpenAPI

````yaml /mdx/api-reference/admin/admin-api.json post /api/test/url
openapi: 3.0.0
info:
  title: Pria Admin API
  version: 2.0.1
  description: >-
    Pria API Documentation Praxis's developer platform is a core part of our
    mission to empower organizations to grow better. Our APIs are designed to
    enable teams of any shape or size to build robust integrations that help
    them customize and get the most value out of Pria. All Pria APIs are built
    using REST conventions and designed to have a predictable URL structure.
    <br/>  <br/>They use many standard HTTP features, including methods (POST,
    GET, PUT, DELETE) and error response codes.  <br/> <br/>All API calls are
    made under https://hiimpria.ai/api and all responses return standard JSON.
    In these docs, you'll find lists of all available endpoints for a given API,
    along with interactive code blocks for building requests. For walkthroughs
    of basic usage for these APIs, check out the API guides.
servers:
  - url: https://pria.praxislxp.com
    description: Pria API Server
security: []
tags:
  - name: Authentication
    description: User authentication, registration, and password management (/api/auth)
  - name: OAuth
    description: OAuth authentication providers - Google, GitHub, SSO (/api/auth/oauth)
  - name: User
    description: User profile management and account operations (/api/user)
  - name: User Institutions
    description: User institution memberships and switching (/api/user/institution)
  - name: User Tools
    description: Available tools for authenticated users (/api/user/tools)
  - name: Institutions
    description: Institution settings and configuration (/api/user/institution)
  - name: Conversation
    description: AI conversation and Q&A endpoints (/api/ai)
  - name: Realtime
    description: Real-time voice AI and WebRTC sessions (/api/ai/rt)
  - name: Assistant
    description: AI assistant configuration and management (/api/user/assistant)
  - name: History
    description: Conversation history and favorites (/api/user/history)
  - name: RAG
    description: >-
      Document upload, embedding, and retrieval-augmented generation
      (/api/user/files, /api/user/rag)
  - name: Setting
    description: Instance variables and settings management (/api/user/setting)
  - name: Branding
    description: Digital twin branding and customization (/api/agent/branding)
  - name: Agent
    description: Agent engagement and session management (/api/agent)
  - name: SDK Launch
    description: >-
      SDK launch token signing and verification for secure iframe embedding
      (/api/auth/sdk-sign, /api/auth/sdk-verify)
  - name: Testing
    description: Health checks, diagnostics, and test endpoints (/api/test)
  - name: Admin Accounts
    description: Account management for super admins (/api/admin/account)
  - name: Admin Institutions
    description: Institution management for admins (/api/admin/institution)
  - name: Admin Users
    description: User management for admins (/api/admin/user)
  - name: Admin Entitlements
    description: >-
      User-institution relationships and permissions
      (/api/admin/userInstitution)
  - name: Admin Sessions
    description: Session management for admins (/api/admin/session)
  - name: Admin Histories
    description: Conversation history management and analytics (/api/admin/history)
  - name: Admin Assistants
    description: AI assistant management for admins (/api/admin/assistant)
  - name: Admin Questions
    description: Institution question and prompt management (/api/admin/question)
  - name: Admin Tools
    description: Tool configuration management (/api/admin/tool)
  - name: Admin AI Models
    description: AI model configuration (/api/admin/aimodel)
  - name: Admin MCP Servers
    description: Model Context Protocol server management (/api/admin/mcpserver)
  - name: Admin Feedbacks
    description: User feedback management (/api/admin/feedback)
  - name: Admin Uploads
    description: Upload management (/api/admin/upload)
  - name: Admin Charts
    description: Analytics and visualization chart management (/api/admin/chart)
  - name: Admin Memory
    description: Admin inspection and editing of user/instance memory parameters.
  - name: Admin Usage Limits
    description: Per-user usage-vs-cap reporting and account-wide at-limit counts.
paths:
  /api/test/url:
    post:
      tags:
        - Testing
      summary: >-
        Retrieves an institution and validates user access for a specific
        context
      description: >
        Use this method to determine if your originating URL or institution ID
        is associated with an institution,

        and optionally validate user access status. The properties returned can
        be used for branding your AI application.


        **Rate Limiting:** 30 requests per minute per IP address.


        **Lookup Priority:**

        1. First attempts to find institution by matching `url` against
        registered LTI context IDs

        2. If not found, falls back to direct lookup by `institutionid`
        (publicId)


        **User Validation (optional):**

        When `email` or `userid` is provided, the endpoint also validates:

        - User account status (must be 'active')

        - User-Institution membership status (must be 'active')


        **Status Values:**

        - `active`: Institution/user is active and accessible

        - `inactive`: Institution or user account is inactive

        - `pending`: User membership is pending approval

        - `suspended`: User membership is temporarily suspended

        - `invalid`: No institution found matching the provided criteria
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestUrlRequest'
            examples:
              ltiLookup:
                summary: LTI Context URL lookup
                value:
                  url: https://domain.edu/course/12345
              institutionLookup:
                summary: Direct institution lookup
                value:
                  institutionid: bc6efd03-9d01-43e7-bd49-c4af1c54ae3a
              fullValidation:
                summary: Full user validation
                value:
                  url: https://domain.edu/course/12345
                  email: student@domain.edu
      responses:
        '200':
          description: URL test completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestUrlResponse'
              examples:
                activeInstitution:
                  summary: Active institution found
                  value:
                    ltiassigned: true
                    status: active
                    name: Acme University
                    ainame: Hugo
                    picture: https://storage.example.com/logo.png
                    publicId: bc6efd03-9d01-43e7-bd49-c4af1c54ae3a
                suspendedUser:
                  summary: User membership suspended
                  value:
                    ltiassigned: true
                    status: suspended
                    name: Acme University
                    ainame: Hugo
                    picture: https://storage.example.com/logo.png
                    publicId: bc6efd03-9d01-43e7-bd49-c4af1c54ae3a
                notFound:
                  summary: No institution found
                  value:
                    ltiassigned: false
                    status: invalid
        '400':
          description: Bad request - invalid URL format
        '500':
          description: Internal server error
components:
  schemas:
    TestUrlRequest:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: >-
            The LTI context URL to be tested. Used to find an institution by
            matching against registered LTI context IDs.
          example: https://domain.edu/7891273
        institutionid:
          type: string
          format: uuid
          description: >-
            The public ID of the institution to lookup directly. Used as
            fallback if URL lookup fails.
          example: bc6efd03-9d01-43e7-bd49-c4af1c54ae3a
        email:
          type: string
          format: email
          description: The email address of the user to check membership status for.
          example: user@domain.edu
        userid:
          type: string
          description: The LXP user ID to lookup the user by (alternative to email).
          example: lxp_12345
    TestUrlResponse:
      type: object
      properties:
        ltiassigned:
          type: boolean
          description: Indicates if the institution was found via LTI context URL match
          example: true
        name:
          type: string
          description: Name of the institution
          example: Acme University
        status:
          type: string
          description: >-
            Status of the institution, user, or user-institution membership.
            Possible values include 'active', 'inactive', 'pending',
            'suspended', 'invalid'.
          example: active
          enum:
            - active
            - inactive
            - pending
            - suspended
            - invalid
            - deleted
        ainame:
          type: string
          description: AI/Digital Twin name associated with the institution
          example: Hugo
        picture:
          type: string
          description: Picture URL for the institution branding
          example: https://storage.example.com/logo.png
        publicId:
          type: string
          format: uuid
          description: Public identifier for the institution
          example: bc6efd03-9d01-43e7-bd49-c4af1c54ae3a

````