infinihash-com Admin API

The Admin API from infinihash-com — 20 operation(s) for admin.

Operations 25

GET /api/admin/orgs/{org_id}/members Admin Org Members #
POST /api/admin/orgs/{org_id}/members Admin Add Org Member #
DELETE /api/admin/orgs/{org_id}/members/{user_id} Admin Remove Org Member #
GET /api/admin/users/{user_id}/orgs Admin User Orgs #
GET /api/admin/orgs Admin List Orgs #
POST /api/admin/orgs Admin Create Org #
GET /api/admin/orgs/{org_id} Admin Get Org #
PATCH /api/admin/orgs/{org_id} Admin Update Org #
POST /api/admin/users/{user_id}/assign-org Admin Assign Org #
GET /api/admin/leads List Leads #
POST /api/admin/create-user Admin Create User #
GET /api/admin/users Admin List Users #
PATCH /api/admin/users/{user_id} Admin Update User #
DELETE /api/admin/users/{user_id} Admin Delete User #
GET /api/admin/users/{user_id} Admin Get User #
GET /api/admin/stats Admin Stats #
GET /admin Auth Admin Panel #
POST /api/admin/users/{user_id}/set-password Admin Set Password #
POST /api/admin/users/{user_id}/reset-mfa Admin Reset Mfa #
POST /api/admin/bulk-import Admin Bulk Import #
POST /api/admin/users/{user_id}/toggle-access Admin Toggle Access #
GET /api/admin/passkeys Admin List Passkeys #
GET /api/admin/artifacts/{entityId} List artifacts for an entity (admin) #
POST /api/admin/artifacts/{id}/legal-hold Set or clear an artifact legal hold (admin) #
POST /api/admin/artifacts/purge-expired Run the artifact retention purge (admin) #

Specifications

Schemas & Data

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/infinihash-com:infinihash-com-admin-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

infinihash-com-admin-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Infinihash Com Admin API
  version: 1.0.0
  description: 'Operations tagged Admin across 2 of this provider''s published API definitions: auth-infinihash-openapi.json, kyc-api-infinihash-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://kyc-api.infinihash.com
  description: Production
