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
| Purpose | URL |
|---|---|
| GraphQL API | https://<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 as2026-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: passfirst, then passpageInfo.endCursorasafterwhilepageInfo.hasNextPageistrue. - 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.