Page Introduction

Booking namespace

This namespace page is optimized for frontend implementation with endpoint index, request/response examples, and code snippets.

  • Use auth and summary fields to configure your API client.
  • Use code snippets as starter references, not production-ready final code.
  • Validate critical mutations in interactive console before release.

CarOwner Namespace

Booking

Namespace details with request/response examples and code snippets.

10Endpoint methods

Endpoint Quick Index

Detailed Endpoints

POST/api/co/auth/sign-up

Register new Car Owner user

Creates a new Car Owner account. Notes - Email must be unique. - Password must be at least 8 characters.

Auth: None (public endpoint).Source: CAROWNER-API-COMPLETE.md

Request Example

{
  "email": "owner@minbil.io",
  "password": "StrongPass123!"
}

Response Example

{
  "message": "Registration successful.",
  "uid": "123e4567-e89b-12d3-a456-426614174000"
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "post",
    url: BASE_URL + "/api/co/auth/sign-up",
    headers: {
      "Content-Type": "application/json",
    },
    data: {
        "email": "owner@minbil.io",
        "password": "StrongPass123!"
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X POST 'https://api.minbil.no/api/co/auth/sign-up'\
  -H 'Accept: application/json'\
  -H 'Content-Type: application/json'\
  -d '{"email": "owner@minbil.io", "password": "StrongPass123!"}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/auth/sign-up", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "email": "owner@minbil.io",
    "password": "StrongPass123!"
  }),
});
const data = await response.json();
console.log(response.status, data);
GET/api/co/bookings

Endpoint operation.

Lists bookings for the authenticated car owner. Results are grouped by `group_id` by default. Query params - `grouped` (default `1`): return grouped response. - `expand`: comma-separated tokens (e.g. `co,ws`) to include related data.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{}

Response Example

[
  {
    "group_id": "string_value",
    "items": [
      {
        "id": {},
        "group_id": {},
        "workshop_org_nr": {},
        "service_id": {},
        "service_title": {},
        "service_description": {},
        "service_price": {},
        "service_start_time": {},
        "service_estimated_end_time": {},
        "service_actual_end_time": {},
        "registration_number": {},
        "attachments": {},
        "status": {},
        "status_display": {},
        "verify_booked": {},
        "verify_canceled": {},
        "verify_service_done": {},
        "cancel_request": {},
        "messages": {},
        "unread_count": {},
        "time_window": {},
        "can_reschedule": {},
        "can_request_cancel": {},
        "rating_allowed": {},
        "service_rating": {},
        "service_rating_message": {},
        "private_service_rating": {},
        "workshop_name": {},
        "service_estimated_hours": {},
        "carowner": {},
        "workshop": {}
      }
    ],
    "summary": {},
    "warnings": [
      {
        "code": {},
        "detail": {},
        "meta": {}
      }
    ]
  }
]
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "get",
    url: BASE_URL + "/api/co/bookings",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X GET 'https://api.minbil.no/api/co/bookings'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
});
const data = await response.json();
console.log(response.status, data);
POST/api/co/bookings

Create new booking (one or more services)

Creates a new booking (one or more services) for the authenticated car owner. Rules - All services must belong to the same workshop (`org_nr`). - If `services[]` is not provided, `service_id` + `message` are used. - Response may include `warnings[]` for potential conflicts. - all services MUST be from the same workshop (org_nr). - if services[] is not provided, service_id + message are used. - response contains warnings[] for double booking etc., but the call still succeeds.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{
  "org_nr": "921460929",
  "service_id": 1,
  "services": [
    {
      "service_id": 77,
      "message": "string_value",
      "attachments": [
        {}
      ]
    }
  ],
  "service_start_time": "2025-11-30 09:00",
  "registration_number": "BT57225",
  "attachments": [
    {}
  ],
  "message": {}
}

Response Example

