> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.cail.health/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.cail.health/_mcp/server.

# Get provider details

GET https://staging.cail.health/v1/providers/{id}

Returns the details of a single provider, including all active locations, contact methods, current open status, and recent wait-time signals. The response shape depends on the caller. Members receive a lean shape covering name, address, contact, current open status, and wait-time. Operators receive an extended shape that adds service-level scheduling, upcoming closures, network utilisation analytics, and trust metadata. Location data is scoped to active locations of the provider organisation. Returns a 404 when the provider does not exist or is not active in the requested jurisdiction.

Reference: https://docs.cail.health/api-references/api-reference/find-care/get-by-id

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: cail-api
  version: 1.0.0
paths:
  /v1/providers/{id}:
    get:
      operationId: get-by-id
      summary: Get provider details
      description: >-
        Returns the details of a single provider, including all active
        locations, contact methods, current open status, and recent wait-time
        signals. The response shape depends on the caller. Members receive a
        lean shape covering name, address, contact, current open status, and
        wait-time. Operators receive an extended shape that adds service-level
        scheduling, upcoming closures, network utilisation analytics, and trust
        metadata. Location data is scoped to active locations of the provider
        organisation. Returns a 404 when the provider does not exist or is not
        active in the requested jurisdiction.
      tags:
        - subpackage_findCare
      parameters:
        - name: id
          in: path
          description: Stable provider identifier.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: Bearer authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Member view of the provider. Operator view of the provider with
            analytics and trust metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Find care_getById_Response_200'
servers:
  - url: https://staging.cail.health
    description: https://staging.cail.health
