AlayaCare Vitals API

The Vitals API from AlayaCare — 3 operation(s) for vitals.

Operations 6

GET /vitals/client/{client_id} Get a list of a client's vital recordings by the client's AlayaCare ID
POST /vitals/client/{client_id} Record a vital for a client using the client's AlayaCare ID
GET /vitals/client/by_id/{external_client_id} Get a list of a client's vital recordings by the client's external ID
POST /vitals/client/by_id/{external_client_id} Record a vital for a client using the client's external ID
GET /vitals/{vital_id} Get details of a vital recording
PUT /vitals/{vital_id} Update a vital recording

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/alayacare-vitals-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

alayacare-vitals-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.4
  title: External Clinical Vitals API
  description: "External Clinical API\n\n**Internal IDs**\nThe following terms are used to reference IDs that identify resources in AlayaCare:\n- id\n- created_by\n- client_id\n- risk_id\n- medication_id\n- admin_id\n- vital_id\n\n**External IDs**\nThe following terms are used to reference IDs that identify resources systems external to AlayaCare:\n- external_id\n- external_client_id\n\nExternal IDs are required to be unique.\nNo other assumptions are made regarding their format they are treated as strings.\n\n**Remarks**\n- All dates must be in ISO 8601 format.\n- Required fields marked with `*` cannot be null.\n\n**Progress Notes**\n  API for creating and viewing client progress notes.\n\n**Risks**\nAPI for creating, viewing, updating, and removing client risks.\n\n**Medication**\n  API for creating, editing, and viewing medications and medication administrations.\n\n**Vitals**\n  API for creating, editing and viewing vitals.\n\nEach individual vital type is identified by a `name`. Dependent vitals are given the same `group`. Currently this is only used to link names `pressure_min` and `pressure_max` with the group `blood_pressure`, as these values should be recorded together.\n\nThe metadata of the vitals includes the configuration and thresholds, the default and available units, and any other required options for each vital type.\n"
servers:
- url: https://homecare.alayacare.ca/ext/api/v2/clinical
tags:
- name: Vitals
paths:
  /vitals/client/{client_id}:
    parameters:
    - description: Client ID
      name: client_id
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Vitals
      summary: Get a list of a client's vital recordings by the client's AlayaCare ID
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/count'
      - name: group[]
        description: The group or comma-separated groups of the vitals.
        in: query
        schema:
          type: string
      - name: name[]
        description: The name or comma-separated names of the vitals.
        in: query
        schema:
          type: string
      - name: end_at
        description: The end date for the vital creation date range, using ISO 8601 date-time formatting.
        in: query
        schema:
          type: string
      - name: start_at
        description: The start date for the vital creation date range, using ISO 8601 date-time formatting.
        in: query
        schema:
          type: string
      responses:
        200:
          description: Client's vitals details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VitalList'
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
    post:
      tags:
      - Vitals
      summary: Record a vital for a client using the client's AlayaCare ID
      responses:
        201:
          description: Vital successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vital'
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VitalCreate'
        description: Vital data in JSON format
        required: true
  /vitals/client/by_id/{external_client_id}:
    parameters:
    - description: External client ID
      name: external_client_id
      in: path
      required: true
      schema:
        type: string
    get:
      tags:
      - Vitals
      summary: Get a list of a client's vital recordings by the client's external ID
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/count'
      - name: group[]
        description: The group or comma-separated groups of the vitals.
        in: query
        schema:
          type: string
      - name: name[]
        description: The name or comma-separated names of the vitals.
        in: query
        schema:
          type: string
      - name: end_at
        description: The end date for the vital creation date range, using ISO 8601 date-time formatting.
        in: query
        schema:
          type: string
      - name: start_at
        description: The start date for the vital creation date range, using ISO 8601 date-time formatting.
        in: query
        schema:
          type: string
      responses:
        200:
          description: Client's vitals details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VitalList'
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
    post:
      tags:
      - Vitals
      summary: Record a vital for a client using the client's external ID
      responses:
        201:
          description: Create successful.
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VitalCreate'
        description: Vital data
        required: true
  /vitals/{vital_id}:
    parameters:
    - description: Vital ID
      name: vital_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Vitals
      summary: Get details of a vital recording
      responses:
        200:
          description: A vital
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vital'
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
        404:
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Vitals
      summary: Update a vital recording
      responses:
        200:
          description: Update successful.
        401:
          $ref: '#/components/responses/AuthChallenge'
        400:
          $ref: '#/components/responses/InvalidRequest'
        404:
          $ref: '#/components/responses/NotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VitalCreate'
        description: Medication data
        required: true
