Medigo second-opinions API

Professional review of a diagnosis or treatment already suggested by a doctor

Operations 7

POST /second-opinions Create a Second Opinion request #
GET /second-opinions/{id} Get a second opinion request #
PATCH /second-opinions/{id} Update a second opinion request #
POST /second-opinions/{id}/messages Add a message to a second opinion request #
GET /second-opinions/{id}/messages List messages of a second opinion request #
GET /second-opinions/{id}/attachments List attachments of a second opinion request #
GET /second-opinions/{id}/attachments/{uuid}/content Download second opinion attachments #

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/medigo-second-opinions-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

medigo-second-opinions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Welcome to the official documentation for MEDIGO REST API. Your are seeing the documentation for **version 2**, the latest.

    [Click here](../v1/) for V1 documentation.


    ### Debug Info for Reporting Bugs


    If you need some support for the API usage or wish to report a bug in MEDIGO API, we include the additional `Trace-Id`

    header in every response that you should send along when interacting with MEDIGO support team.

    '
  version: 2.0.0
  title: MEDIGO attachments Second Opinions API
  contact:
    name: the API Support
    email: itops@medigo.com
servers:
- url: /v2
tags:
- name: second-opinions
  description: Professional review of a diagnosis or treatment already suggested by a doctor
paths:
  /second-opinions:
    post:
      tags:
      - second-opinions
      summary: Create a Second Opinion request
      description: ''
      operationId: createSecondOpinion
      security:
      - partner_token: []
      responses:
        201:
          description: The second opinion request was successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecondOpinion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecondOpinion'
        description: New second opinion to be created
  /second-opinions/{id}:
    get:
      tags:
      - second-opinions
      summary: Get a second opinion request
      description: ''
      operationId: getSecondOpinion
      parameters:
      - in: path
        name: id
        required: true
        description: Id of second opinion to be fetched
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        200:
          description: The second opinion request was found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecondOpinion'
    patch:
      tags:
      - second-opinions
      summary: Update a second opinion request
      description: "Please note the following:\n  - You only need to provide the updated fields, the previously input data will remain\n  - The response will contain the entire new state of the second opinion object\n"
      operationId: updateSecondOpinion
      parameters:
      - in: path
        name: id
        required: true
        description: Id of second opinion to be updated
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        200:
          description: The second opinion request was successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecondOpinion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecondOpinion'
        description: Partial Second opinion object to be updated
  /second-opinions/{id}/messages:
    post:
      tags:
      - second-opinions
      summary: Add a message to a second opinion request
      description: ''
      operationId: postSecondOpinionMessage
      parameters:
      - in: path
        name: id
        required: true
        description: Id of related second opinion
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        201:
          description: The new message was added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecondOpinionMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecondOpinionMessage'
        description: New second opinion to be added. The direction should logically be set to outbound
    get:
      tags:
      - second-opinions
      summary: List messages of a second opinion request
      description: ''
      operationId: listSecondOpinionMessages
      parameters:
      - in: path
        name: id
        required: true
        description: Id of related second opinion
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        200:
          description: 'Request was successful. Note that if the second opinion doesn''t have any messages, the status *200* will still be returned with an empty array in the body.

            '
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SecondOpinionMessage'
  /second-opinions/{id}/attachments:
    get:
      tags:
      - second-opinions
      summary: List attachments of a second opinion request
      description: 'Use this endpoint to see a list of attachments''s **metadata**. If you want to download the actual files, see [download attachment](#/second-opinions/getSecondOpinionAttachmentContent) instead.

        '
      operationId: listSecondOpinionAttachments
      parameters:
      - in: path
        name: id
        required: true
        description: Id of second opinion to be updated
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        200:
          description: 'Request was successful. Note that if the second opinion doesn''t have any attachments, the status *200* will still be returned with an empty array in the body.

            '
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Attachment'
  /second-opinions/{id}/attachments/{uuid}/content:
    get:
      tags:
      - second-opinions
      summary: Download second opinion attachments
      description: 'Use this endpoint to download an attachment. The content will be returned.

        **Caution**, this endpoint doesn''t return JSON but the raw file content (binary or text according to attachment''s MIME type)

        '
      operationId: getSecondOpinionAttachmentContent
      parameters:
      - in: path
        name: id
        required: true
        description: Id of second opinion object
        schema:
          type: string
      - in: path
        name: uuid
        required: true
        description: UUID of the desired attachment
        schema:
          type: string
      security:
      - partner_token: []
      responses:
        200:
          description: File was found and data is sent.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