components:
  schemas:
    PatientProviderAddress:
      type: object
      properties:
        line1:
          type: string
          description: First address line.
        line2:
          type: string
          description: Second address line.
        city:
          type: string
          description: Town or city.
        postcode:
          type: string
          description: Postal code.
        country:
          type: string
          description: Country.
      title: PatientProviderAddress
    PatientProviderContactPhone:
      type: object
      properties: {}
      description: Public phone number.
      title: PatientProviderContactPhone
    PatientProviderContactWebsite:
      type: object
      properties: {}
      description: Public website.
      title: PatientProviderContactWebsite
    PatientProviderContact:
      type: object
      properties:
        phone:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderContactPhone'
            - type: 'null'
          description: Public phone number.
        website:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderContactWebsite'
            - type: 'null'
          description: Public website.
      required:
        - phone
        - website
      title: PatientProviderContact
    PatientProviderCoordinates:
      type: object
      properties:
        latitude:
          type: number
          format: double
          description: WGS84 latitude.
        longitude:
          type: number
          format: double
          description: WGS84 longitude.
      required:
        - latitude
        - longitude
      title: PatientProviderCoordinates
    PatientProviderLocationIsOpen:
      type: object
      properties: {}
      description: >-
        True when the location is open right now. Null when hours data is
        unavailable.
      title: PatientProviderLocationIsOpen
    PatientProviderLocationAvailableStartTime:
      type: object
      properties: {}
      description: >-
        Earliest open time today (HH:mm local). Null when hours data is
        unavailable.
      title: PatientProviderLocationAvailableStartTime
    PatientProviderLocationAvailableEndTime:
      type: object
      properties: {}
      description: >-
        Latest close time today (HH:mm local). Null when hours data is
        unavailable.
      title: PatientProviderLocationAvailableEndTime
    PatientProviderAvailableTimeSlot:
      type: object
      properties:
        daysOfWeek:
          type: array
          items:
            type: string
          description: Days of the week this slot applies to.
        availableStartTime:
          type: string
          description: Slot start time (HH:mm in the location’s local time).
        availableEndTime:
          type: string
          description: Slot end time (HH:mm in the location’s local time).
      required:
        - daysOfWeek
        - availableStartTime
        - availableEndTime
      title: PatientProviderAvailableTimeSlot
    PatientProviderWaitTimeLatestReportAt:
      type: object
      properties: {}
      description: ISO 8601 timestamp of the most recent contributing report.
      title: PatientProviderWaitTimeLatestReportAt
    PatientProviderWaitTime:
      type: object
      properties:
        medianMinutes:
          type: number
          format: double
          description: Median wait time in minutes across recent reports.
        reportCount:
          type: number
          format: double
          description: Number of reports backing the median.
        latestReportAt:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderWaitTimeLatestReportAt'
            - type: 'null'
          description: ISO 8601 timestamp of the most recent contributing report.
        isStale:
          type: boolean
          description: True when the most recent report is older than the freshness window.
      required:
        - medianMinutes
        - reportCount
        - latestReportAt
        - isStale
      title: PatientProviderWaitTime
    PatientProviderLocation:
      type: object
      properties:
        locationId:
          type: string
          description: Stable identifier for this location of the provider.
        serviceTypeCode:
          type: string
          description: Service-type code offered at this location.
        address:
          $ref: '#/components/schemas/PatientProviderAddress'
        contact:
          $ref: '#/components/schemas/PatientProviderContact'
        coordinates:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderCoordinates'
            - type: 'null'
          description: >-
            Geographic coordinates of the location. Null when the location has
            no published coordinates.
        isOpen:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderLocationIsOpen'
            - type: 'null'
          description: >-
            True when the location is open right now. Null when hours data is
            unavailable.
        availableStartTime:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderLocationAvailableStartTime'
            - type: 'null'
          description: >-
            Earliest open time today (HH:mm local). Null when hours data is
            unavailable.
        availableEndTime:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderLocationAvailableEndTime'
            - type: 'null'
          description: >-
            Latest close time today (HH:mm local). Null when hours data is
            unavailable.
        availableTime:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PatientProviderAvailableTimeSlot'
          description: >-
            Weekly availability windows for this location. Null when no schedule
            is published.
        waitTime:
          oneOf:
            - $ref: '#/components/schemas/PatientProviderWaitTime'
            - type: 'null'
          description: >-
            Wait-time data for the location. Null when no recent reports are
            available.
      required:
        - locationId
        - serviceTypeCode
        - address
        - contact
        - coordinates
        - isOpen
        - availableStartTime
        - availableEndTime
        - availableTime
        - waitTime
      title: PatientProviderLocation
    PatientProvider:
      type: object
      properties:
        id:
          type: string
          description: Stable provider identifier.
        name:
          type: string
          description: Display name for the provider.
        organizationId:
          type: string
          description: Stable identifier for the operating organisation.
        locations:
          type: array
          items:
            $ref: '#/components/schemas/PatientProviderLocation'
          description: >-
            Active locations of this provider. Service, contact, schedule, and
            wait-time data are scoped to each location.
      required:
        - id
        - name
        - organizationId
        - locations
      title: PatientProvider
    ProviderIdentifierValue:
      type: object
      properties: {}
      description: >-
        Upstream identifier for the provider, when one is published. Null for
        operator-authored rows.
      title: ProviderIdentifierValue
    ProviderLocationAddress:
      type: object
      properties:
        line:
          type: array
          items:
            type: string
          description: Address lines as printed.
        city:
          type: string
          description: Town or city.
        district:
          type: string
          description: Administrative district.
        postalCode:
          type: string
          description: Postal code.
        country:
          type: string
          description: Country.
      required:
        - line
        - city
        - district
        - postalCode
        - country
      title: ProviderLocationAddress
    ProviderLocationCoordinates:
      type: object
      properties:
        latitude:
          type: number
          format: double
          description: WGS84 latitude.
        longitude:
          type: number
          format: double
          description: WGS84 longitude.
      required:
        - latitude
        - longitude
      title: ProviderLocationCoordinates
    ProviderLocationServiceDescription:
      type: object
      properties: {}
      description: >-
        Free-text service description authored by the provider organisation.
        Null when no description is published.
      title: ProviderLocationServiceDescription
    ProviderLocationServiceSchedule:
      type: object
      properties:
        dayOfWeek:
          type: array
          items:
            type: string
          description: Days the service operates on.
        openingTime:
          type: string
          description: Opening time (HH:mm local).
        closingTime:
          type: string
          description: Closing time (HH:mm local).
      required:
        - dayOfWeek
        - openingTime
        - closingTime
      title: ProviderLocationServiceSchedule
    ProviderLocationService:
      type: object
      properties:
        id:
          type: string
          description: Stable identifier for the service offering.
        serviceTypeCode:
          type: string
          description: Service-type code for this offering.
        description:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationServiceDescription'
            - type: 'null'
          description: >-
            Free-text service description authored by the provider organisation.
            Null when no description is published.
        schedule:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationServiceSchedule'
            - type: 'null'
          description: Weekly schedule for the service. Null when no schedule is published.
      required:
        - id
        - serviceTypeCode
        - description
        - schedule
      title: ProviderLocationService
    ProviderLocationContactPhone:
      type: object
      properties: {}
      description: Public phone number.
      title: ProviderLocationContactPhone
    ProviderLocationContactWebsite:
      type: object
      properties: {}
      description: Public website.
      title: ProviderLocationContactWebsite
    ProviderLocationContactBookingUrl:
      type: object
      properties: {}
      description: Direct booking URL, if the provider publishes one.
      title: ProviderLocationContactBookingUrl
    ProviderLocationContact:
      type: object
      properties:
        phone:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationContactPhone'
            - type: 'null'
          description: Public phone number.
        website:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationContactWebsite'
            - type: 'null'
          description: Public website.
        bookingUrl:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationContactBookingUrl'
            - type: 'null'
          description: Direct booking URL, if the provider publishes one.
      required:
        - phone
        - website
        - bookingUrl
      title: ProviderLocationContact
    ProviderLocationIsOpen:
      type: object
      properties: {}
      description: >-
        True when the location is open right now. Null when hours data is
        unavailable.
      title: ProviderLocationIsOpen
    ProviderLocationAvailableStartTime:
      type: object
      properties: {}
      description: >-
        Earliest open time today (HH:mm local). Null when hours data is
        unavailable.
      title: ProviderLocationAvailableStartTime
    ProviderLocationAvailableEndTime:
      type: object
      properties: {}
      description: >-
        Latest close time today (HH:mm local). Null when hours data is
        unavailable.
      title: ProviderLocationAvailableEndTime
    ProviderLocationAvailableTimeSlot:
      type: object
      properties:
        daysOfWeek:
          type: array
          items:
            type: string
          description: Days of the week this slot applies to.
        availableStartTime:
          type: string
          description: Slot start time (HH:mm local).
        availableEndTime:
          type: string
          description: Slot end time (HH:mm local).
      required:
        - daysOfWeek
        - availableStartTime
        - availableEndTime
      title: ProviderLocationAvailableTimeSlot
    ProviderLocationWaitTimeLatestReportAt:
      type: object
      properties: {}
      description: ISO 8601 timestamp of the most recent contributing report.
      title: ProviderLocationWaitTimeLatestReportAt
    ProviderLocationWaitTime:
      type: object
      properties:
        medianMinutes:
          type: number
          format: double
          description: Median wait time in minutes across recent reports.
        reportCount:
          type: number
          format: double
          description: Number of reports backing the median.
        latestReportAt:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationWaitTimeLatestReportAt'
            - type: 'null'
          description: ISO 8601 timestamp of the most recent contributing report.
        isStale:
          type: boolean
          description: True when the most recent report is older than the freshness window.
      required:
        - medianMinutes
        - reportCount
        - latestReportAt
        - isStale
      title: ProviderLocationWaitTime
    ProviderLocation:
      type: object
      properties:
        locationId:
          type: string
          description: Stable identifier for this location.
        address:
          $ref: '#/components/schemas/ProviderLocationAddress'
        coordinates:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationCoordinates'
            - type: 'null'
          description: >-
            Geographic coordinates of the location. Null when the location has
            no published coordinates.
        services:
          type: array
          items:
            $ref: '#/components/schemas/ProviderLocationService'
          description: Services offered at this location.
        contact:
          $ref: '#/components/schemas/ProviderLocationContact'
        isOpen:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationIsOpen'
            - type: 'null'
          description: >-
            True when the location is open right now. Null when hours data is
            unavailable.
        availableStartTime:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationAvailableStartTime'
            - type: 'null'
          description: >-
            Earliest open time today (HH:mm local). Null when hours data is
            unavailable.
        availableEndTime:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationAvailableEndTime'
            - type: 'null'
          description: >-
            Latest close time today (HH:mm local). Null when hours data is
            unavailable.
        availableTime:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/ProviderLocationAvailableTimeSlot'
          description: Weekly availability windows. Null when no schedule is published.
        waitTime:
          oneOf:
            - $ref: '#/components/schemas/ProviderLocationWaitTime'
            - type: 'null'
          description: >-
            Wait-time data for the location. Null when no recent reports are
            available.
      required:
        - locationId
        - address
        - coordinates
        - services
        - contact
        - isOpen
        - availableStartTime
        - availableEndTime
        - availableTime
        - waitTime
      title: ProviderLocation
    ProviderUpcomingClosure:
      type: object
      properties:
        title:
          type: string
          description: Display title for the upcoming closure or reduced-hours window.
        startDate:
          type: string
          description: Start date (ISO 8601 date) of the window.
        endDate:
          type: string
          description: End date (ISO 8601 date) of the window.
      required:
        - title
        - startDate
        - endDate
      title: ProviderUpcomingClosure
    ProviderUtilisationPathwayMixTitle:
      type: object
      properties: {}
      description: Display title for the pathway. Null when the title is unavailable.
      title: ProviderUtilisationPathwayMixTitle
    ProviderUtilisationPathwayMix:
      type: object
      properties:
        planDefinitionId:
          type: string
          description: Stable identifier of the pathway definition.
        title:
          oneOf:
            - $ref: '#/components/schemas/ProviderUtilisationPathwayMixTitle'
            - type: 'null'
          description: Display title for the pathway. Null when the title is unavailable.
        count:
          type: number
          format: double
          description: >-
            Number of routed sessions attributed to this pathway in the
            reporting window.
      required:
        - planDefinitionId
        - title
        - count
      title: ProviderUtilisationPathwayMix
    ProviderUtilisation:
      type: object
      properties:
        sessionsRouted:
          type: number
          format: double
          description: Sessions routed to this provider over the last 30 days.
        sessionsRoutedDelta30d:
          type: number
          format: double
          description: Change in routed-session count versus the prior 30-day window.
        diverted:
          type: number
          format: double
          description: Sessions that were diverted away from this provider during routing.
        attendedEd48h:
          type: number
          format: double
          description: >-
            Sessions whose member attended an emergency department within 48
            hours afterwards.
        avoidanceRate:
          type: number
          format: double
          description: Estimated ED-avoidance rate, derived from attendance attribution.
        networkAvgRouted:
          type: number
          format: double
          description: Average routed-session count across the operator’s provider network.
        pathwayMix:
          type: array
          items:
            $ref: '#/components/schemas/ProviderUtilisationPathwayMix'
          description: Distribution of routed sessions across pathway definitions.
      required:
        - sessionsRouted
        - sessionsRoutedDelta30d
        - diverted
        - attendedEd48h
        - avoidanceRate
        - networkAvgRouted
        - pathwayMix
      title: ProviderUtilisation
    ProviderTrustFreshnessStatus:
      type: object
      properties: {}
      description: Freshness state of the row sourced from the upstream registry.
      title: ProviderTrustFreshnessStatus
    ProviderTrustVerificationStatus:
      type: object
      properties: {}
      description: Verification state assigned by the operator review workflow.
      title: ProviderTrustVerificationStatus
    ProviderTrustSourceSystem:
      type: object
      properties: {}
      description: >-
        Upstream registry the row was sourced from. Null for operator-authored
        rows.
      title: ProviderTrustSourceSystem
    ProviderTrustSourceAdapter:
      type: object
      properties: {}
      description: >-
        Adapter implementation that synced the row. Null for operator-authored
        rows.
      title: ProviderTrustSourceAdapter
    ProviderTrustSourceFetchedAt:
      type: object
      properties: {}
      description: ISO 8601 timestamp the adapter last pulled the upstream record.
      title: ProviderTrustSourceFetchedAt
    ProviderTrustFreshUntil:
      type: object
      properties: {}
      description: ISO 8601 timestamp after which the row is considered stale.
      title: ProviderTrustFreshUntil
    ProviderTrustExpiresAt:
      type: object
      properties: {}
      description: ISO 8601 timestamp when the row transitioned to expired.
      title: ProviderTrustExpiresAt
    ProviderTrustVerifiedAt:
      type: object
      properties: {}
      description: >-
        ISO 8601 timestamp when the row most recently entered a non-unverified
        state.
      title: ProviderTrustVerifiedAt
    ProviderTrust:
      type: object
      properties:
        freshnessStatus:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustFreshnessStatus'
            - type: 'null'
          description: Freshness state of the row sourced from the upstream registry.
        verificationStatus:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustVerificationStatus'
            - type: 'null'
          description: Verification state assigned by the operator review workflow.
        sourceSystem:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustSourceSystem'
            - type: 'null'
          description: >-
            Upstream registry the row was sourced from. Null for
            operator-authored rows.
        sourceAdapter:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustSourceAdapter'
            - type: 'null'
          description: >-
            Adapter implementation that synced the row. Null for
            operator-authored rows.
        sourceFetchedAt:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustSourceFetchedAt'
            - type: 'null'
          description: ISO 8601 timestamp the adapter last pulled the upstream record.
        freshUntil:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustFreshUntil'
            - type: 'null'
          description: ISO 8601 timestamp after which the row is considered stale.
        expiresAt:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustExpiresAt'
            - type: 'null'
          description: ISO 8601 timestamp when the row transitioned to expired.
        verifiedAt:
          oneOf:
            - $ref: '#/components/schemas/ProviderTrustVerifiedAt'
            - type: 'null'
          description: >-
            ISO 8601 timestamp when the row most recently entered a
            non-unverified state.
      required:
        - freshnessStatus
        - verificationStatus
        - sourceSystem
        - sourceAdapter
        - sourceFetchedAt
        - freshUntil
        - expiresAt
        - verifiedAt
      title: ProviderTrust
    Provider:
      type: object
      properties:
        id:
          type: string
          description: Stable provider identifier.
        name:
          type: string
          description: Display name for the provider.
        active:
          type: boolean
          description: True when the provider is active in the network.
        identifierValue:
          oneOf:
            - $ref: '#/components/schemas/ProviderIdentifierValue'
            - type: 'null'
          description: >-
            Upstream identifier for the provider, when one is published. Null
            for operator-authored rows.
        locations:
          type: array
          items:
            $ref: '#/components/schemas/ProviderLocation'
          description: >-
            Active locations of the provider. Services, contact, schedule, and
            wait-time data are scoped to each location.
        upcoming:
          type: array
          items:
            $ref: '#/components/schemas/ProviderUpcomingClosure'
          description: >-
            Upcoming closures and reduced-hour windows, aggregated across every
            location, filtered to the next 30 days.
        utilisation:
          oneOf:
            - $ref: '#/components/schemas/ProviderUtilisation'
            - type: 'null'
          description: >-
            Network utilisation analytics for the provider over the last 30
            days. Null when the operator is not authorised to view analytics, or
            when analytics are not yet populated for this provider.
        lastSyncedAt:
          type: string
          description: ISO 8601 timestamp of the last upstream sync that wrote this row.
        organizationId:
          type: string
          description: Stable identifier for the operating organisation.
        jurisdictionId:
          type: string
          description: Stable identifier for the jurisdiction the provider operates in.
        trust:
          $ref: '#/components/schemas/ProviderTrust'
          description: Trust metadata for the provider row.
      required:
        - id
        - name
        - active
        - identifierValue
        - locations
        - upcoming
        - utilisation
        - lastSyncedAt
        - jurisdictionId
      title: Provider
    Find care_getById_Response_200:
      oneOf:
        - $ref: '#/components/schemas/PatientProvider'
        - $ref: '#/components/schemas/Provider'
      title: Find care_getById_Response_200
  securitySchemes:
    firebaseBearer:
      type: http
      scheme: bearer
    auth0Bearer:
      type: http
      scheme: bearer

