Skip to main content

Making requests

The API is a single GraphQL endpoint. All queries and mutations are sent to it as POST requests with a JSON body.

Endpoints​

PurposeURL
GraphQL APIhttps://<tenant>.huskycare.eu/api/graphql
Schema of the reference environment (SDL)https://main.huskycare.dev/api/graphql/schema
API Playground (GraphiQL)https://main.huskycare.dev/api/graphiql

The API has no subscriptions and no webhooks. To pick up changes, query the data again.

A first request​

This query lists the residential parks of your tenant. It needs no variables, so it is a good test of your authentication:

curl -X POST \
'https://<tenant>.huskycare.eu/api/graphql' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access token>' \
-d '{"query": "query ResidentialParks { residentialParks { id name } }"}'
{
"data": {
"residentialParks": [
{ "id": "00000000-0000-0000-0000-000000000001", "name": "Wohnpark Musterstadt" }
]
}
}

Most data in HuskyCare belongs to a residential park, so many operations take a park ID as input. Start with this query to find the IDs you need.

Queries​

Pass inputs as variables, not as values written into the query string:

query ActiveTours($filter: TourFilterInput!) {
activeTours(filter: $filter) {
id
name
status
employee {
id
}
workItems {
id
estimatedStart
estimatedEnd
}
}
}
{
"filter": {
"residentialParkId": "00000000-0000-0000-0000-000000000001",
"date": "2026-06-01"
}
}

See activeTours for all fields.

Mutations​

Most mutations take a single input argument and return the created or changed object. Select the fields you need from the result:

mutation CreateClient($input: CreateClientInput!) {
createClient(input: $input) {
id
self {
firstName
lastName
}
}
}
{
"input": {
"residentialParkId": "00000000-0000-0000-0000-000000000001",
"self": {
"firstName": "Erika",
"lastName": "Musterfrau",
"email": "erika.musterfrau@example.com"
}
}
}

This mutation requires the authorization feature client:core:edit. See createClient.

Conventions​

  • IDs are strings. Most are UUIDs; some carry a prefix, for example API key IDs (urn:hc:apiKey:...). Treat every ID as an opaque string.
  • Dates (Date) are ISO 8601 calendar dates such as 2026-06-01.
  • Lists are returned in full by most operations. Narrow large results with the filter arguments an operation offers. A few operations, such as clientDirectory, page their results with cursors: pass first, then pass pageInfo.endCursor as after while pageInfo.hasNextPage is true.
  • Operations prefixed with experimental_ can change or disappear without notice. Do not build an integration on them.

Exploring the schema​

  • The API reference on this site has a page for every query, mutation and type.
  • Voyager shows the schema as a graph of types and their relations.
  • The API Playground runs queries against the reference environment and completes field names as you type.

All three are built from the reference environment. See Environments.