Sun Life Patient API

The Patient API from Sun Life — 5 operation(s) for patient.

Operations 5

GET /Patient /Patient - GET #
GET /Patient/{id} /Patient/{id} - GET #
GET /Patient/{id}/_history/{vid} /Patient/{id}/_history/{vid} - GET #
GET /Patient/{id}/_history /Patient/{id}/_history - GET #
GET /Patient/_history /Patient/_history - GET #

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/sun-life-patient-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

sun-life-patient-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fhir Access Patient API
  description: "**Patient Access API for CMS 9115-F**\n\nTo access the DentaQuest Patient Access API, a third-party application must obtain a valid JWT token by following the SMART on FHIR authorization framework.\n\n**1. Get Your Credentials** To begin, you must request a `client_id` and `client_secret` by completing the request form available at: [Logic Manager Form](https://dentaquest.logicmanager.com/incidents/?t=1241&p=215&k=F0E3BD92F157F9B73EDE82834286E7CEA4044134B39D92AC3EE7E56392194241)\n\n**2. Authorize and Get a Token** With your credentials, you can initiate the authorization flow to obtain member consent and exchange the resulting authorization code for a JWT token.\n\n- **Authorization Endpoint:** `https://api.dentaquest.com/FhirPatientAccess/v1/authorize`\n    \n- **Token Endpoint:** `https://api.dentaquest.com/FhirPatientAccess/v1/token`\n    \n\nFor a detailed guide on this process, refer to the [SMART App Launch Framework](https://hl7.org/fhir/smart-app-launch/1.0.0/).\n\n### **API Standards and Conformance**\n\nThis API conforms to the following standards and implementation specifications:\n\n- **FHIR Version:** `4.0.1` (R4)\n    \n- **Implementation Guide:** `HL7 US Core Implementation Guide 7.0.0-ballot`\n    \n- **Security:** \n    - `SMART Application Launch Framework Implementation Guide Release 1.0.0`\n    - `OpenID Connect Core 1.0`\n    \n\n### **Exception Handling**\n\nThe API uses standard HTTP status codes to indicate the success or failure of a request. In the event of an error (HTTP status codes `4xx` or `5xx`), for example an invalid SMART on FHIR Token (`403 Forbidden`) or a malformed request (`400 Bad Request`). The response body will also contain a FHIR `OperationOutcome` resource. This resource provides detailed, structured information about the error, including severity, error codes, and human-readable diagnostics to assist with troubleshooting.\n\n### **Exception Response**\n| HTTP Status | Response                | Reason                                                                                                                               |\n| ----------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |\n| **400**     | `Bad Request`           | The request could not be understood by the server due to malformed syntax (e.g., an invalid parameter).                              |\n| **401**     | `Unauthorized`          | The request lacks valid authentication credentials. This may occur if the JWT token is missing, expired, or invalid.                 |\n| **403**     | `Forbidden`             | The server understood the request, but refuses to authorize it. This may occur if the member has not granted the application access. |\n| **404**     | `Not Found`             | The requested FHIR resource (e.g., a specific Patient or Coverage record) does not exist.                                            |\n| **500**     | `Internal Server Error` | The server encountered an unexpected condition that prevented it from fulfilling the request.                                        |\n\n"
  version: v1