```

## Examples

### An open emergency department with one location



**Response**

```json
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "name": "St Thomas' Hospital",
  "organizationId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "locations": [
    {
      "locationId": "b3c8a5d2-1f4e-4d9a-9c8b-7a6e5f4d3c2b",
      "serviceTypeCode": "50849002",
      "address": {
        "line1": "Westminster Bridge Road",
        "city": "London",
        "postcode": "SE1 7EH",
        "country": "United Kingdom"
      },
      "contact": {
        "phone": "+442071887188",
        "website": "https://example.nhs.uk"
      },
      "coordinates": {
        "latitude": 51.4988,
        "longitude": -0.1187
      },
      "isOpen": true,
      "availableStartTime": "00:00",
      "availableEndTime": "23:59",
      "availableTime": [
        {
          "daysOfWeek": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "availableStartTime": "00:00",
          "availableEndTime": "23:59"
        }
      ],
      "waitTime": {
        "medianMinutes": 18,
        "reportCount": 12,
        "latestReportAt": "2026-05-12T14:21:00.000Z",
        "isStale": false
      }
    }
  ]
}
```

**SDK Code**

```python An open emergency department with one location
import requests

url = "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript An open emergency department with one location
const url = 'https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go An open emergency department with one location
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby An open emergency department with one location
require 'uri'
require 'net/http'

