Introduction
Public API reference for the Intratime Company Apps V2 integration.
This documentation covers the Intratime Company Apps V2 API.
All endpoints require Bearer token authentication.
See the Migration Guide section if you are migrating from the legacy newapi.intratime.es integration.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_BEARER_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
Contact your Intratime account manager to obtain an API token. No self-service token endpoint exists. See the Migration Guide section for full token onboarding instructions.
Clients
List all clients.
requires authentication
Returns all clients belonging to the authenticated company as a JSON array.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/client" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/client"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
[
{
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 100",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null
},
{
"CLIENT_ID": 11,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Gamma Industries S.A.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Valencia",
"CLIENT_CITY": "Valencia",
"CLIENT_ADDRESS": "Avinguda del Regne de Valencia 25",
"CLIENT_CP": "46005",
"CLIENT_COORDINATES": "39.469903,-0.376288",
"CID_OLD": null
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new client.
requires authentication
All address fields are required. Returns the created client on success.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/client" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Delta Corp\",
\"country\": \"ES\",
\"region\": \"Andalusia\",
\"city\": \"Seville\",
\"address\": \"Calle Sierpes 5\",
\"cp\": \"41004\",
\"coordinates\": \"37.388050,-5.982409\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/client"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Delta Corp",
"country": "ES",
"region": "Andalusia",
"city": "Seville",
"address": "Calle Sierpes 5",
"cp": "41004",
"coordinates": "37.388050,-5.982409"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"CLIENT_ID": 12,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Delta Corp",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Andalusia",
"CLIENT_CITY": "Seville",
"CLIENT_ADDRESS": "Calle Sierpes 5",
"CLIENT_CP": "41004",
"CLIENT_COORDINATES": "37.388050,-5.982409",
"CID_OLD": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single client.
requires authentication
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/client/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/client/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 100",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null,
"company": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a client.
requires authentication
All address fields are required. Returns the updated client on success.
Example request:
curl --request PUT \
"https://apicompanies.intratime.es/company-apps/api/v2/client/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Beta Solutions Ltd. (Updated)\",
\"country\": \"ES\",
\"region\": \"Catalonia\",
\"city\": \"Barcelona\",
\"address\": \"Passeig de Gracia 200\",
\"cp\": \"08008\",
\"coordinates\": \"41.396041,2.161047\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/client/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Beta Solutions Ltd. (Updated)",
"country": "ES",
"region": "Catalonia",
"city": "Barcelona",
"address": "Passeig de Gracia 200",
"cp": "08008",
"coordinates": "41.396041,2.161047"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd. (Updated)",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 200",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a client.
requires authentication
Soft-deletes the client record. Returns an empty 204 response on success.
Example request:
curl --request DELETE \
"https://apicompanies.intratime.es/company-apps/api/v2/client/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/client/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204, Client deleted):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Clocking Requests
List clocking requests for an employee.
requires authentication
Returns a {"clocking_requests": [...]} wrapper containing all time-correction
requests for the specified employee within the given year (defaults to the
current year when omitted).
The route-bound {employee} is company-fenced by model binding — a cross-tenant
employee resolves to 404 before this action runs.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user/16/clocking_requests?year=2024" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"year\": \"9775\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16/clocking_requests"
);
const params = {
"year": "2024",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"year": "9775"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"clocking_requests": [
{
"CLOCKING_REQUESTS_ID": 55,
"CLOCKING_REQUESTS_USER_ID": 101,
"CLOCKING_REQUESTS_TYPE": 1,
"CLOCKING_REQUESTS_STATUS": 0,
"CLOCKING_REQUESTS_DT_START": "2024-03-10 09:00:00",
"CLOCKING_REQUESTS_DT_END": "2024-03-10 10:00:00",
"CLOCKING_REQUESTS_COMMENTS": "Forgot to clock in",
"CLOCKING_REQUESTS_TARGET_CLOCKING_ID": null,
"CLOCKING_REQUESTS_AMEND_PROJECT_ID": null,
"CLOCKING_REQUESTS_COMPANY_ID": 42
},
{
"CLOCKING_REQUESTS_ID": 56,
"CLOCKING_REQUESTS_USER_ID": 101,
"CLOCKING_REQUESTS_TYPE": 2,
"CLOCKING_REQUESTS_STATUS": 1,
"CLOCKING_REQUESTS_DT_START": "2024-03-12 14:00:00",
"CLOCKING_REQUESTS_DT_END": "2024-03-12 14:30:00",
"CLOCKING_REQUESTS_COMMENTS": "Time correction",
"CLOCKING_REQUESTS_TARGET_CLOCKING_ID": 8840,
"CLOCKING_REQUESTS_AMEND_PROJECT_ID": null,
"CLOCKING_REQUESTS_COMPANY_ID": 42
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Clockings
Record a new clocking.
requires authentication
Creates a clocking event for the specified employee. The response is a
flat INOUT_* object — NOT the legacy {"success":true,"clocking":{...}} wrapper.
If the optional user_file image is included, send the request as
multipart/form-data.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/user/16/clocking" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "user_action=0"\
--form "user_timestamp=2024-03-15 09:02:45"\
--form "user_gps_coordinates=40.416775,-3.703790"\
--form "user_project=7"\
--form "user_expense=2"\
--form "inout_device_uid=device-uuid-abc123"\
--form "user_use_server_time="\
--form "expense_amount=15.5"\
--form "user_file=@/tmp/php2es2q1t6ta2tffCfg57" const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16/clocking"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('user_action', '0');
body.append('user_timestamp', '2024-03-15 09:02:45');
body.append('user_gps_coordinates', '40.416775,-3.703790');
body.append('user_project', '7');
body.append('user_expense', '2');
body.append('inout_device_uid', 'device-uuid-abc123');
body.append('user_use_server_time', '');
body.append('expense_amount', '15.5');
body.append('user_file', document.querySelector('input[name="user_file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201):
{
"INOUT_ID": 8841,
"INOUT_USER_ID": 101,
"INOUT_TYPE": 0,
"INOUT_DATE": "2024-03-15 09:02:47",
"INOUT_END_DATE": null,
"INOUT_PROJECT_ID": 7,
"INOUT_COMMENTS": null,
"INOUT_COORDINATES": "40.416775,-3.703790",
"INOUT_SOURCE": 2,
"INOUT_DEVICE_UID": "device-uuid-abc123",
"INOUT_DEVICE_DATE": "2024-03-15 09:02:45",
"INOUT_USE_SERVER_TIME": false,
"INOUT_TELECOMMUTING": false
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List clockings for an employee.
requires authentication
Returns a flat JSON array of clocking records for the specified employee.
A hard server-side cap (LoginLogout::COMPANY_APPS_MAX_RESULTS) is always
applied — maxResult may further restrict but cannot exceed the cap.
Clocking types map to: 0 = Check-in, 1 = Check-out, 2 = Break start, 3 = Break end.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user/16/clockings?last=1&maxResult=50&from=2024-03-01+00%3A00%3A00&to=2024-03-31+23%3A59%3A59&type=0%2C1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"last\": \"1\",
\"maxResult\": 16,
\"from\": \"2026-07-16 16:42:12\",
\"to\": \"2052-08-08\",
\"type\": \"1,3,1,2,2,3,2\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16/clockings"
);
const params = {
"last": "1",
"maxResult": "50",
"from": "2024-03-01 00:00:00",
"to": "2024-03-31 23:59:59",
"type": "0,1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"last": "1",
"maxResult": 16,
"from": "2026-07-16 16:42:12",
"to": "2052-08-08",
"type": "1,3,1,2,2,3,2"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
[
{
"INOUT_ID": 8840,
"INOUT_USER_ID": 101,
"INOUT_TYPE": 0,
"INOUT_DATE": "2024-03-14 08:58:10",
"INOUT_END_DATE": null,
"INOUT_PROJECT_ID": null,
"INOUT_COMMENTS": null,
"INOUT_COORDINATES": null,
"INOUT_SOURCE": 2,
"INOUT_DEVICE_UID": null,
"INOUT_DEVICE_DATE": "2024-03-14 08:58:10",
"INOUT_USE_SERVER_TIME": true,
"INOUT_TELECOMMUTING": false
},
{
"INOUT_ID": 8841,
"INOUT_USER_ID": 101,
"INOUT_TYPE": 1,
"INOUT_DATE": "2024-03-14 17:03:22",
"INOUT_END_DATE": null,
"INOUT_PROJECT_ID": null,
"INOUT_COMMENTS": null,
"INOUT_COORDINATES": null,
"INOUT_SOURCE": 2,
"INOUT_DEVICE_UID": null,
"INOUT_DEVICE_DATE": "2024-03-14 17:03:22",
"INOUT_USE_SERVER_TIME": true,
"INOUT_TELECOMMUTING": false
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Companies
Get the authenticated company's profile.
requires authentication
Returns the full company object including all employees with their associated projects, clients, and work centres.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/companies/current" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/companies/current"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"COMPANY_ID": 42,
"COMPANY_UNIQUE_ID": "abc12345-1234-1234-1234-abc123456789",
"COMPANY_NAME": "Acme Corp S.L.",
"COMPANY_CIF": "B12345678",
"COMPANY_CCC": "1234567890",
"COMPANY_ADDRESS": "Calle Gran Via 1",
"COMPANY_COUNTRY": "ES",
"COMPANY_LOCATION": "Madrid",
"COMPANY_CP": "28013",
"COMPANY_COORDINATES": "40.416775,-3.703790",
"COMPANY_MAIL": "admin@acme.example",
"COMPANY_PASSWORD": "",
"COMPANY_PRO": 1,
"COMPANY_RATE": 2,
"COMPANY_DELETION_DATE": null,
"COMPANY_HAS_ADS": 0,
"COMPANIES_TOKEN": "",
"COMPANY_LOGO": "https://cdn.example.com/logos/acme.png",
"COMPANY_SIGNATURE": null,
"COMPANY_CONTINUOUS_WORKDAYS": 0,
"COMPANY_USE_SERVER_TIME": 1,
"COMPANY_FORCE_LOCATION": 0,
"COMPANY_CALENDAR_DAYS": 0,
"COMPANY_SHOW_CLIENT": 1,
"COMPANY_SHOW_CLIENT_SELECT": 0,
"COMPANY_EMAIL_UPDATES": 1,
"COMPANY_API_COMMENTS": 0,
"COMPANY_TIMEZONE": "Europe/Madrid",
"users": [
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith",
"USER_EMAIL": "jane.smith@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.smith@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Company login (deprecated — 410 Gone).
requires authentication
This endpoint has been retired. API access must now be granted formally by Intratime. Contact support to request a Bearer token.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/companies/login" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/companies/login"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (410):
{
"error": {
"code": "ENDPOINT_GONE",
"message": "This login endpoint is no longer available. Access must now be requested formally.",
"contact": "support@intratime.es"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Employees
List all employees.
requires authentication
Returns all active employees of the authenticated company, each with their associated projects, clients, and work centres.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
[
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith",
"USER_EMAIL": "jane.smith@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.smith@acme.example",
"USER_PASWORD": "",
"projects": [
{
"PROJECT_ID": 7,
"PROJECT_NAME": "Alpha Project",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": null,
"users": []
}
],
"workcenters": [
{
"WORKCENTER_ID": 3,
"WORKCENTER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"WORKCENTER_NAME": "Main Office",
"WORKCENTER_COUNTRY": "ES",
"WORKCENTER_REGION": "Madrid",
"WORKCENTER_CITY": "Madrid",
"WORKCENTER_ADDRESS": "Calle Gran Via 1",
"WORKCENTER_CP": "28013",
"WORKCENTER_COORDINATES": "40.416775,-3.703790",
"WORKCENTER_CREATION_DATE": "2023-01-15 09:00:00",
"WCID_OLD": null
}
]
},
{
"USER_ID": 102,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "John Doe",
"USER_EMAIL": "john.doe@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "john.doe@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new employee.
requires authentication
Creates an employee record under the authenticated company. Optionally accepts a profile picture via multipart form upload.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/user" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "user_email=alice@acme.example"\
--form "user_pin=1234"\
--form "user_name=Alice Doe"\
--form "user_file=@/tmp/phpigqdkavo74lg7WcKFg9" const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('user_email', 'alice@acme.example');
body.append('user_pin', '1234');
body.append('user_name', 'Alice Doe');
body.append('user_file', document.querySelector('input[name="user_file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201):
{
"USER_ID": 103,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Alice Doe",
"USER_EMAIL": "alice.doe@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "alice.doe@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
Example response (422):
{
"message": "Validation failed",
"errors": {
"user_email": [
"The user email field is required.",
"The user email has already been taken."
],
"user_pin": [
"The user pin field is required."
],
"user_name": [
"The user name field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Employee login (deprecated — 410 Gone).
requires authentication
This endpoint has been retired. Use Bearer token authentication instead. Contact Intratime to obtain an API token.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/user/login" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/login"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (410):
{
"error": {
"code": "ENDPOINT_GONE",
"message": "This login endpoint is no longer available. Access must now be requested formally.",
"contact": "support@intratime.es"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get my profile (deprecated — 410 Gone).
requires authentication
This endpoint has been retired. Use GET /company-apps/api/v2/user/{employee} instead.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user/my-profile" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/my-profile"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (410):
{
"error": {
"code": "ENDPOINT_GONE",
"message": "The 'my-profile' endpoint has been retired. Please refer to the new alternative.",
"alternative_01": "https://example.com/company-apps/api/v2/user/{employee_id}",
"alternative_02": "https://old.example.com/api/user/{employee_id}",
"documentation": "https://docs.example.com",
"contact": "support@intratime.es"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get my projects (deprecated — 410 Gone).
requires authentication
This endpoint has been retired. Use GET /company-apps/api/v2/user/{employee} instead
(the employee object includes their assigned projects).
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user/my-project" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/my-project"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (410):
{
"error": {
"code": "ENDPOINT_GONE",
"message": "The 'my-project' endpoint has been retired. Please refer to the new alternative.",
"alternative_01": "https://example.com/company-apps/api/v2/user/{employee_id}",
"alternative_02": "https://old.example.com/api/user/{employee_id}",
"documentation": "https://docs.example.com",
"contact": "support@intratime.es"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single employee.
requires authentication
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/user/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith",
"USER_EMAIL": "jane.smith@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.smith@acme.example",
"USER_PASWORD": "",
"projects": [
{
"PROJECT_ID": 7,
"PROJECT_NAME": "Alpha Project",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": null,
"users": []
}
],
"workcenters": [
{
"WORKCENTER_ID": 3,
"WORKCENTER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"WORKCENTER_NAME": "Main Office",
"WORKCENTER_COUNTRY": "ES",
"WORKCENTER_REGION": "Madrid",
"WORKCENTER_CITY": "Madrid",
"WORKCENTER_ADDRESS": "Calle Gran Via 1",
"WORKCENTER_CP": "28013",
"WORKCENTER_COORDINATES": "40.416775,-3.703790",
"WORKCENTER_CREATION_DATE": "2023-01-15 09:00:00",
"WCID_OLD": null
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an employee.
requires authentication
Updates an employee's profile. All fields are required except user_pin
and user_file. Providing user_file replaces any existing profile picture.
Example request:
curl --request PUT \
"https://apicompanies.intratime.es/company-apps/api/v2/user/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "user_email=alice@acme.example"\
--form "user_pin=5678"\
--form "user_name=Alice Smith"\
--form "user_file=@/tmp/phpknoq511jqss3cIsFlqp" const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('user_email', 'alice@acme.example');
body.append('user_pin', '5678');
body.append('user_name', 'Alice Smith');
body.append('user_file', document.querySelector('input[name="user_file"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith Updated",
"USER_EMAIL": "jane.updated@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.updated@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
Example response (422):
{
"message": "Validation failed",
"errors": {
"user_email": [
"The user email field is required.",
"The user email has already been taken."
],
"user_pin": [
"The user pin field is required."
],
"user_name": [
"The user name field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete an employee.
requires authentication
Soft-deletes the employee record. Returns an empty 204 response on success.
Example request:
curl --request DELETE \
"https://apicompanies.intratime.es/company-apps/api/v2/user/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/user/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204, Employee deleted):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expenses
List expense types.
requires authentication
Returns the expense-type catalogue for the authenticated company as a flat JSON array. There are no filters — all active expense types are returned.
Each entry includes an EXPENSE_ICON URL (may be an empty string when no
icon has been configured).
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/expenses" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/expenses"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
[
{
"EXPENSE_ID": 1,
"EXPENSE_NAME": "Travel",
"EXPENSE_ICON": "https://cdn.example.com/expenses/travel.png",
"EXPENSE_CC": "TRV"
},
{
"EXPENSE_ID": 2,
"EXPENSE_NAME": "Meal",
"EXPENSE_ICON": "https://cdn.example.com/expenses/meal.png",
"EXPENSE_CC": "MLT"
},
{
"EXPENSE_ID": 3,
"EXPENSE_NAME": "Accommodation",
"EXPENSE_ICON": "",
"EXPENSE_CC": "ACC"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Projects
List all projects.
requires authentication
Returns all projects belonging to the authenticated company, each with their associated client and assigned employees.
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/project" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/project"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
[
{
"PROJECT_ID": 7,
"PROJECT_NAME": "Alpha Project",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": {
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 100",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null
},
"users": [
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith",
"USER_EMAIL": "jane.smith@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.smith@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
]
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new project.
requires authentication
Creates a project under the authenticated company and optionally assigns employees. Returns the created project with its client and assigned users.
Example request:
curl --request POST \
"https://apicompanies.intratime.es/company-apps/api/v2/project" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Beta Project\",
\"client\": 11,
\"user_ids\": \"101,102\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/project"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Beta Project",
"client": 11,
"user_ids": "101,102"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"PROJECT_ID": 8,
"PROJECT_NAME": "Beta Project",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": {
"CLIENT_ID": 11,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Gamma Industries S.A.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Valencia",
"CLIENT_CITY": "Valencia",
"CLIENT_ADDRESS": "Avinguda del Regne de Valencia 25",
"CLIENT_CP": "46005",
"CLIENT_COORDINATES": "39.469903,-0.376288",
"CID_OLD": null
},
"users": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single project.
requires authentication
Example request:
curl --request GET \
--get "https://apicompanies.intratime.es/company-apps/api/v2/project/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"PROJECT_ID": 7,
"PROJECT_NAME": "Alpha Project",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": {
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 100",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null
},
"users": [
{
"USER_ID": 101,
"USER_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"USER_NAME": "Jane Smith",
"USER_EMAIL": "jane.smith@acme.example",
"USER_TOKEN": "",
"USER_IMAGE": null,
"USER_NIF": null,
"USER_AFFILIATION": null,
"USER_WORKING_TIME": null,
"USER_USERNAME": "jane.smith@acme.example",
"USER_PASWORD": "",
"projects": [],
"workcenters": []
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a project.
requires authentication
Updates the project name, client association, and employee assignments.
Providing user_ids replaces the existing employee list entirely.
Example request:
curl --request PUT \
"https://apicompanies.intratime.es/company-apps/api/v2/project/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Alpha Project Updated\",
\"client\": 10,
\"user_ids\": \"101\"
}"
const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Alpha Project Updated",
"client": 10,
"user_ids": "101"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"PROJECT_ID": 7,
"PROJECT_NAME": "Alpha Project Updated",
"PROJECT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"PID_OLD": null,
"client": {
"CLIENT_ID": 10,
"CLIENT_COMPANY": "abc12345-1234-1234-1234-abc123456789",
"CLIENT_NAME": "Beta Solutions Ltd.",
"CLIENT_COUNTRY": "ES",
"CLIENT_REGION": "Catalonia",
"CLIENT_CITY": "Barcelona",
"CLIENT_ADDRESS": "Passeig de Gracia 100",
"CLIENT_CP": "08008",
"CLIENT_COORDINATES": "41.396041,2.161047",
"CID_OLD": null
},
"users": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a project.
requires authentication
Soft-deletes the project record. Returns an empty 204 response on success.
Example request:
curl --request DELETE \
"https://apicompanies.intratime.es/company-apps/api/v2/project/16" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://apicompanies.intratime.es/company-apps/api/v2/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204, Project deleted):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Migration Guide
This section is for integrators migrating from the legacy
newapi.intratime.esAPI. If you are starting a new integration, start with the Authentication section.
TL;DR
Your old URL still resolves via the load balancer, but you MUST change the auth header and several endpoints changed behavior:
- Replace
token: <value>header withAuthorization: Bearer <sanctum_token> - The clocking
POSTresponse shape changed (flatINOUT_*object, no wrapper) PUT /user/{employee}now returns200— not201_method=PUTform spoofing is not supported- Four legacy endpoints return
410 ENDPOINT_GONE— see the tombstone section below
Authentication Change
Legacy header (no longer accepted):
token: your_token_value
Required header:
Authorization: Bearer your_sanctum_token
Cross-origin Authorization drop on redirects: If your client follows HTTP redirects, the
Authorizationheader may be silently dropped by some HTTP clients (RFC 9110 §15.4). Call the canonical V2 host directly instead of relying on load-balancer URL rewriting.
For token issuance, see the Token Onboarding section below.
Deprecated Empty Fields
The following fields are always empty strings ("") in all V2 API responses. They are retained for backward compatibility but carry no value. Do not use them for authentication or session management.
| Field | Status |
|---|---|
USER_TOKEN |
Deprecated — always "" |
COMPANIES_TOKEN |
Deprecated — always "" |
COMPANY_PASSWORD |
Deprecated — always "" |
Behavior Changes
Clocking Store — Flat Response Shape
The POST /user/{employee}/clocking endpoint response shape changed:
Legacy shape (no longer returned):
{
"success": true,
"clocking": {
"INOUT_ID": 12345,
"INOUT_TYPE": "in"
}
}
*V2 shape (flat INOUT_ object):**
{
"INOUT_ID": 12345,
"INOUT_TYPE": "in",
"INOUT_SUBTYPE": null
}
PUT /user/{employee} — Returns 200
PUT /user/{employee} returns 200 OK on success. The legacy endpoint returned 201 Created.
No _method=PUT Spoofing
The V2 API does not support HTML form _method overrides. Send the correct HTTP verb (PUT, DELETE) directly.
410 Tombstones — Discontinued Endpoints
The following endpoints are permanently discontinued and return 410 ENDPOINT_GONE:
POST companies/login
Authentication via a dedicated company login endpoint is discontinued. API access requires a Sanctum Bearer token issued by Intratime.
Migration: Contact your Intratime account manager to obtain a Bearer token. See Token Onboarding.
POST user/login
Authentication via a dedicated user login endpoint is discontinued.
Migration: Use an Authorization: Bearer token issued by Intratime.
GET user/my-profile
Migration: Use GET /company-apps/api/v2/user/{employee} with the employee ID from your token payload.
GET user/my-project (legacy: /api/my-project)
Migration: Use GET /company-apps/api/v2/project to list all projects accessible to your token.
URL Transparency Table
The load balancer transparently rewrites legacy URLs to their V2 equivalents for most endpoints. The table below lists all known mappings grouped by change type.
Note: URL rewriting is transparent, but the auth header change is required on all non-gone endpoints. Endpoints marked
behavior-changedalso require additional client-side changes.
redirected / auth-changed (URL only — Bearer auth header required)
| Legacy Method | Legacy Path | Canonical Path |
|---|---|---|
| GET | /api/user/ |
company-apps/api/v2/user |
| POST | /api/user |
company-apps/api/v2/user |
| GET | /api/user/{id} |
company-apps/api/v2/user/{employee} |
| DELETE | /api/user/{id} |
company-apps/api/v2/user/{employee} |
| GET | /api/client/ |
company-apps/api/v2/client |
| POST | /api/client |
company-apps/api/v2/client |
| GET | /api/client/{id} |
company-apps/api/v2/client/{client} |
| DELETE | /api/client/{id} |
company-apps/api/v2/client/{client} |
| GET | /api/project/ |
company-apps/api/v2/project |
| POST | /api/project |
company-apps/api/v2/project |
| GET | /api/project/{id} |
company-apps/api/v2/project/{project} |
| DELETE | /api/project/{id} |
company-apps/api/v2/project/{project} |
| GET | /api/expenses |
company-apps/api/v2/expenses |
behavior-changed (URL + auth + additional client changes required)
| Legacy | Canonical | Change |
|---|---|---|
POST /api/user/{id} |
PUT company-apps/api/v2/user/{employee} |
Verb changed: use PUT |
POST /api/client/{id} |
PUT company-apps/api/v2/client/{client} |
Verb changed: use PUT |
POST /api/project/{id} |
PUT company-apps/api/v2/project/{project} |
Verb changed: use PUT |
POST /api/user/clocking |
POST company-apps/api/v2/user/{employee}/clocking |
Explicit {employee} required; response shape changed (flat INOUT_*) |
GET /api/user/clockings |
GET company-apps/api/v2/user/{employee}/clockings |
Explicit {employee} required |
GET /api/user/clocking_requests |
GET company-apps/api/v2/user/{employee}/clocking_requests |
Explicit {employee} required |
gone (410 — endpoint permanently discontinued)
| Legacy | Reason |
|---|---|
POST /api/companies/login |
Authentication endpoint removed; use Bearer token |
POST /api/user/login |
Authentication endpoint removed; use Bearer token |
GET /api/user/my-profile |
Use GET /company-apps/api/v2/user/{employee} |
GET /api/my-project |
Use GET /company-apps/api/v2/project |
Token Onboarding
No self-service token endpoint exists.
Token issuance for API access requires a manual process:
- The company owner contacts their Intratime account manager.
- Intratime provisions a Sanctum Bearer token scoped to the company.
- The token is delivered out-of-band (contact channel TBD with Intratime).
Once you have the token, include it in every API request:
Authorization: Bearer <your_token>