200 / 201
Valid API key + valid credentials/token.
Overview
Docs HomeWorkshop StartCarOwner StartWorkshop Onboarding
Get Started01 API key setup02 API key in requests03 Auth testing04 Bearer token callsCollections
Platform API Collection (Soft Launch)Soft Launch All EndpointsSoft Launch InteractiveFundamentalsCanonical SpecAPI Reference
API RootWorkshop IndexWorkshop InteractiveWorkshop Auth InteractiveAll Workshop EndpointsCarOwner IndexCarOwner InteractiveCarOwner Auth InteractiveAll CarOwner EndpointsCore/Common IndexCore InteractiveAll Core EndpointsWorkshop Namespaces
AuthUserProfileWorkshopCoreWorkshopOwnershipRequestContactsAddressesOpeningHoursServicesManagersCertificatesSocialMediaBookingsRatingsServiceHistoryEmailVerificationNotificationsMessagesBrregLookupBookingStatusesCategoriesReportsServiceRecordsUsersAccessV2RealtimePresenceSupportCarOwner Namespaces
AuthBookingBookingStatusCarBrandsCarOwnerPaymentsCarOwnerServiceRecordsCategoriesFavoritesMarketplaceMarketplaceCompatMarketplaceFiltersMessagesNotificationsPresenceProfileRatingsRealtimeServiceLogSettingsVehiclesCore Namespaces
CoreVehicleServiceHistoryWorkshopCommonCarOwnerCommonPage Introduction
This step gives implementation-level instructions for frontend engineers integrating authentication and protected Workshop calls.
Onboarding Step 3
This page gives you a complete test flow for `Auth` and `EmailVerification`, so you can validate integration before moving into the full Workshop API.
# .env.local MINBIL_API_BASE_URL=http://localhost:5000 MINBIL_API_KEY=replace_with_api_key MINBIL_TEST_EMAIL=test@example.com MINBIL_TEST_PASSWORD=replace_with_password
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 EMAIL = process.env.MINBIL_TEST_EMAIL ?? "test@example.com";
const PASSWORD = process.env.MINBIL_TEST_PASSWORD ?? "your-password";
async function runAuthFlow() {
const signIn = await axios.post(
BASE_URL + "/api/ws/auth/sign-in",
{ email: EMAIL, password: PASSWORD },
{
headers: {
"Content-Type": "application/json",
"x-api-key": API_KEY,
},
withCredentials: true,
},
);
const accessToken = signIn.data?.access_token;
const me = await axios.get(BASE_URL + "/api/ws/shop?full=true", {
headers: {
"Content-Type": "application/json",
"x-api-key": API_KEY,
Authorization: "Bearer " + accessToken,
},
});
const refresh = await axios.post(
BASE_URL + "/api/ws/auth/refresh-token",
{},
{
headers: {
"Content-Type": "application/json",
"x-api-key": API_KEY,
},
withCredentials: true,
},
);
await axios.post(
BASE_URL + "/api/ws/auth/logout",
{},
{
headers: {
"Content-Type": "application/json",
"x-api-key": API_KEY,
},
withCredentials: true,
},
);
console.log({
signInStatus: signIn.status,
profileStatus: me.status,
refreshStatus: refresh.status,
});
}
runAuthFlow().catch((error) => {
console.error(error.response?.status, error.response?.data ?? error.message);
});Valid API key + valid credentials/token.
Missing or invalid API key / token.
Rate limit on auth or support-related calls.