url = URI("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java An open emergency department with one location
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php An open emergency department with one location
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp An open emergency department with one location
using RestSharp;

var client = new RestClient("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift An open emergency department with one location
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### A verified provider with one location and active analytics



**Response**

```json
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "name": "St Thomas' Hospital",
  "organizationId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "locations": [
    {
      "locationId": "b3c8a5d2-1f4e-4d9a-9c8b-7a6e5f4d3c2b",
      "serviceTypeCode": "50849002",
      "address": {
        "city": "London",
        "country": "United Kingdom",
        "line": [
          "Westminster Bridge Road"
        ],
        "district": "Greater London",
        "postalCode": "SE1 7EH"
      },
      "contact": {
        "phone": "+442071887188",
        "website": "https://example.nhs.uk",
        "bookingUrl": null
      },
      "coordinates": {
        "latitude": 51.4988,
        "longitude": -0.1187
      },
      "isOpen": true,
      "availableStartTime": "00:00",
      "availableEndTime": "23:59",
      "availableTime": [
        {
          "daysOfWeek": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ],
          "availableStartTime": "00:00",
          "availableEndTime": "23:59"
        }
      ],
      "waitTime": {
        "medianMinutes": 22,
        "reportCount": 14,
        "latestReportAt": "2026-05-12T14:21:00.000Z",
        "isStale": false
      },
      "services": [
        {
          "id": "5e6f7a8b-9c0d-4123-a4b5-c6d7e8f9a0b1",
          "serviceTypeCode": "50849002",
          "description": "Walk-in emergency department, 24/7.",
          "schedule": {
            "dayOfWeek": [
              "mon",
              "tue",
              "wed",
              "thu",
              "fri",
              "sat",
              "sun"
            ],
            "openingTime": "00:00",
            "closingTime": "23:59"
          }
        }
      ]
    }
  ],
  "active": true,
  "identifierValue": "RJ1",
  "upcoming": [],
  "utilisation": {
    "sessionsRouted": 318,
    "sessionsRoutedDelta30d": 24,
    "diverted": 12,
    "attendedEd48h": 4,
    "avoidanceRate": 0.83,
    "networkAvgRouted": 210,
    "pathwayMix": [
      {
        "planDefinitionId": "a1b2c3d4-e5f6-4789-9abc-def012345678",
        "title": "Acute respiratory pathway",
        "count": 42
      }
    ]
  },
  "lastSyncedAt": "2026-05-12T03:00:00.000Z",
  "jurisdictionId": "jur_uk_eng",
  "trust": {
    "freshnessStatus": "fresh",
    "verificationStatus": "verified",
    "sourceSystem": "ods",
    "sourceAdapter": "nhs-ods-v1",
    "sourceFetchedAt": "2026-05-10T03:00:00.000Z",
    "freshUntil": "2026-06-09T03:00:00.000Z",
    "expiresAt": null,
    "verifiedAt": "2026-04-19T11:32:00.000Z"
  }
}
```

**SDK Code**

```python A verified provider with one location and active analytics
import requests

url = "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript A verified provider with one location and active analytics
const url = 'https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go A verified provider with one location and active analytics
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby A verified provider with one location and active analytics
require 'uri'
require 'net/http'

url = URI("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java A verified provider with one location and active analytics
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php A verified provider with one location and active analytics
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp A verified provider with one location and active analytics
using RestSharp;

var client = new RestClient("https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift A verified provider with one location and active analytics
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://staging.cail.health/v1/providers/f47ac10b-58cc-4372-a567-0e02b2c3d479")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```