{
  "data": {},
  "meta": {
    "request_id": "f59ee325-0445-4bd0-9bf1-73edcd7da151",
    "generated_at": "2026-02-12T10:00:00Z"
  }
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "post",
    url: BASE_URL + "/api/co/bookings",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    data: {
        "org_nr": "921460929",
        "service_id": 1,
        "services": [
            {
                "service_id": 77,
                "message": "string_value",
                "attachments": [
                    {}
                ]
            }
        ],
        "service_start_time": "2025-11-30 09:00",
        "registration_number": "BT57225",
        "attachments": [
            {}
        ],
        "message": {}
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X POST 'https://api.minbil.no/api/co/bookings'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'\
  -H 'Content-Type: application/json'\
  -d '{"org_nr": "921460929", "service_id": 1, "services": [{"service_id": 77, "message": "string_value", "attachments": [{}]}], "service_start_time": "2025-11-30 09:00", "registration_number": "BT57225", "attachments": [{}], "message": {}}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
  body: JSON.stringify({
    "org_nr": "921460929",
    "service_id": 1,
    "services": [
      {
        "service_id": 77,
        "message": "string_value",
        "attachments": [
          {}
        ]
      }
    ],
    "service_start_time": "2025-11-30 09:00",
    "registration_number": "BT57225",
    "attachments": [
      {}
    ],
    "message": {}
  }),
});
const data = await response.json();
console.log(response.status, data);
GET/api/co/bookings/booking-statuses

List all valid statuses for bookings

Returns all active booking statuses ordered by sort order.

Auth: None (public endpoint).Source: CAROWNER-API-COMPLETE.md

Request Example

{}

Response Example

[
  {
    "id": 1,
    "code": "string_value",
    "display_name": "string_value",
    "sort_order": 1,
    "is_active": true
  }
]
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "get",
    url: BASE_URL + "/api/co/bookings/booking-statuses",
    headers: {
      "Content-Type": "application/json",
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X GET 'https://api.minbil.no/api/co/bookings/booking-statuses'\
  -H 'Accept: application/json'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/booking-statuses", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
  },
});
const data = await response.json();
console.log(response.status, data);
POST/api/co/bookings/cancel

Endpoint operation.

Cancels or requests cancellation for a booking group or a single booking.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{
  "group_id": "string_value",
  "booking_id": 1,
  "cancellation_reason": 59.9139
}

Response Example

{
  "data": {},
  "meta": {
    "request_id": "f59ee325-0445-4bd0-9bf1-73edcd7da151",
    "generated_at": "2026-02-12T10:00:00Z"
  }
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "post",
    url: BASE_URL + "/api/co/bookings/cancel",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    data: {
        "group_id": "string_value",
        "booking_id": 1,
        "cancellation_reason": 59.9139
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X POST 'https://api.minbil.no/api/co/bookings/cancel'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'\
  -H 'Content-Type: application/json'\
  -d '{"group_id": "string_value", "booking_id": 1, "cancellation_reason": 59.9139}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/cancel", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
  body: JSON.stringify({
    "group_id": "string_value",
    "booking_id": 1,
    "cancellation_reason": 59.9139
  }),
});
const data = await response.json();
console.log(response.status, data);
GET/api/co/bookings/change-requests

Endpoint operation.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{}

Response Example

[
  {
    "id": 1,
    "booking_id": 1,
    "group_id": "string_value",
    "request_type": "string_value",
    "status": "string_value",
    "reason": "string_value",
    "requested_start_time": "2026-02-12T10:00:00Z",
    "created_at": "string_value",
    "resolved_at": "string_value"
  }
]
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "get",
    url: BASE_URL + "/api/co/bookings/change-requests",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X GET 'https://api.minbil.no/api/co/bookings/change-requests'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/change-requests", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
});
const data = await response.json();
console.log(response.status, data);
POST/api/co/bookings/change-requests

Endpoint operation.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{
  "booking_id": 1,
  "request_type": "string_value",
  "requested_start_time": "2026-02-12T10:00:00Z",
  "reason": "string_value"
}

Response Example

{
  "id": 1,
  "booking_id": 1,
  "group_id": "string_value",
  "request_type": "string_value",
  "status": "string_value",
  "reason": "string_value",
  "requested_start_time": "2026-02-12T10:00:00Z",
  "created_at": "string_value",
  "resolved_at": "string_value"
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "post",
    url: BASE_URL + "/api/co/bookings/change-requests",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    data: {
        "booking_id": 1,
        "request_type": "string_value",
        "requested_start_time": "2026-02-12T10:00:00Z",
        "reason": "string_value"
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X POST 'https://api.minbil.no/api/co/bookings/change-requests'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'\
  -H 'Content-Type: application/json'\
  -d '{"booking_id": 1, "request_type": "string_value", "requested_start_time": "2026-02-12T10:00:00Z", "reason": "string_value"}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/change-requests", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
  body: JSON.stringify({
    "booking_id": 1,
    "request_type": "string_value",
    "requested_start_time": "2026-02-12T10:00:00Z",
    "reason": "string_value"
  }),
});
const data = await response.json();
console.log(response.status, data);
POST/api/co/bookings/rate/123