components:
  responses:
    NotFound:
      description: Not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 404
            message: Progress note not found
    AuthChallenge:
      description: Authentication required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 401
            message: Please verify your access level for this url.
    InvalidRequest:
      description: Invalid data.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 400
            message: Invalid request
  schemas:
    VitalOptions:
      type:
      - object
      - 'null'
      description: Additional options required for some vital types.
      properties:
        position:
          $ref: '#/components/schemas/VitalOptionPosition'
        route:
          $ref: '#/components/schemas/VitalOptionRoute'
    ErrorResponse:
      description: Error response
      type: object
      properties:
        code:
          type: integer
          description: Response code
        message:
          type: string
          description: Detailed error message
      required:
      - code
      - message
    VitalList:
      type: object
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      description: A list of vitals
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Vital'
    VitalCreate:
      type: object
      description: Vital details
      required:
      - client_id
      - external_client_id
      - name
      - value
      - unit
      properties:
        client_id:
          type: integer
          description: The client ID.
          example: 1234
        external_client_id:
          type: string
          description: The external client ID.
          example: client_1234
        comments:
          type:
          - string
          - 'null'
          description: A comment.
          example: No unexpected results
        group:
          type:
          - string
          - 'null'
          description: The vital group. This is used to group together separate vitals that are measured together like low and high blood pressure. If no group, this should be set to `name`.
          example: blood_pressure
        name:
          $ref: '#/components/schemas/VitalName'
        options:
          $ref: '#/components/schemas/VitalOptions'
        session_guid:
          type: string
          description: A unique identifier to group vitals recorded together within the same `group`.
          example: 97a3e055-2fd1-469d-a058-b173499e37ff
        source:
          type: string
          description: A description of how the vital was recorded. This may be set if the client recorded the vital themselves.
          example: default
        unit:
          $ref: '#/components/schemas/VitalUnits'
        user_guid:
          type:
          - integer
          - 'null'
          description: The `guid` of the user that created the vital. This will generally be the `guid` of the employee, unless the `source` or `user_type` indicate otherwise.
          example: 234
        user_type:
          type:
          - string
          - 'null'
          description: The type of user that created the vital. Generally this will not be set unless thesomeone other than an employee created the vital.
          example: null
        value:
          type: number
          description: The value of the recorded vital.
          example: 38.4
    VitalName:
      type: string
      description: The name identifying the vital type.
      enum:
      - blood_glucose
      - bmi
      - height
      - pulse
      - pressure_min
      - pressure_max
      - weight
      - respiratory_rate
      - spo2
      - temperature
      example: pressure_max
    VitalUnits:
      type: string
      description: The unit used to record the vital.
      enum:
      - c
      - f
      - kgs
      - lb
      - bpm
      - breaths_pm
      - mmhg
      - cm
      - in
      - mmol_l
      - mg_dl
      - kg_m2
      - '%'
      example: mmhg
    VitalOptionRoute:
      type: string
      description: The route that awas used when recording a vital like `temperature`.
      enum:
      - axillary
      - oral
      - rectal
      - tympanic
      example: oral
    VitalOptionPosition:
      type: string
      description: The position of the client when recording a vital like `blood_pressure` or `pulse`.
      enum:
      - lying
      - sitting
      - standing
      example: sitting
    Vital:
      allOf:
      - $ref: '#/components/schemas/VitalCreate'
      type: object
      description: Vital details
      required:
      - client_id
      - id
      - name
      - date
      - value
      - unit
      properties:
        date:
          type: string
          description: The created date using ISO 8601 date-time formatting.
          example: '2018-01-01T00:30:00+00:00'
        id:
          type: string
          description: The vital ID.
          example: adedb729-54fa-473e-b929-9c71ef5c248e
    PaginatedList:
      description: Base model of all paginated lists
      type: object
      properties:
        count:
          type: integer
          description: Number of items in the response
          example: 1
        page:
          type: integer
          description: Current page number
          example: 1
        total_pages:
          type: integer
          description: Total number of pages availbale
          example: 1
        items:
          type: array
          items:
            type: object
      required:
      - count
      - page
      - total_pages
      - items
  parameters:
    count:
      name: count
      in: query
      required: false
      description: Number of items per page. If not specified will default to 100.
      schema:
        type: integer
        default: 100
    page:
      name: page
      in: query
      required: false
      description: Filter by page number. If not specified will default to 1.
      schema:
        type: integer
        default: 1
  securitySchemes:
    basic_auth:
      type: http
      scheme: basic
      description: Basic HTTP auth over https