Iridium Admin API

The admin API from Iridium — 9 operation(s) for admin.

GitHub OpenAPI

Operations 9

POST /admin/users Create User #
POST /admin/users/{user_id}/activate Activate User #
DELETE /admin/users/{user_id} Hard Delete User #
POST /admin/pipeline/run-all Admin Run All Pipelines #
POST /admin/test-email Test Email #
POST /admin/tos-notice Send Tos Notice #
GET /admin/overview Overview #
GET /admin/issue-reports List Issue Reports #
POST /admin/issue-reports/{report_id}/solve Solve Issue Report #

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/iridiumhqmcp-com:iridiumhqmcp-com-admin-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

iridiumhqmcp-com-admin-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Iridiumhqmcp Com Admin API
  version: 0.1.0
  description: 'Operations tagged admin across 2 of this provider''s published API definitions: openapi.json, iridiumhqmcp-com-openapi.json. Each path carries the servers of the definition it was published in.'
tags:
- name: Admin
paths:
  /admin/users:
    post:
      tags:
      - Admin
      summary: Create User
      operationId: create_user_admin_users_post
      parameters:
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/users/{user_id}/activate:
    post:
      tags:
      - Admin
      summary: Activate User
      operationId: activate_user_admin_users__user_id__activate_post
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: User Id
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/users/{user_id}:
    delete:
      tags:
      - Admin
      summary: Hard Delete User
      description: 'Permanently remove a user and everything that hangs off them. No grace period.


        Deliberately NOT shared_account.delete_user: that soft-deletes into the 30-day reactivate

        window, which is right for a person leaving and wrong for both callers here — the smoke

        suite tearing down its own fixture, and pruning seeded or junk accounts off the roster.


        A row-level DELETE lets the ondelete="CASCADE" foreign keys do the work, so this also

        removes the user''s audit rows and consent record. That is the trade: PP §8 says audit logs

        survive deletion and _PURGE_MODELS preserves them, so reach for this only when there is no

        real user relationship to document — a test fixture, a duplicate, a fake address. Use

        delete_user for an actual person.


        One admin_hard_delete row with user_id=NULL survives as the record, since anything keyed to

        the user cascades away with them.'
      operationId: hard_delete_user_admin_users__user_id__delete
      parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: User Id
      - name: force
        in: query
        required: false
        schema:
          type: boolean
          description: Delete even if a Stripe subscription exists
          default: false
          title: Force
        description: Delete even if a Stripe subscription exists
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/pipeline/run-all:
    post:
      tags:
      - Admin
      summary: Admin Run All Pipelines
      description: 'DISABLED — fan-out discovery across every account is intentionally switched off.


        Unattended people discovery must not run inside users'' accounts. Pipelines are now

        user-initiated only: POST /pipeline/run (web) or the run_outreach_pipeline MCP tool.

        The body is kept, commented, so the behaviour can be restored deliberately rather than

        reconstructed. Re-enabling also requires restoring CRON_LINE in deploy/setup_hetzner.sh,

        and now a fan-out would drive run_people_pipeline_fast — the background pipeline this

        called is deleted.'
      operationId: admin_run_all_pipelines_admin_pipeline_run_all_post
      parameters:
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/test-email:
    post:
      tags:
      - Admin
      summary: Test Email
      description: 'Send one message and report Resend''s verbatim answer. A probe, not a business action.


        Exists because diagnosing mail used to mean reading container logs and guessing: the

        transport reported a bare bool, and the reason Resend gave was discarded. Now any mail

        problem is one call — is the key valid, is the domain verified, was the address refused.'
      operationId: test_email_admin_test_email_post
      parameters:
      - name: to
        in: query
        required: true
        schema:
          type: string
          description: Recipient for the probe
          title: To
        description: Recipient for the probe
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/tos-notice:
    post:
      tags:
      - Admin
      summary: Send Tos Notice
      description: 'Email every active user that the Terms have changed. Run once per release.


        This is the notice half of notice-based consent: when CURRENT_TOS_REQUIRES_REACCEPT is

        False, nobody is blocked, so this email is the ONLY thing standing between a version bump

        and terms a user never heard about. Send it on the day you deploy the new text.


        Idempotent per version. "Have we already told this user about THIS version?" is answered

        from action_audit rather than a new column — the same trick the idle-Unipile sweep uses for

        its warning (services/heartbeat.py). Re-running only picks up whoever was missed.


        Delivery is recorded per user: send_email returns False on anything but a 2xx from Resend,

        and that lands as a failed audit row. When notice carries legal weight, "we sent it" has to

        be answerable per recipient, not assumed.


        Defaults to dry_run — the first call prints the roster so it can be eyeballed before any

        mail goes out.'
      operationId: send_tos_notice_admin_tos_notice_post
      parameters:
      - name: dry_run
        in: query
        required: false
        schema:
          type: boolean
          description: List recipients without sending
          default: true
          title: Dry Run
        description: List recipients without sending
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/overview:
    get:
      tags:
      - Admin
      summary: Overview
      description: 'The single admin read: roster, today''s usage so far, and the trailing window.


        Per-endpoint traffic is split real vs. `noise` (load-balancer scanners), the user rows

        carry today''s counters and messaging health, and `frontend` holds the same day''s browser

        numbers. The day is UTC — see the `timezone` and `date` fields.


        Named /overview rather than bare /admin because the billing gate exempts the "/admin/"

        prefix (main.py), which the bare path would not match.'
      operationId: overview_admin_overview_get
      parameters:
      - name: window
        in: query
        required: false
        schema:
          type: integer
          maximum: 365
          minimum: 1
          description: Trailing window in days
          default: 7
          title: Window
        description: Trailing window in days
      - name: user_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Add a drill-down for one user
          title: User Id
        description: Add a drill-down for one user
      - name: posthog
        in: query
        required: false
        schema:
          type: boolean
          description: Include frontend numbers from PostHog
          default: true
          title: Posthog
        description: Include frontend numbers from PostHog
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/issue-reports:
    get:
      tags:
      - Admin
      summary: List Issue Reports
      description: 'Anonymous break reports from agents, newest first. There is no user to filter on and

        none to follow up with — read these in aggregate (see db/models.py IssueReport).'
      operationId: list_issue_reports_admin_issue_reports_get
      parameters:
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter to new or solved
          title: Status
        description: Filter to new or solved
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/issue-reports/{report_id}/solve:
    post:
      tags:
      - Admin
      summary: Solve Issue Report
      description: 'Publish a report to the agent-facing list_solved_issues feed.


        The two fields you write here are the ONLY thing that feed ever returns — the submitted

        text stays private because nobody vetted it. Write them for an agent to read.'
      operationId: solve_issue_report_admin_issue_reports__report_id__solve_post
      parameters:
      - name: report_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Report Id
      - name: x-admin-key
        in: header
        required: true
        schema:
          type: string
          title: X-Admin-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SolveIssueRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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
    SolveIssueRequest:
      properties:
        public_title:
          type: string
          title: Public Title
        resolution:
          type: string
          title: Resolution
      type: object
      required:
      - public_title
      - resolution
      title: SolveIssueRequest
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CreateUserRequest:
      properties:
        email:
          type: string
          title: Email
        display_name:
          type: string
          title: Display Name
        service_client_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Service Client Id
        allow_undeliverable:
          type: boolean
          title: Allow Undeliverable
          default: false
      type: object
      required:
      - email
      - display_name
      title: CreateUserRequest
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
x-refined-from:
- openapi.json
- iridiumhqmcp-com-openapi.json
x-provenance:
  method: harvested
  publisher: Iridium
  source: https://api.iridiumhqmcp.com/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)