Give it a search window, a meeting length, and for each participant a list of bu
Give it a search window, a meeting length, and for each participant a list of busy blocks — start and end, nothing else — and it returns the windows in which the meeting fits. Each participant carries their own IANA timezone and working hours, so nine-to-five means nine-to-five where they are, across daylight saving changes, and a meeting is only offered when it lies entirely inside one working-hours block for everyone counted as present.
Answeringour last check, 2026-10-11
1 of 1checks answered this week
1190 msmedian answer time
$0.002listed price per call
$0.002price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://buero.halowerk.com/v1/availability-resolve
| Category | Search and research |
|---|---|
| Provider host | buero.halowerk.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-11 | valid payment request | 402 | $0.002 | 1190 ms |
Example input (from the provider)
{
"body": {
"duration_minutes": 60,
"output_timezone": "Europe/Berlin",
"participants": [
{
"busy": [
{
"end": "2026-08-17T10:00:00Z",
"start": "2026-08-17T08:00:00Z"
}
],
"id": "a",
"timezone": "Europe/Berlin"
},
{
"busy": [],
"id": "b",
"timezone": "America/New_York"
}
],
"window": {
"end": "2026-08-19T00:00:00Z",
"start": "2026-08-17T00:00:00Z"
},
"working_hours": {
"end": "17:00",
"start": "09:00"
}
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"default_timezone": {
"default": "UTC",
"description": "Timezone for participants that do not name one.",
"maxLength": 60,
"type": "string"
},
"duration_minutes": {
"description": "How long the meeting needs to be.",
"maximum": 1440,
"minimum": 5,
"type": "integer"
},
"granularity_minutes": {
"default": 15,
"description": "Step of the candidate grid. Start times fall on this grid.",
"enum": [
5,
10,
15,
20,
30,
60
],
"type": "integer"
},
"ignore_working_hours": {
"default": false,
"description": "Search the whole window regardless of working hours.",
"type": "boolean"
},
"max_results": {
"default": 20,
"description": "How many windows to return. What is dropped is counted.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"min_attendees": {
"description": "Also return windows where only this many can attend. Default: everyone who is not optional.",
"minimum": 1,
"type": "integer"
},
"output_timezone": {
"description": "Additionally render every returned time in this zone. Defaults to default_timezone.",
"maxLength": 60,
"type": "string"
},
"participants": {
"description": "One entry per person. Identifiers are free text and need not be real names.",
"items": {
"additionalProperties": false,
"properties": {
"busy": {
"description": "Busy blocks. Overlapping blocks are merged.",
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "ISO 8601 with offset or Z.",
"maxLength": 40,
"type": "string"
},
"start": {
"description": "ISO 8601 with offset or Z.",
"maxLength": 40,
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"maxItems": 300,
"type": "array"
},
"id": {
"description": "Any label, unique within the request. \"a\" is fine.",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"optional": {
"default": false,
"description": "Optional participants may be missing from a returned window.",
"type": "boolean"
},
"timezone": {
"description": "IANA zone for this person, e.g. Europe/Berlin. Falls back to the request default.",
"maxLength": 60,
"type": "string"
},
"working_hours": {
"additionalProperties": false,
"description": "Working hours in this person local time. Omit to use the request default.",
"properties": {
"days": {
"description": "0 is Sunday, 6 is Saturday. Default Monday to Friday.",
"items": {
"maximum": 6,
"minimum": 0,
"type": "integer"
},
"maxItems": 7,
"type": "array"
},
"end": {
"description": "HH:MM. An end before the start means the block runs past midnight.",
"maxLength": 5,
"type": "string"
},
"start": {
"description": "HH:MM, e.g. 09:00.",
"maxLength": 5,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"id"
],
"type": "object"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
"window": {
"additionalProperties": false,
"description": "The search window. Every load figure is measured over exactly this span for everyone.",
"properties": {
"end": {
"description": "ISO 8601.",
"maxLength": 40,
"type": "string"
},
"start": {
"description": "ISO 8601.",
"maxLength": 40,
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},