Business Hours
Business hours are stored as a company schedule with aggregated opening_hours entries.
One schedule per company. Requires call2lead permission.
Endpoints
GET
/v2/company_business_hours/
List schedules —
?q= searches company reference; ?reference= filters by company reference
POST
/v2/company_business_hours/
Create schedule for a company
GET
/v2/company_business_hours/{{reference}}/
Retrieve schedule by schedule reference
PUT
/v2/company_business_hours/{{reference}}/
Full update — replace schedule and opening hours
PUT requires the full schedule body (reference, company, integration_active, opening_hours). The complete opening_hours array replaces all slots — omitted entries are deleted.
Setting "integration_active": false via PUT may not deactivate the schedule — the API only applies the field when truthy. Contact Logimeter support if you need to deactivate a schedule.
Request examples
GET — retrieve schedule
curl -s "https://next.logimeter.com/v2/company_business_hours/trask-hours/" -H "Authorization: Token xxxxxxx_your_token_xxxxx"
await fetch('https://next.logimeter.com/v2/company_business_hours/trask-hours/', { headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx' } });
requests.get('https://next.logimeter.com/v2/company_business_hours/trask-hours/', headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx'})
POST — create schedule (split-day slots on Monday)
curl -sX POST "https://next.logimeter.com/v2/company_business_hours/" \
-H "Authorization: Token xxxxxxx_your_token_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"reference": "trask-hours",
"callback_url": "https://your-server.com/hours-callbacks/",
"integration_active": true,
"company": {"reference": "6e7d1f48-2ca1-4ef4-a433-a3fa765ff190"},
"opening_hours": [
{"day": 2, "from_hour": "08:00:00", "to_hour": "12:00:00"},
{"day": 2, "from_hour": "13:00:00", "to_hour": "17:00:00"},
{"day": 3, "from_hour": "08:00:00", "to_hour": "17:00:00"}
]
}'
await fetch('https://next.logimeter.com/v2/company_business_hours/', {
method: 'POST',
headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json' },
body: JSON.stringify({
reference: 'trask-hours',
callback_url: 'https://your-server.com/hours-callbacks/',
integration_active: true,
company: { reference: '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190' },
opening_hours: [
{ day: 2, from_hour: '08:00:00', to_hour: '12:00:00' },
{ day: 2, from_hour: '13:00:00', to_hour: '17:00:00' },
],
}),
});
requests.post(
'https://next.logimeter.com/v2/company_business_hours/',
headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json'},
json={
'reference': 'trask-hours',
'callback_url': 'https://your-server.com/hours-callbacks/',
'integration_active': True,
'company': {'reference': '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190'},
'opening_hours': [
{'day': 2, 'from_hour': '08:00:00', 'to_hour': '12:00:00'},
{'day': 2, 'from_hour': '13:00:00', 'to_hour': '17:00:00'},
],
},
)
PUT — full update
curl -sX PUT "https://next.logimeter.com/v2/company_business_hours/trask-hours/" \
-H "Authorization: Token xxxxxxx_your_token_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"reference": "trask-hours",
"callback_url": "https://your-server.com/hours-callbacks/",
"integration_active": true,
"company": {"reference": "6e7d1f48-2ca1-4ef4-a433-a3fa765ff190"},
"opening_hours": [
{"day": 2, "from_hour": "09:00:00", "to_hour": "18:00:00"}
]
}'
await fetch('https://next.logimeter.com/v2/company_business_hours/trask-hours/', {
method: 'PUT',
headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json' },
body: JSON.stringify({
reference: 'trask-hours',
callback_url: 'https://your-server.com/hours-callbacks/',
integration_active: true,
company: { reference: '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190' },
opening_hours: [{ day: 2, from_hour: '09:00:00', to_hour: '18:00:00' }],
}),
});
requests.put(
'https://next.logimeter.com/v2/company_business_hours/trask-hours/',
headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json'},
json={
'reference': 'trask-hours',
'callback_url': 'https://your-server.com/hours-callbacks/',
'integration_active': True,
'company': {'reference': '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190'},
'opening_hours': [{'day': 2, 'from_hour': '09:00:00', 'to_hour': '18:00:00'}],
},
)
Responses
200 OK / 201 Created
{
"id": 3,
"reference": "trask-hours",
"callback_url": "https://your-server.com/hours-callbacks/",
"integration_active": true,
"company": {"name": "Trask Industries", "reference": "6e7d1f48-2ca1-4ef4-a433-a3fa765ff190"},
"opening_hours": [
{"id": 10, "day": 2, "display_day": "Monday", "from_hour": "08:00:00", "to_hour": "12:00:00"},
{"id": 11, "day": 2, "display_day": "Monday", "from_hour": "13:00:00", "to_hour": "17:00:00"}
]
}
Validation errors (400)
Business hours validation errors are returned as JSON objects with an Error key:
400 Bad Request
{"Error": "Invalid Weekday specified: 9."}
400 Bad Request
{"Error:": "Overlapping Business Hours"}
| Scenario | Error key / message |
|---|---|
| No call2lead permission | You do not have permission to use Call2Lead. (string detail) |
| Duplicate schedule | This Company Schedule already exists |
| Missing weekday | {"Error": "No Weekday Specified."} |
| Invalid weekday | {"Error": "Invalid Weekday specified: N."} — use 1–7 |
| Missing from/to hour | {"Error": "No From Hour Specified."} / No To Hour Specified. |
| Overlapping hours (same day) | {"Error:": "Overlapping Business Hours"} |
| from_hour > to_hour | {"Error": "From Hour cannot be greater than To Hour."} |
Schedule fields
| Field | Type | Required | Description |
|---|---|---|---|
| reference | string | yes | Your schedule identifier (URL lookup key). |
| company | object | yes | {reference} — one schedule per company. |
| callback_url | string | optional | HTTPS callback URL (nullable). |
| integration_active | boolean | yes | Whether schedule is active. See PUT limitation above. |
| opening_hours[] | array | yes | May be empty. Multiple non-overlapping entries per day are allowed (e.g. split lunch). PUT replaces all slots. |
opening_hours[] fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | read-only | Present on GET responses only; not used on PUT (matching is by day + from_hour + to_hour). |
| day | integer | yes | Weekday 1=Sunday … 7=Saturday (e.g. 2 = Monday). |
| display_day | string | read-only | e.g. Monday. |
| from_hour | time | yes | HH:MM:SS or H:MM. |
| to_hour | time | yes | Must be >= from_hour. Same-day ranges only. |
Exception/holiday hours are only available on the legacy v1 API
(/v1/call2lead/exceptionbusinesshours/).