Endpoint operation.

Submits a service rating for a completed booking. Rules - Rating is only allowed when the booking is completed. - Valid range: 0–5.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{
  "service_rating": 499.0,
  "service_rating_message": "string_value",
  "private_service_rating": true
}

Response Example

{
  "data": {},
  "meta": {
    "request_id": "f59ee325-0445-4bd0-9bf1-73edcd7da151",
    "generated_at": "2026-02-12T10:00:00Z"
  }
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "post",
    url: BASE_URL + "/api/co/bookings/rate/123",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    data: {
        "service_rating": 499,
        "service_rating_message": "string_value",
        "private_service_rating": true
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X POST 'https://api.minbil.no/api/co/bookings/rate/123'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'\
  -H 'Content-Type: application/json'\
  -d '{"service_rating": 499.0, "service_rating_message": "string_value", "private_service_rating": true}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/rate/123", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
  body: JSON.stringify({
    "service_rating": 499,
    "service_rating_message": "string_value",
    "private_service_rating": true
  }),
});
const data = await response.json();
console.log(response.status, data);
GET/api/co/bookings/ratings

Endpoint operation.

Returns all ratings submitted by the authenticated car owner.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{}

Response Example

{
  "total": 1,
  "items": [
    {
      "booking_id": 1,
      "workshop_org_nr": "921460929",
      "workshop_name": "string_value",
      "service_id": 1,
      "service_title": "string_value",
      "registration_number": "BT57225",
      "status": "string_value",
      "service_start_time": "2026-02-12T10:00:00Z",
      "service_estimated_end_time": "2026-02-12T10:00:00Z",
      "service_actual_end_time": "2026-02-12T10:00:00Z",
      "service_rating": 499.0,
      "service_rating_message": "string_value",
      "private_service_rating": true,
      "rated_at": "string_value"
    }
  ]
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "get",
    url: BASE_URL + "/api/co/bookings/ratings",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X GET 'https://api.minbil.no/api/co/bookings/ratings'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/ratings", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
});
const data = await response.json();
console.log(response.status, data);
GET/api/co/bookings/123

Endpoint operation.

Fetches a single booking line for the authenticated car owner. Query params - `expand`: comma-separated tokens (e.g. `co,ws`) to include related data.

Auth: Bearer token (`Authorization: Bearer <token>`)Source: CAROWNER-API-COMPLETE.md

Request Example

{}

Response Example

{
  "id": 1,
  "group_id": "string_value",
  "workshop_org_nr": "921460929",
  "service_id": 1,
  "service_title": "string_value",
  "service_description": "string_value",
  "service_price": 499.0,
  "service_start_time": "2026-02-12T10:00:00Z",
  "service_estimated_end_time": "2026-02-12T10:00:00Z",
  "service_actual_end_time": "2026-02-12T10:00:00Z",
  "registration_number": "BT57225",
  "attachments": [
    {}
  ],
  "status": "string_value",
  "status_display": "string_value",
  "verify_booked": true,
  "verify_canceled": true,
  "verify_service_done": true,
  "cancel_request": true,
  "messages": {},
  "unread_count": 1,
  "time_window": {},
  "can_reschedule": true,
  "can_request_cancel": true,
  "rating_allowed": true,
  "service_rating": 499.0,
  "service_rating_message": "string_value",
  "private_service_rating": true,
  "workshop_name": "string_value",
  "service_estimated_hours": 499.0,
  "carowner": {},
  "workshop": {}
}
Node.js Axios example
import axios from "axios";

const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

async function run() {
  const response = await axios({
    method: "get",
    url: BASE_URL + "/api/co/bookings/123",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer " + ACCESS_TOKEN,
    },
    timeout: 20000,
  });
  console.log(response.status, response.data);
}

run().catch((error) => {
  console.error(error.response?.status, error.response?.data ?? error.message);
});
cURL example
curl -X GET 'https://api.minbil.no/api/co/bookings/123'\
  -H 'Accept: application/json'\
  -H 'Authorization: Bearer <access-token>'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";

const response = await fetch(BASE_URL + "/api/co/bookings/123", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + ACCESS_TOKEN,
  },
});
const data = await response.json();
console.log(response.status, data);