# Recently Updated Returns items and folders updated since a given timestamp. Use this for incremental syncs. Pass updated_since as a Unix epoch timestamp (seconds) to filter to items modified after that time. If updated_since is omitted, behaves like GET /items and returns all items paginated. Endpoint: GET /api/v1/items/recent Security: BearerAuth ## Query parameters: - `per_page` (number) Page size | Defaults to 10 Example: "2" - `page` (number) Page number | Defaults to 1 Example: "1" - `updated_since` (number) Filter by updated at | If updated since is not provided, the end point functions similar to list endpoint | Number of seconds since the Epoch. Example: "1559120004" - `include` (string) Includes nested association Example: "custom_attributes,photos,options" ## Response 200 fields (application/json): - `data` (array) List of recently updated items and folders. - `data.id` (number) Sortly's numeric ID for this item or folder. Assigned on creation. - `data.name` (string, required) Name of the item or folder. Max 190 characters. Example: "Standing Desk" - `data.price` (number,null) Unit price. Example: 599 - `data.quantity` (number,null) How many you have. For items measured in something other than units, see measured_quantity. Example: 4 - `data.min_quantity` (number,null) Minimum level. When quantity reaches this, a Quantity alert on the item can notify your team. See [Track Stock Levels](/track-stock-levels). Example: 2 - `data.notes` (string,null) Free-text notes. - `data.parent_id` (number,null) ID of the folder this lives in. Pass null (or omit) to place it at the top level. Example: 10 - `data.type` (string, required) Whether this is a trackable item or a folder that contains other things. Enum: "item", "folder" - `data.sid` (string) Sortly ID, a short human-readable code such as S01QSR0001 that QR labels and barcodes point at. Assigned by Sortly. Example: "S01QSR0001" - `data.created_at` (string) When this item or folder was created. - `data.updated_at` (string) When it was last changed. Use this for incremental syncs. See [Sync Inventory](/sync-inventory). - `data.label_url` (string,null) Value encoded in the item's primary QR code or barcode. Example: "AB123AB45" - `data.label_url_type` (string,null) Symbology of the linked QR code or barcode. Use com.sortly.sortlyLabel for labels Sortly generates, or com.sortly.textEntry for a manually typed value. Enum: "org.gs1.UPC-E", "org.iso.Code39", "org.iso.Code39Mod43", "org.gs1.EAN-13", "org.gs1.EAN-8", "com.intermec.Code93", "org.iso.Code128", "org.iso.PDF417", "org.iso.Aztec", "org.iso.QRCode", "org.ansi.Interleaved2of5", "org.iso.DataMatrix", "com.sortly.textEntry", null - `data.label_url_extra` (string,null) Value encoded in the item's secondary QR code or barcode. Example: "9780066620992" - `data.label_url_extra_type` (string,null) Symbology of the linked QR code or barcode. Use com.sortly.sortlyLabel for labels Sortly generates, or com.sortly.textEntry for a manually typed value. Enum: "org.gs1.UPC-E", "org.iso.Code39", "org.iso.Code39Mod43", "org.gs1.EAN-13", "org.gs1.EAN-8", "com.intermec.Code93", "org.iso.Code128", "org.iso.PDF417", "org.iso.Aztec", "org.iso.QRCode", "org.ansi.Interleaved2of5", "org.iso.DataMatrix", "com.sortly.textEntry", null - `data.tag_names` (array) Tag names as plain strings. Returned on reads for convenience; prefer tags when writing. Example: ["fragile"] - `data.tags` (array) Tags on this item. Tags organize inventory across folders: by brand, colour, condition or status. Accepted on writes and returned on reads. - `data.tags.name` (string, required) Tag name. Example: "fragile" - `data.custom_attribute_values` (array) Values for your account's custom fields. Call GET /custom_fields first to get each field's custom_attribute_id. - `data.custom_attribute_values.value` (string,null) The value to store for this custom field. Send null to clear it. Example: "2026-12-31" - `data.custom_attribute_values.custom_attribute_name` (string) Name of the custom field. Returned on reads for convenience. - `data.custom_attribute_values.custom_attribute_id` (number, required) ID of the custom field. Call GET /custom_fields to look these up. Example: 363882 - `data.custom_attribute_values.scanner_code_type` (string) Symbology for a scanner-type custom field value. Required only when the custom field is of scanner type. Enum: "org.gs1.UPC-E", "org.iso.Code39", "org.iso.Code39Mod43", "org.gs1.EAN-13", "org.gs1.EAN-8", "com.intermec.Code93", "org.iso.Code128", "org.iso.PDF417", "org.iso.Aztec", "org.iso.QRCode", "org.ansi.Interleaved2of5", "org.iso.DataMatrix" - `data.custom_attribute_values.attribute_value` (string) Legacy alias for value. Still accepted; use value instead. - `data.photo_ids` (array) IDs of photos that already exist in your account. To upload a new file instead, send it as photos[] with multipart/form-data. - `data.photos` (array) Photos attached to this item. Attach one that already exists with photo_ids, or upload a new file as photos[] with multipart/form-data. - `data.photos.id` (number) Photo ID. Pass this in photo_ids to attach the photo. - `data.photos.name` (string) Original filename. - `data.photos.url` (string) Publicly accessible image URL. - `data.measured_quantity` (object) Quantity for things you don't count in units: cable by the foot, paint by the gallon, sand by the pound. - `data.measured_quantity.value` (number) The measured amount. Example: 1.5 - `data.measured_quantity.type` (string) Which kind of measurement this is. Settable on create only: on an update it is ignored and the item keeps the unit it was created with. Enum: "weight", "length", "volume", "area", "count" - `data.measured_quantity.name` (string) The unit itself. Valid values depend on type. Weight: lbs, g, kg, oz; length: yd, cm, ft, in, m; volume: gal, ml, l, ft3, in3; area: sq cm, ft2, in2; count: units. Call GET /units for what your account supports. Like type, this is settable on create only. Enum: "lbs", "g", "kg", "oz", "yd", "cm", "ft", "in", "m", "gal", "ml", "l", "ft3", "in3", "ft2", "in2", "units" - `data.measured_quantity.scale` (number) Decimal places used when displaying the value. Sortly takes this from the unit itself and ignores anything you send, on create and on update, so treat it as read-only. GET /units reports the scale each unit uses. Example: 4 - `data.option_value_ids` (array) For a variant item, the option values that identify which combination this is (for example the Black and XL option IDs). Required together with item_group_id. - `data.item_group_id` (string) The item group this variant belongs to. Required together with option_value_ids. - `meta` (object) - `meta.page` (number) Current page number. - `meta.next_page_url` (string,null) URL for the next page of results, or null on the last page. - `meta.total_pages` (number) Total number of pages. - `meta.total_count` (number) Total number of matching records. ## Response 400 fields (application/json): - `message` (string) ## Response 401 fields (application/json): - `message` (string) ## Response 429 fields (application/json): - `message` (string)