ExpensesGet a mileage registration

Get a mileage registration

Returns one mileage registration by its integer ID, optionally with project, car and mileage rate embedded.

Reads a mileage registration (trip, distance, project / contract, owner, car, rate, approval and invoicing state, linked travel time). Use $expand=project,car,mileageRate to embed the related objects. Unknown IDs answer 500 (Code 100), not 404.

Use it to:

  • Confirming a registration after create or update
  • Payroll / finance integration reading an approved trip before reimbursement

Not for:

  • Listing — GET /v1/mileage-registration (caller's own registrations only)

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Changes are visible to the next read immediately.

Call first: GET /v1/mileage-registration, POST /v1/mileage-registration

Next: PUT /v1/mileage-registration, DELETE /v1/mileage-registration/{mileageRegistrationID}

See also: GET /v1/employee-expense/{employeeExpenseID}

Not yet documented: request → query params → $expand.

curl -X GET "https://app3.timelog.com/your-account/api/v1/mileage-registration/123?$expand=project" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "MileageRegistrationID": 123,
    "ID": "123e4567-e89b-12d3-a456-426614174000",
    "Date": "2024-12-25T10:00:00Z",
    "Purpose": "example_string",
    "OdometerStart": "null",
    "OdometerEnd": "null",
    "Distance": 42,
    "UnitType": 42,
    "TotalDistance": 3.14,
    "IsRoundtrip": true,
    "StartAddress": "123 Main St",
    "EndAddress": "123 Main St",
    "ProjectID": 123,
    "ProjectSubContractID": 123,
    "UserID": 123,
    "CarID": 123,
    "MileageRatesID": 123,
    "IsBillable": true,
    "IsApproved": true,
    "IsInvoiced": true,
    "InterfaceCreated": 42,
    "InterfaceModified": 42,
    "Project": {
      "ProjectID": 123,
      "ID": "123e4567-e89b-12d3-a456-426614174000",
      "Name": "John Doe",
      "No": "example_string",
      "ExpenseIsBillable": "null",
      "CustomerID": 123,
      "Customer": {
        "CustomerID": 123,
        "ID": "123e4567-e89b-12d3-a456-426614174000",
        "Name": "John Doe",
        "No": "example_string",
        "DefaultMileageDistance": 25,
        "CustomerStatusID": 123,
        "VATNo": "example_string",
        "OrganizationNo": "example_string"
      },
      "MainContractId": 123
    },
    "Car": {
      "CarID": 123,
      "ID": "123e4567-e89b-12d3-a456-426614174000",
      "Name": "John Doe",
      "LicensePlate": "example_string",
      "CarType": 42,
      "EmployeeUserID": "null",
      "EmployeeUser": {
        "UserID": 123,
        "ID": "123e4567-e89b-12d3-a456-426614174000",
        "FirstName": "John Doe",
        "LastName": "John Doe",
        "Initials": "example_string",
        "IsActive": true,
        "UserType": "Employee",
        "LegalEntityID": 123,
        "Email": "user@example.com"
      },
      "IsActive": true,
      "DefaultMileageRate": {
        "ID": "123e4567-e89b-12d3-a456-426614174000",
        "MileageRateID": 123,
        "Name": "John Doe",
        "IsActive": true,
        "SalaryCodeTaxFree": "null",
        "SalaryCodeTaxable": "null",
        "AccountNumber": "null",
        "IsDefaultForPrivateCar": true,
        "HasReimbursement": true,
        "UnitType": 42,
        "ReimbursementCurrencyID": 123,
        "LegalEntityID": 123
      },
      "IsDefault": true,
      "AllowEmployeeChangeMileageRate": true
    },
    "MileageRate": {
      "ID": "123e4567-e89b-12d3-a456-426614174000",
      "MileageRateID": 123,
      "Name": "John Doe",
      "IsActive": true,
      "SalaryCodeTaxFree": "null",
      "SalaryCodeTaxable": "null",
      "AccountNumber": "null",
      "IsDefaultForPrivateCar": true,
      "HasReimbursement": true,
      "UnitType": 42,
      "ReimbursementCurrencyID": 123,
      "LegalEntityID": 123
    },
    "TravelTimeRegistration": {
      "TimeRegistrationID": 123,
      "TaskID": 123,
      "Hours": 3.14,
      "Minutes": 42,
      "Comment": "null"
    }
  },
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ],
  "Actions": [
    {}
  ]
}
GET
/v1/mileage-registration/{mileageRegistrationID}
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
path
mileageRegistrationIDinteger
Required

The registration's integer ID.

Format: int32
query
$expandstring

Comma-separated list of nested objects to embed. TravelTimeRegistration is always filled when linked. Several values: one string, separated by ,. Allowed values: | Value | Name | Meaning | |---|---|---| | project | project | Fill Project (with its customer). | | car | car | Fill Car. | | mileageRate | mileageRate | Fill MileageRate (unit type, reimbursement currency, salary codes, account). |

Options: project, car, mileageRate
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Path Parameters

mileageRegistrationIDinteger
Required

The registration's integer ID.

Query Parameters

$expandstring

Comma-separated list of nested objects to embed. TravelTimeRegistration is always filled when linked.

Several values: one string, separated by ,.

Allowed values:

ValueNameMeaning
projectprojectFill Project (with its customer).
carcarFill Car.
mileageRatemileageRateFill MileageRate (unit type, reimbursement currency, salary codes, account).
Allowed values:projectcarmileageRate

Responses

Propertiesobject

A mileage (car travel) registration: the trip (date, purpose, addresses, one-way distance, round-trip flag, odometer readings), the project and contract it is booked on, the owner (UserID), car and mileage rate, approval / invoicing state, and the optional linked travel-time registration. Money is not on this object — the reimbursement and invoice amounts are derived from TotalDistance and the mileage rate's period rates. Nested Project, Car and MileageRate are filled only on $expand. Each entity carries a self link to GET /v1/mileage-registration/{id} and the mileage TAF actions.

Linksarray
Actionsobject[]