> ## 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" > ``` # Daily Attendance GET https://api.salaryboxapp.com/v2/customer/v1/attendance/daily Returns per-day attendance status for every employee in the requested date range (up to 60 days), with a company-wide summary per day. Reference: https://docs.salarybox.in/api-reference/attendance/daily-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 DailyAttendance, required) - `message` (string, required) - `status` (boolean, required) - `count` (integer, required) - `prev` (string, required, nullable) - `next` (string, required, nullable) ## Types ### DailyAttendance One entry per date in the requested range, with a company-wide summary. - `date` (date, required) - `day` (string, required) - `summary` (AttendanceDaySummary, required) - `employees` (list of EmployeeAttendanceRecord, required) ### AttendanceDaySummary - `present` (integer, required) - `double_present` (integer, required) - `absent` (integer, required) - `on_leave` (integer, required) - `half_day` (integer, required) - `holiday` (integer, required) - `weekoff` (integer, required) ### EmployeeAttendanceRecord - `salarybox_id` (string, required) - `attendance_status` (string, required, nullable) - `overtime` (string, required, nullable) - `leave_type_name` (string, required, nullable) - `is_half_day_leave` (boolean, required, nullable) ## Examples **Response** ```json { "data": [ { "date": "2026-07-01", "day": "Wednesday", "summary": { "present": 1, "double_present": 0, "absent": 1, "on_leave": 0, "half_day": 0, "holiday": 0, "weekoff": 0 }, "employees": [ { "salarybox_id": "SBHYBSEEIG", "attendance_status": "present", "overtime": "", "leave_type_name": null, "is_half_day_leave": false }, { "salarybox_id": "SBXDFJHVMA", "attendance_status": null, "overtime": null, "leave_type_name": null, "is_half_day_leave": null } ] } ], "message": "Success", "status": true, "count": 1, "prev": null, "next": null } ``` **SDK Code** ```python Example import requests url = "https://api.salaryboxapp.com/v2/customer/v1/attendance/daily" 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/daily?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/daily?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/daily?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/daily?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/daily?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/daily?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/daily?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() ```