servers:
- url: https://api.dentaquest.com/FhirPatientAccess/v1
- url: https://api.deltadentalma.com/FhirPatientAccess/v1
tags:
- name: Patient
paths:
  /Patient:
    get:
      summary: /Patient - GET
      description: /Patient - GET
      operationId: get-patient
      parameters:
      - name: phone
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A value in a phone contact\n* [Person](person.html): A value in a phone contact\n* [Practitioner](practitioner.html): A value in a phone contact\n* [PractitionerRole](practitionerrole.html): A value in a phone contact\n* [RelatedPerson](relatedperson.html): A value in a phone contact"
        schema:
          type: string
      - name: death-date
        in: query
        description: Format - date (as full-date in RFC3339). Format - date (as full-date in RFC3339). The date of death has been provided and satisfies this search value
        schema:
          type: string
          format: date
      - name: organization
        in: query
        description: The organization that is the custodian of the patient record
        schema:
          type: string
      - name: deceased
        in: query
        description: This patient has been marked as deceased, or as a death date entered
        schema:
          type: string
      - name: address
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [Person](person.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [Practitioner](practitioner.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text\n* [RelatedPerson](relatedperson.html): A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text"
        schema:
          type: string
      - name: birthdate
        in: query
        description: "Format - date (as full-date in RFC3339). Format - date (as full-date in RFC3339). Multiple Resources: \n\n* [Patient](patient.html): The patient's date of birth\n* [Person](person.html): The person's date of birth\n* [RelatedPerson](relatedperson.html): The Related Person's date of birth"
        schema:
          type: string
          format: date
      - name: link
        in: query
        description: All patients linked to the given patient
        schema:
          type: string
      - name: phonetic
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A portion of either family or given name using some kind of phonetic matching algorithm\n* [Person](person.html): A portion of name using some kind of phonetic matching algorithm\n* [Practitioner](practitioner.html): A portion of either family or given name using some kind of phonetic matching algorithm\n* [RelatedPerson](relatedperson.html): A portion of name using some kind of phonetic matching algorithm"
        schema:
          type: string
      - name: family
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A portion of the family name of the patient\n* [Practitioner](practitioner.html): A portion of the family name"
        schema:
          type: string
      - name: active
        in: query
        description: Whether the patient record is active
        schema:
          type: string
      - name: address-state
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A state specified in an address\n* [Person](person.html): A state specified in an address\n* [Practitioner](practitioner.html): A state specified in an address\n* [RelatedPerson](relatedperson.html): A state specified in an address"
        schema:
          type: string
      - name: _id
        in: query
        description: Logical id of this artifact
        schema:
          type: string
      - name: _profile
        in: query
        description: Profiles this resource claims to conform to
        schema:
          type: string
      - name: gender
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): Gender of the patient\n* [Person](person.html): The gender of the person\n* [Practitioner](practitioner.html): Gender of the practitioner\n* [RelatedPerson](relatedperson.html): Gender of the related person"
        schema:
          type: string
      - name: address-country
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A country specified in an address\n* [Person](person.html): A country specified in an address\n* [Practitioner](practitioner.html): A country specified in an address\n* [RelatedPerson](relatedperson.html): A country specified in an address"
        schema:
          type: string
      - name: given
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A portion of the given name of the patient\n* [Practitioner](practitioner.html): A portion of the given name"
        schema:
          type: string
      - name: general-practitioner
        in: query
        description: Patient's nominated general practitioner, not the organization that manages the record
        schema:
          type: string
      - name: _lastUpdated
        in: query
        description: Format - date (as full-date in RFC3339). Format - date (as full-date in RFC3339). When the resource version last changed
        schema:
          type: string
          format: date
      - name: language
        in: query
        description: Language code (irrespective of use value)
        schema:
          type: string
      - name: _security
        in: query
        description: Security Labels applied to this resource
        schema:
          type: string
      - name: address-postalcode
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A postalCode specified in an address\n* [Person](person.html): A postal code specified in an address\n* [Practitioner](practitioner.html): A postalCode specified in an address\n* [RelatedPerson](relatedperson.html): A postal code specified in an address"
        schema:
          type: string
      - name: _source
        in: query
        description: Identifies where the resource comes from
        schema:
          type: string
      - name: address-use
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A use code specified in an address\n* [Person](person.html): A use code specified in an address\n* [Practitioner](practitioner.html): A use code specified in an address\n* [RelatedPerson](relatedperson.html): A use code specified in an address"
        schema:
          type: string
      - name: address-city
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A city specified in an address\n* [Person](person.html): A city specified in an address\n* [Practitioner](practitioner.html): A city specified in an address\n* [RelatedPerson](relatedperson.html): A city specified in an address"
        schema:
          type: string
      - name: name
        in: query
        description: A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text
        schema:
          type: string
      - name: _tag
        in: query
        description: Tags applied to this resource
        schema:
          type: string
      - name: identifier
        in: query
        description: A patient identifier
        schema:
          type: string
      - name: email
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): A value in an email contact\n* [Person](person.html): A value in an email contact\n* [Practitioner](practitioner.html): A value in an email contact\n* [PractitionerRole](practitionerrole.html): A value in an email contact\n* [RelatedPerson](relatedperson.html): A value in an email contact"
        schema:
          type: string
      - name: telecom
        in: query
        description: "Multiple Resources: \n\n* [Patient](patient.html): The value in any kind of telecom details of the patient\n* [Person](person.html): The value in any kind of contact\n* [Practitioner](practitioner.html): The value in any kind of contact\n* [PractitionerRole](practitionerrole.html): The value in any kind of contact\n* [RelatedPerson](relatedperson.html): The value in any kind of contact"
        schema:
          type: string
      - name: _format
        in: query
        description: Output formatting
        schema:
          type: string
      responses:
        '200':
          description: Success
      tags:
      - Patient
  /Patient/{id}:
    get:
      summary: /Patient/{id} - GET
      description: /Patient/{id} - GET
      operationId: get-patient-id
      parameters:
      - name: id
        in: path
        description: id of resource
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
      tags:
      - Patient
  /Patient/{id}/_history/{vid}:
    get:
      summary: /Patient/{id}/_history/{vid} - GET
      description: /Patient/{id}/_history/{vid} - GET
      operationId: get-patient-id-_history-vid
      parameters:
      - name: id
        in: path
        description: id of resource
        required: true
        schema:
          type: string
      - name: vid
        in: path
        description: version id of resource
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
      tags:
      - Patient
  /Patient/{id}/_history:
    get:
      summary: /Patient/{id}/_history - GET
      description: /Patient/{id}/_history - GET
      operationId: get-patient-id-_history
      parameters:
      - name: id
        in: path
        description: id of resource
        required: true
        schema:
          type: string
      - name: _count
        in: query
        description: number to return
        schema:
          type: string
      - name: _since
        in: query
        description: how far back
        schema:
          type: string
      responses:
        '200':
          description: Success
      tags:
      - Patient
  /Patient/_history:
    get:
      summary: /Patient/_history - GET
      description: /Patient/_history - GET
      operationId: get-patient-_history
      parameters:
      - name: _count
        in: query
        description: number to return
        schema:
          type: string
      - name: _since
        in: query
        description: how far back
        schema:
          type: string
      responses:
        '200':
          description: Success
      tags:
      - Patient