Flume Health Account Access API

The Account Access API from Flume Health — 4 operation(s) for account access.

Operations 5

GET /api/v1/accountAccessGrants List account access grants #
POST /api/v1/accountAccessGrants Request an account access grant #
POST /api/v1/accountAccessGrants/{id}:approve Approve an account access grant #
POST /api/v1/accountAccessGrants/{id}:deny Deny an account access grant #
POST /api/v1/accountAccessGrants/{id}:revoke Revoke an account access grant #

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/flume-health:flume-health-account-access-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

flume-health-account-access-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'The API for Relay by Flume Health.


    For more information about how Flume can power your health plan, please contact us.


    Redoc | Swagger - Try It'
  title: Flume Console Account Access API
  contact: {}
  version: '1.0'
  x-logo:
    altText: Flume Health
    url: https://public-static.flume.health/front/logo-margin-512.png
servers:
- url: https://console.flumehealth.com/
- url: http://console.flumehealth.com/
tags:
- name: Account Access
paths:
  /api/v1/accountAccessGrants:
    get:
      description: Lists account_access grants across accounts. requester=me (default) returns the caller's own requests. requester=approvable returns other people's pending requests on accounts the caller may approve for. At most 200 rows, newest first. SystemAdmin only.
      tags:
      - Account Access
      summary: List account access grants
      operationId: listAccountAccessGrants
      parameters:
      - description: me (default) or approvable
        name: requester
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discovery.AccountAccessGrantListResponse'
        '400':
          description: unknown requester value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
      - OAuth2Implicit:
        - openid
        - profile
        - email
    post:
      description: 'A Flume SystemAdmin asks to act inside one customer account (DEC-040). The account comes from the body; X-Flume-Account-ID is not read. The grant starts pending. A second person who is an approver for that account approves it and sets the expiry; the requester never approves their own grant. The grant does not gate entry: a SystemAdmin enters any account by role (FL-32223). While the grant is in force, requests that name the account with X-Flume-Account-ID (REST or MCP) or account_id (MCP) carry the grant on their scope, and each use is recorded before the request is served. SystemAdmin only.'
      tags:
      - Account Access
      summary: Request an account access grant
      operationId: requestAccountAccessGrant
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discovery.AccountAccessGrantReadModel'
        '400':
          description: own account, missing reason, or an expiry in the past
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '403':
          description: the caller is not a SystemAdmin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '404':
          description: no such account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
      - OAuth2Implicit:
        - openid
        - profile
        - email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/discovery.AccountAccessCreateRequest'
        description: The account, the reason and a proposed expiry
        required: true
  /api/v1/accountAccessGrants/{id}:approve:
    post:
      description: 'Approves a pending account_access grant. The caller must be the root approver, a global approver, or an approver on the grant''s account, and must not be the requester (no exception for the root approver). expireTime is required: the approver sets the grant''s expiry.'
      tags:
      - Account Access
      summary: Approve an account access grant
      operationId: approveAccountAccessGrant
      parameters:
      - description: Grant (session) id
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discovery.AccountAccessGrantReadModel'
        '400':
          description: missing or past expireTime, or the grant is not pending
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '403':
          description: not an approver for the account, or the requester
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
      - OAuth2Implicit:
        - openid
        - profile
        - email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/discovery.SessionApproveRequest'
        description: expireTime (required) and an optional comment
        required: true
  /api/v1/accountAccessGrants/{id}:deny:
    post:
      description: Denies a pending account_access grant. An approver for the account denies it; the requester may withdraw their own request.
      tags:
      - Account Access
      summary: Deny an account access grant
      operationId: denyAccountAccessGrant
      parameters:
      - description: Grant (session) id
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discovery.AccountAccessGrantReadModel'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
      - OAuth2Implicit:
        - openid
        - profile
        - email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/discovery.SessionDenyRequest'
        description: Reason
        required: true
  /api/v1/accountAccessGrants/{id}:revoke:
    post:
      description: Ends an account_access grant now. The requester or an approver for the account may revoke it. Requests after the revoke no longer carry the grant. This does not end the SystemAdmin's access to the account, which comes from the role (FL-32223).
      tags:
      - Account Access
      summary: Revoke an account access grant
      operationId: revokeAccountAccessGrant
      parameters:
      - description: Grant (session) id
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discovery.AccountAccessGrantReadModel'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
      - OAuth2Implicit:
        - openid
        - profile
        - email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/discovery.SessionRevokeRequest'
        description: Optional reason