components:
  schemas:
    SecondOpinionMessage:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          description: Generated message UUID
          example: fasd823fdd44jksd-fesfjs-asfdh
        second_opinion_id:
          type: integer
          format: int64
          readOnly: true
          description: id of related second opinion object
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Date and time at which the message was created in [ISO 8601](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14) format
          example: 2017-09-05T15:14.000Z
        direction:
          type: string
          enum:
          - inbound
          - outbound
          description: 'Can take two values: `inbound` if the message is sent to you, or `outbound` if you sent the message

            '
          example: outbound
        text:
          type: string
          description: Message content
          example: Do you think that hip replacement is the right thing to do?
        attachments:
          type: array
          description: A list of UUIDs of files uploaded along with the message. See [attachments](#/attachments)
          items:
            type: string
            format: uuid
          example:
          - fdsfds-afsdh-fasd823fdd44jksd
          - dsj23o-i83hs-53453gfddjsfsddf
    Attachment:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
          description: Generated attachment's UUID
          example: ead5dc24-e37f-4e2e82jss4db3f7574dd
        name:
          type: string
          description: File name
          example: my-attachment.pdf
        mime_type:
          type: string
          description: 'File''s [mime type](https://www.sitepoint.com/mime-types-complete-list/)

            only some types are allowed to be uploaded

            '
          example: application/pdf
        size:
          type: integer
          format: int64
          readOnly: true
          description: File size in bytes
          example: 57995
    SecondOpinion:
      type: object
      required:
      - email
      - name
      - condition
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        external_id:
          type: string
          description: Free reference usually related to consumer data
          example: '123'
        email:
          type: string
          format: email
          description: Patient's email
          example: john.doe@private.me
        name:
          type: string
          description: Patient's full name
          example: John Doe
        condition:
          type: string
          description: Description about the patient's condition
          example: I have been feeling terrible pain on my right foot for months
        sex:
          type: string
          description: Patient's sex
          enum:
          - female
          - male
          example: male
        birthdate:
          type: string
          format: date
          description: Patient's date of birth in `YYYY-MM-DD` format
          example: '1989-02-14'
        language:
          type: string
          description: Patient's language as a [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
          example: it
        phone_number:
          type: string
          description: Patient's phone number
        icd_code:
          type: string
          description: Optional [disease identifier](http://www.icd9data.com/)
          example: R51
        custom_fields:
          type: object
          description: Map of custom fields that you want to add to your request
          items:
            type: string
          example:
            my_custom_field: val
            my_other_field: another val
        payment_amount:
          type: number
          format: float
          description: Amount of money paid by the user
          example: 459.0
        payment_currency:
          type: string
          description: Payment currency (format [ISO 4217](https://www.iban.com/currency-codes.html))
          example: EUR
        status:
          type: string
          readOnly: true
          description: 'Current status of the second opinion request


            - *NEW*: Default value when a second opinion entity is created. The second opinion remains NEW until the first message is added to it

            - *PROCESSING*: MEDIGO is currently handling the case

            - *AWAITING*: MEDIGO is expecting some action from the partner. (eg providing more information)

            - *CLOSED*: The process has been entirely handled and no further changes are expected on the case


            Note that the status is **read-only**. It is not necessary to provide it when querying the API as only MEDIGO will update this field. It will however always be sent back as part of the response.

            '
          enum:
          - NEW
          - PROCESSING
          - AWAITING
          - CLOSED
  securitySchemes:
    partner_token:
      type: apiKey
      in: header
      name: Authorization
      description: "Authentication done is via an *API token* provided by MEDIGO. The token should be provided as a bearer in the *Authorization* header of every request\nNote that the string *Bearer* followed by a whitespace should be prepended to the token.\nExample:\n\n    GET /v2/ HTTP/1.1\n    Host: https://api.medigo.com\n    Authorization: Bearer <your-api-token>\n"