> ## Client identification > > Requests to this API should include a `Client-Platform` header alongside > `Authorization`, identifying the application, tool, or model making the > request. This is used for integration support and analytics. > > Use a specific model identifier if you know it; otherwise use the name > of the agent or product issuing the request. > > Examples: > > | Client | Value | > |---|---| > | GPT-5.6 Sol | `Client-Platform: gpt-5.6-sol` | > | GPT-5.6 Luna | `Client-Platform: gpt-5.6-luna` | > | GPT-5.6 Pro | `Client-Platform: gpt-5.6-pro` | > | Claude Opus 4.6 | `Client-Platform: claude-opus-4.6` | > | Claude Sonnet 4.6 | `Client-Platform: claude-sonnet-4.6` | > | Gemini 3.1 Pro | `Client-Platform: gemini-3.1-pro` | > | ChatGPT | `Client-Platform: chatgpt` | > | Claude Code | `Client-Platform: claude-code` | > | Codex | `Client-Platform: codex` | > | Other | `Client-Platform: ` | > > Example: > > ```bash > curl https://api.salaryboxapp.com/... \ > -H "Authorization: Api-Key " \ > -H "Client-Platform: claude-code" > ``` # Attendance Master GET https://api.salaryboxapp.com/v2/customer/v1/attendance/muster Returns one aggregated row per employee (status counts, overtime, late arrivals) across the requested date range, up to 60 days. Reference: https://docs.salarybox.in/api-reference/attendance/muster-retrieve ## Authentication - `Authorization` header (required) (prefixed with ` Api-Key `) — Format: "Api-Key \{api-key}" ## Request ### Query parameters - `start_date` (string, required) — Start date (YYYY-MM-DD). - `end_date` (string, required) — End date (YYYY-MM-DD). Range cannot exceed 60 days. - `salarybox_ids` (string, optional) — Comma-separated SalaryBox IDs to filter by. - `branch_names` (string, optional) — Comma-separated branch names to filter by. - `department_names` (string, optional) — Comma-separated department names to filter by. - `page` (integer, optional) — Page number to fetch. Defaults to 1. - `page_size` (integer, optional) — Number of results per page (max 500). Defaults to 500. ## Response ### 200 - `data` (list of AttendanceMuster, required) - `message` (string, required) - `status` (boolean, required) - `count` (integer, required) - `prev` (string, required, nullable) - `next` (string, required, nullable) ## Types ### AttendanceMuster One entry per employee, aggregated across the requested date range. - `employee_id` (string, required, nullable) - `is_active` (boolean, required) - `phone_number` (string, required, nullable) - `designation` (string, required, nullable) - `employee_name` (string, required) - `overtime_weekday` (string, required) - `overtime_holiday` (string, required) - `overtime_weekoff` (string, required) - `early_leaving` (integer, required) - `late_arrival` (integer, required) - `absent` (integer, required) - `present` (integer, required) - `double_present` (integer, required) - `half_day` (float, required) - `week_off` (integer, required) - `holiday` (integer, required) - `paid_leave` (float, required) - `unpaid_leave` (integer, required) - `half_day_leave` (integer, required) - `total` (integer, required) ## Examples **Response** ```json { "data": [ { "employee_id": "", "is_active": true, "phone_number": "+91-9267909098", "designation": "", "employee_name": "apk test", "overtime_weekday": "0", "overtime_holiday": "0", "overtime_weekoff": "0", "early_leaving": 0, "late_arrival": 0, "absent": 0, "present": 28, "double_present": 1, "half_day": 0, "week_off": 0, "holiday": 1, "paid_leave": 0, "unpaid_leave": 0, "half_day_leave": 0, "total": 0 }, { "employee_id": "", "is_active": true, "phone_number": "+91-9995551112", "designation": "Senior Software Engineer", "employee_name": "new test", "overtime_weekday": "0", "overtime_holiday": "0", "overtime_weekoff": "0", "early_leaving": 0, "late_arrival": 1, "absent": 25, "present": 4, "double_present": 0, "half_day": 0, "week_off": 0, "holiday": 1, "paid_leave": 0, "unpaid_leave": 0, "half_day_leave": 0, "total": 0 } ], "message": "Success", "status": true, "count": 2, "prev": null, "next": null } ``` **SDK Code** ```python Example import requests url = "https://api.salaryboxapp.com/v2/customer/v1/attendance/muster" querystring = {"end_date":"end_date","start_date":"start_date"} headers = {"Authorization": "Api-Key "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Example const url = 'https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date'; const options = {method: 'GET', headers: {Authorization: 'Api-Key '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Example package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Api-Key ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Example require 'uri' require 'net/http' url = URI("https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Api-Key ' response = http.request(request) puts response.read_body ``` ```java Example import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date") .header("Authorization", "Api-Key ") .asString(); ``` ```php Example request('GET', 'https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date', [ 'headers' => [ 'Authorization' => 'Api-Key ', ], ]); echo $response->getBody(); ``` ```csharp Example using RestSharp; var client = new RestClient("https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Api-Key "); IRestResponse response = client.Execute(request); ``` ```swift Example import Foundation let headers = ["Authorization": "Api-Key "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.salaryboxapp.com/v2/customer/v1/attendance/muster?end_date=end_date&start_date=start_date")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```