components:
  schemas:
    discovery.SessionRevokeRequest:
      type: object
      properties:
        reason:
          type: string
    discovery.SessionStatus:
      type: string
      enum:
      - pending
      - approved
      - denied
      - expired
      - revoked
      - cancelled
      - extension_pending
      x-enum-varnames:
      - SessionStatusPending
      - SessionStatusApproved
      - SessionStatusDenied
      - SessionStatusExpired
      - SessionStatusRevoked
      - SessionStatusCancelled
      - SessionStatusExtensionPending
    responses.ErrorResponse:
      type: object
      properties:
        code:
          type: integer
        details:
          type: array
          items:
            type: string
        message:
          type: string
    discovery.SessionGrantReadModel:
      type: object
      properties:
        connectionId:
          type: integer
        connectionName:
          type: string
    discovery.AccountAccessCreateRequest:
      description: Request to act inside one customer account for a limited time.
      type: object
      required:
      - accountId
      - expireTime
      - reason
      properties:
        accountId:
          description: The account to act inside. Must not be the caller's own account.
          type: integer
          example: 42
        expireTime:
          description: 'The expiry the requester proposes (RFC3339, in the future). The

            approver sets the enforced expiry at approval.'
          type: string
          example: '2026-10-12T18:00:00Z'
        reason:
          description: Why the caller needs to act inside the account. The approver reads it.
          type: string
          example: Investigate a failed trade for a support ticket
    discovery.GrantType:
      type: string
      enum:
      - data_access
      - approver_access
      - subscription_access
      - workspace_access
      - account_access
      x-enum-varnames:
      - GrantTypeDataAccess
      - GrantTypeApproverAccess
      - GrantTypeSubscriptionAccess
      - GrantTypeWorkspaceAccess
      - GrantTypeAccountAccess
    discovery.AccountAccessGrantListResponse:
      description: account_access grants, newest first.
      type: object
      properties:
        grants:
          type: array
          items:
            $ref: '#/components/schemas/discovery.AccountAccessGrantReadModel'
    discovery.AccountAccessGrantReadModel:
      description: An account_access grant and the account it opens.
      type: object
      properties:
        accountId:
          description: The account the grant opens.
          type: integer
          example: 42
        approvalComment:
          description: Optional comment from the approver
          type: string
        approvedAt:
          description: When this session was approved
          type: string
        approverEmail:
          description: Email of the approver who approved/denied this request
          type: string
          example: admin@example.com
        canGrantApproverAccess:
          description: 'If true and grantType is "approver_access", this approver can grant approver access to others.

            Only the root approver can set this to true.'
          type: boolean
          example: false
        createdAt:
          description: When this session request was created
          type: string
        denialReason:
          description: Reason given if the session was denied
          type: string
        expireTime:
          description: 'User-requested expiration time (RFC3339 format). Set by requester in SessionCreateRequest.

            On approval, this value is typically copied to ExpiresAt (which is the enforced expiration).'
          type: string
          example: '2024-12-31T23:59:59Z'
        expiresAt:
          description: 'Actual enforced expiration time. Set on approval (typically = ExpireTime, but approver may adjust).

            This is the authoritative expiration used for session validity checks.'
          type: string
        grantAllConnections:
          description: 'Wildcard scope: when true, this data_access session covers every enabled

            connection in its account at query time (resolved live, so connections

            added after approval are automatically covered). Applicable only

            when grantType=data_access.'
          type: boolean
          example: false
        grantType:
          description: 'Type of access granted: "data_access" (execute queries), "approver_access"

            (approve sessions), "subscription_access" (self-attested, off-gateway

            AI CLI grant with no connection scope), "workspace_access" (open one

            workspace''s artifacts without membership), or "account_access" (a Flume

            SystemAdmin acts inside one customer account).'
          enum:
          - data_access
          - approver_access
          - subscription_access
          - workspace_access
          - account_access
          allOf:
          - $ref: '#/components/schemas/discovery.GrantType'
          example: data_access
        grants:
          description: 'Connections this session grants access to. Omitted from the JSON

            payload when GrantAllConnections is true (the slice is nil and

            `omitempty` drops it) — clients should treat a missing `grants`

            field as "no explicit grants" and rely on `grantAllConnections`

            to know whether the wildcard scope applies.'
          type: array
          items:
            $ref: '#/components/schemas/discovery.SessionGrantReadModel'
        id:
          description: Unique identifier for this session (UUID format)
          type: string
          example: 550e8400-e29b-41d4-a716-446655440000
        reason:
          description: Business justification for requesting access
          type: string
          example: Need to investigate claim processing issue
        recipientEmail:
          description: 'For approver_access grants: the email of the user receiving approver rights.

            Distinguishes requester (granter) from recipient (grantee) in the delegation chain.'
          type: string
          example: newapprover@example.com
        requesterEmail:
          description: Email of the user who requested this session
          type: string
          example: user@example.com
        revokedAt:
          description: When this session was manually revoked (if applicable)
          type: string
        revokedBy:
          description: Email of user who revoked the session
          type: string
        status:
          description: 'Current status: pending, approved, denied, expired, revoked, cancelled, or extension_pending'
          enum:
          - pending
          - approved
          - denied
          - expired
          - revoked
          - cancelled
          - extension_pending
          allOf:
          - $ref: '#/components/schemas/discovery.SessionStatus'
          example: approved
        updatedAt:
          description: When this session was last updated
          type: string
        workspaceId:
          description: 'For workspace_access grants: the workspace the grant opens.'
          type: string
          example: 01928f6e-7a3b-7c41-9a2e-3f5d8b1c2e4a
    discovery.SessionDenyRequest:
      type: object
      required:
      - reason
      properties:
        reason:
          type: string
    discovery.SessionApproveRequest:
      type: object
      properties:
        comment:
          type: string
        expireTime:
          description: 'The expiry the approver sets (RFC3339, in the future). Required to

            approve an account_access grant (DEC-040, FL-32116), where the approver

            sets the length and the requester''s expireTime is only a proposal.

            Refused for every other grant type.'
          type: string
          example: '2026-10-12T18:00:00Z'
  securitySchemes:
    OAuth2Implicit:
      type: oauth2
      flows:
        implicit:
          scopes:
            email: User email address
            openid: OpenID Connect scope
            profile: User profile information
          authorizationUrl: https://auth.flumehealth.com/authorize?audience=https://console.flumehealth.com/api
x-provenance:
  method: harvested
  publisher: Flume Health
  source: https://console.flumehealth.com/api/docs/docs.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)