Truepill Media API

File records for patient identification photos and selfies, backed by Google Cloud Storage signed URLs — the API mints a read or write signed URL and the client transfers the bytes directly, so no image data transits the API itself. Both v1 and v2 are live.

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/truepill-media-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 email required.

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

OpenAPI Specification

truepill-media-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Truepill Media API
  description: 'Media upload and retrieval with signed read/write URLs (v1 and v2).


    Harvested verbatim from the live Truepill (FuzeRx) Swagger 2.0 contract published at https://rxapi.fuzehealth.com/swagger.json
    and split by resource domain. Operation summaries, descriptions, parameters, schemas and response
    codes are the provider''s own; only the Swagger 2.0 -> OpenAPI 3.0.3 conversion and the domain split
    are ours.'
  version: 0.0.1
  contact:
    name: FuzeRx Support
    url: https://rxdocs.fuzehealth.com
servers:
- url: https://rxapi.fuzehealth.com
  description: Production
security:
- apiKey: []
tags:
- name: media
  description: Media upload and retrieval with signed read/write URLs (v1 and v2).
paths:
  /api/v1/media:
    post:
      summary: Create media record by file name provided
      operationId: postApiV1Media
      tags:
      - media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMedia'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model160'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model3'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model161'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /api/v1/media/{id}:
    get:
      summary: Get media by id
      operationId: getApiV1MediaId
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model54'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /api/v1/media/{id}/signed-url/read:
    get:
      summary: Generate signing-url for read file from google storage
      operationId: getApiV1MediaIdSignedurlRead
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
                pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model108'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '422':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model109'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /api/v1/media/{id}/signed-url/write:
    get:
      summary: Generate signing-url for write file in to google storage
      operationId: getApiV1MediaIdSignedurlWrite
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
                pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model108'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '422':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model109'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /api/v2/media:
    post:
      summary: Create media record by file name provided
      operationId: postApiV2Media
      tags:
      - media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMediaV2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model188'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model3'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model161'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /api/v2/media/{id}:
    get:
      summary: Generate signing-url for read file from google storage
      operationId: getApiV2MediaId
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model75'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v1/media:
    post:
      summary: Create media record by file name provided
      operationId: postV1Media
      tags:
      - media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMedia'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model160'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model3'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model161'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v1/media/{id}:
    get:
      summary: Get media by id
      operationId: getV1MediaId
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model54'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v1/media/{id}/signed-url/read:
    get:
      summary: Generate signing-url for read file from google storage
      operationId: getV1MediaIdSignedurlRead
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
                pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model108'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '422':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model109'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v1/media/{id}/signed-url/write:
    get:
      summary: Generate signing-url for write file in to google storage
      operationId: getV1MediaIdSignedurlWrite
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
                pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model108'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '422':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model109'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v2/media:
    post:
      summary: Create media record by file name provided
      operationId: postV2Media
      tags:
      - media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMediaV2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model188'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model3'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model161'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
  /v2/media/{id}:
    get:
      summary: Generate signing-url for read file from google storage
      operationId: getV2MediaId
      tags:
      - media
      parameters:
      - name: id
        in: path
        required: true
        description: Should be a uuid
        schema:
          type: string
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model75'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model55'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model56'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model9'
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: API key passed in the Authorization header. Separate keys are issued for sandbox and
        production.
  schemas:
    CreateMedia:
      type: object
      properties:
        fileName:
          type: string
          description: File name which is unique uuid identifier
          example: 812750e4-1cae-44e5-8212-a9a2f9776fca
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        title:
          type: string
          description: Human readable media title
          example: Skin damage media
      required:
      - fileName
    CreateMediaV2:
      type: object
      properties:
        name:
          type: string
          description: Human readable media title
          example: Skin damage media
          maxLength: 255
      required:
      - name
    Model108:
      type: object
      properties:
        statusCode:
          type: number
          example: 403
        error:
          type: string
          example: Forbidden
        message:
          type: string
          example: This file cannot be downloaded
    Model109:
      type: object
      properties:
        statusCode:
          type: number
          example: 422
        error:
          type: string
          example: Unprocessable Entity
        message:
          type: string
          example: File with this name already exists
    Model160:
      type: object
      properties:
        id:
          type: string
          example: 059d52b6-b2b0-4bd1-97df-082b1e2196c1
        createdAt:
          type: string
          description: Date when media was uploaded to the bucket
          example: '2021-11-09T08:00:00.000Z'
        updatedAt:
          type: string
          description: Date when media status had been changed
          example: '2021-11-09T08:00:00.000Z'
        title:
          type: string
          description: Human readable media title
          example: Skin damage media
        status:
          type: string
          description: Captures whether we are currently scanning the media, or whether it is safe or
            not. Quarantined medias are inaccessible
          example: AVAILABLE
    Model161:
      type: object
      properties:
        statusCode:
          type: number
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: Media not found
    Model188:
      type: object
      properties:
        id:
          type: string
          example: 059d52b6-b2b0-4bd1-97df-082b1e2196c1
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        name:
          type: string
          description: Human readable media title
          example: Right ear
        status:
          type: string
          description: Captures whether we are currently scanning the media, or whether it is safe or
            not. Quarantined medias are inaccessible
          example: AVAILABLE
          enum:
          - REVIEWING
          - AVAILABLE
          - QUARANTINE
          - AWAITING_UPLOADING
        upload_url:
          type: string
          description: 'This link is for file upload using PUT. Lifetime 24h. File limit 4 GB using header:
            x-goog-content-length-range:0,4000000000'
          example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
          x-format:
            uri: true
      required:
      - id
      - name
      - status
      - upload_url
    Model3:
      type: object
      properties:
        statusCode:
          type: number
          example: 401
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Invalid credentials
    Model54:
      type: object
      properties:
        id:
          type: string
          example: 059d52b6-b2b0-4bd1-97df-082b1e2196c1
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        createdAt:
          type: string
          example: '2021-11-09T08:00:00.000Z'
        updatedAt:
          type: string
          example: '2021-11-09T08:00:00.000Z'
        title:
          type: string
          example: Right ear
        status:
          type: string
          example: AVAILABLE
    Model55:
      type: object
      properties:
        statusCode:
          type: number
          example: 401
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Invalid Credentials passed
    Model56:
      type: object
      properties:
        statusCode:
          type: number
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: Media with id not found
    Model75:
      type: object
      properties:
        id:
          type: string
          example: 059d52b6-b2b0-4bd1-97df-082b1e2196c1
          pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
        name:
          type: string
          example: Right ear
        status:
          type: string
          example: AVAILABLE
          enum:
          - REVIEWING
          - AVAILABLE
          - QUARANTINE
          - AWAITING_UPLOADING
        url:
          type: string
          description: This link is for read file using GET. Lifetime 24h.
          example: https://storage.googleapis.com/1512a193-065b-4360-bd1f-48b8a260f140?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=upload-scanner%40serviceaccount.com%2F20211126%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20211126T130011Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=123
      required:
      - id
      - name
      - status
      - url
    Model9:
      type: object
      properties:
        statusCode:
          type: number
          example: 500
        error:
          type: string
          example: An internal server error occurred
        message:
          type: string
          example: An internal server error occurred