tags:
- name: Admin
paths:
  /api/admin/orgs/{org_id}/members:
    get:
      summary: Admin Org Members
      operationId: admin_org_members_api_admin_orgs__org_id__members_get
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
          title: Org Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
    post:
      summary: Admin Add Org Member
      description: 'Add a user to an org. Body: {user_id, is_primary?}'
      operationId: admin_add_org_member_api_admin_orgs__org_id__members_post
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
          title: Org Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/orgs/{org_id}/members/{user_id}:
    delete:
      summary: Admin Remove Org Member
      operationId: admin_remove_org_member_api_admin_orgs__org_id__members__user_id__delete
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
          title: Org Id
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/users/{user_id}/orgs:
    get:
      summary: Admin User Orgs
      operationId: admin_user_orgs_api_admin_users__user_id__orgs_get
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/orgs:
    get:
      summary: Admin List Orgs
      operationId: admin_list_orgs_api_admin_orgs_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Admin
    post:
      summary: Admin Create Org
      operationId: admin_create_org_api_admin_orgs_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgCreate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/orgs/{org_id}:
    get:
      summary: Admin Get Org
      operationId: admin_get_org_api_admin_orgs__org_id__get
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
          title: Org Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
    patch:
      summary: Admin Update Org
      operationId: admin_update_org_api_admin_orgs__org_id__patch
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
          title: Org Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/users/{user_id}/assign-org:
    post:
      summary: Admin Assign Org
      description: 'Assign a user to an org. Body: {org_id: str}'
      operationId: admin_assign_org_api_admin_users__user_id__assign_org_post
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/leads:
    get:
      summary: List Leads
      description: List all leads. Requires X-Admin-Secret header.
      operationId: list_leads_api_admin_leads_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Admin
  /api/admin/create-user:
    post:
      summary: Admin Create User
      description: Admin endpoint to create users. Requires X-Admin-Secret header.
      operationId: admin_create_user_api_admin_create_user_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateUser'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/users:
    get:
      summary: Admin List Users
      description: List all users. Requires X-Admin-Secret header.
      operationId: admin_list_users_api_admin_users_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Admin
  /api/admin/users/{user_id}:
    patch:
      summary: Admin Update User
      operationId: admin_update_user_api_admin_users__user_id__patch
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateUser'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
    delete:
      summary: Admin Delete User
      operationId: admin_delete_user_api_admin_users__user_id__delete
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
    get:
      summary: Admin Get User
      operationId: admin_get_user_api_admin_users__user_id__get
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/stats:
    get:
      summary: Admin Stats
      operationId: admin_stats_api_admin_stats_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Admin
  /admin:
    get:
      summary: Auth Admin Panel
      operationId: auth_admin_panel_admin_get
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
      tags:
      - Admin
  /api/admin/users/{user_id}/set-password:
    post:
      summary: Admin Set Password
      operationId: admin_set_password_api_admin_users__user_id__set_password_post
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminSetPassword'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/users/{user_id}/reset-mfa:
    post:
      summary: Admin Reset Mfa
      description: 'Account recovery for a user who has lost their MFA device AND their

        backup codes. This is a separate, staff-verified flow (X-Admin-Secret): the

        user''s identity is verified out of band by staff BEFORE this is called (see

        MFA_RECOVERY.md). It clears the TOTP enrolment so the user can sign in with

        their password / passkey and re-enrol MFA at /api/mfa/setup. It never

        weakens the sign-in check itself and is not reachable by the user (B4).'
      operationId: admin_reset_mfa_api_admin_users__user_id__reset_mfa_post
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/bulk-import:
    post:
      summary: Admin Bulk Import
      description: 'Bulk-import users. Skips rows whose email already exists (idempotent).

        Password hashes are passed through unchanged (bcrypt on both sides).'
      operationId: admin_bulk_import_api_admin_bulk_import_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkImportRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/users/{user_id}/toggle-access:
    post:
      summary: Admin Toggle Access
      operationId: admin_toggle_access_api_admin_users__user_id__toggle_access_post
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          title: User Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Admin
  /api/admin/passkeys:
    get:
      summary: Admin List Passkeys
      description: List all registered passkeys across all users (admin view)
      operationId: admin_list_passkeys_api_admin_passkeys_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Admin
  /api/admin/artifacts/{entityId}:
    get:
      x-route-source:
        file: routes/artifacts.js
        method: get
        path: /artifacts/:entityId
      summary: List artifacts for an entity (admin)
      description: 'Lists all non-deleted stored artifacts for the entity id, newest first, with retention dates and legal-hold state. Admin-only: requires the X-Admin-Secret header (not an API key).'
      tags:
      - Admin
      operationId: listEntityArtifacts
      parameters:
      - name: entityId
        in: path
        required: true
        schema:
          type: string
        description: entityId
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      responses:
        '200':
          description: Artifacts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtifactList'
        '403':
          description: Missing or wrong X-Admin-Secret header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Failed to list artifacts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://kyc-api.infinihash.com
      description: Production
  /api/admin/artifacts/{id}/legal-hold:
    post:
      x-route-source:
        file: routes/artifacts.js
        method: post
        path: /artifacts/:id/legal-hold
      summary: Set or clear an artifact legal hold (admin)
      description: 'Sets a legal hold on an artifact (path `id` is the numeric artifact id, not a submission id). Supplying a string `reason` places the hold; omitting it or passing null CLEARS the hold. Held artifacts are skipped by the retention purge. Admin-only: requires the X-Admin-Secret header (not an API key).'
      tags:
      - Admin
      operationId: setArtifactLegalHold
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: KYC submission id
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                reason:
                  type:
                  - string
                  - 'null'
                  default: null
                  description: Reason for the hold; null or omitted clears it.
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      responses:
        '200':
          description: Hold updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtifactLegalHoldResult'
        '400':
          description: Invalid artifact id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing or wrong X-Admin-Secret header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Artifact not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Failed to update legal hold
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://kyc-api.infinihash.com
      description: Production
  /api/admin/artifacts/purge-expired:
    post:
      x-route-source:
        file: routes/artifacts.js
        method: post
        path: /artifacts/purge-expired
      summary: Run the artifact retention purge (admin)
      description: 'Soft-deletes every artifact whose retention date has passed and that is not under legal hold. Normally run on a schedule. Admin-only: requires the X-Admin-Secret header (not an API key).'
      tags:
      - Admin
      operationId: purgeExpiredArtifacts
      security:
      - ApiKeyAuth: []
      - BearerAuth: []
      responses:
        '200':
          description: Purge completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtifactPurgeResult'
        '403':
          description: Missing or wrong X-Admin-Secret header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Purge failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://kyc-api.infinihash.com
      description: Production
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    OrgUpdate:
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        primary_color:
          anyOf:
          - type: string
          - type: 'null'
          title: Primary Color
        logo_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Logo Url
        kyc_api_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Kyc Api Key
        kyt_api_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Kyt Api Key
        is_active:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Is Active
      type: object
      title: OrgUpdate
    BulkImportRequest:
      properties:
        users:
          items:
            $ref: '#/components/schemas/BulkImportUser'
          type: array
          title: Users
      type: object
      required:
      - users
      title: BulkImportRequest
    BulkImportUser:
      properties:
        email:
          type: string
          format: email
          title: Email
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        password_hash:
          anyOf:
          - type: string
          - type: 'null'
          title: Password Hash
        email_verified:
          type: boolean
          title: Email Verified
          default: true
        created_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Created At
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        access_myai:
          type: boolean
          title: Access Myai
          default: true
        access_kyt:
          type: boolean
          title: Access Kyt
          default: true
        access_kyc:
          type: boolean
          title: Access Kyc
          default: true
        access_billing:
          type: boolean
          title: Access Billing
          default: false
      type: object
      required:
      - email
      title: BulkImportUser
    OrgCreate:
      properties:
        name:
          type: string
          title: Name
        slug:
          type: string
          title: Slug
        primary_color:
          type: string
          title: Primary Color
          default: '#c9a84c'
        logo_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Logo Url
        kyc_api_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Kyc Api Key
        kyt_api_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Kyt Api Key
      type: object
      required:
      - name
      - slug
      title: OrgCreate
    AdminSetPassword:
      properties:
        password:
          type: string
          title: Password
      type: object
      required:
      - password
      title: AdminSetPassword
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    AdminCreateUser:
      properties:
        email:
          type: string
          title: Email
        password:
          type: string
          title: Password
        name:
          type: string
          title: Name
        role:
          type: string
          title: Role
          default: user
        access_kyt:
          type: boolean
          title: Access Kyt
          default: true
        access_kyc:
          type: boolean
          title: Access Kyc
          default: true
        access_myai:
          type: boolean
          title: Access Myai
          default: true
        access_billing:
          type: boolean
          title: Access Billing
          default: false
      type: object
      required:
      - email
      - password
      - name
      title: AdminCreateUser
    AdminUpdateUser:
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        role:
          anyOf:
          - type: string
          - type: 'null'
          title: Role
        is_active:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Is Active
        email_verified:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Email Verified
        access_myai:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Access Myai
        access_kyt:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Access Kyt
        access_kyc:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Access Kyc
        access_billing:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Access Billing
      type: object
      title: AdminUpdateUser
    ArtifactList:
      type: object
      required:
      - ok
      - artifacts
      properties:
        ok:
          type: boolean
          enum:
          - true
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/ArtifactMetadata'
    ArtifactLegalHoldResult:
      type: object
      required:
      - ok
      - artifact
      properties:
        ok:
          type: boolean
          enum:
          - true
        artifact:
          $ref: '#/components/schemas/ArtifactMetadata'
    ArtifactMetadata:
      type: object
      description: Raw artifact_metadata row (snake_case column names; BigInt columns returned as numbers).
      properties:
        id:
          type: integer
        entity_id:
          type: string
        artifact_type:
          type: string
        storage_path:
          type: string
        file_size_bytes:
          type:
          - integer
          - 'null'
        mime_type:
          type:
          - string
          - 'null'
        retention_until:
          type: string
          format: date-time
        legal_hold:
          type: boolean
        legal_hold_reason:
          type:
          - string
          - 'null'
        created_at:
          type:
          - string
          - 'null'
          format: date-time
        deleted_at:
          type:
          - string
          - 'null'
          format: date-time
      additionalProperties: true
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    ArtifactPurgeResult:
      type: object
      required:
      - ok
      - purged
      properties:
        ok:
          type: boolean
          enum:
          - true
        purged:
          type: integer
          description: Number of artifacts soft-deleted.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer
x-refined-from:
- auth-infinihash-openapi.json
- kyc-api-infinihash-openapi.json