> ## Documentation Index
> Fetch the complete documentation index at: https://docs.supercycle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API changelog

> Updates to the Supercycle Admin and Storefront APIs.

<Update
  label="July 9, 2026"
  tags={["Features"]}
  rss={{
title: "Override prepare from and restock by dates on a cycle",
description: "PUT /rentals/{id} accepts prepareFrom and restockBy to override the shop's logistics buffers for a single cycle."
}}
>
  ## Override `prepareFrom` and `restockBy` on a cycle

  `PUT /api/v1/rentals/{id}` now accepts `prepareFrom` and `restockBy` alongside the existing scheduling fields. Set either to override the buffer date computed from the shop's [logistics buffers](/documentation/configuration/logistics/buffers) for that cycle, or pass `null` to revert to the automatic date.

  ```
  PUT /api/v1/rentals/123
  {
    "prepareFrom": "2026-07-14",
    "restockBy": null
  }
  ```

  The override sticks until the leg's anchor date (`fulfilledAt` or `receivedAt`) next moves, at which point Supercycle recomputes both dates from the shop's buffers. Values outside the receive/fulfil bounds are accepted; unparseable dates return `422` with the validation reason in the response body.

  The same fields are exposed on the [`update_cycle` MCP tool](/ai/operators-mcp/tools#cycles) and the [**Update cycle** Shopify Flow action](/documentation/manage/automation/automation#update-cycle).
</Update>

<Update
  label="June 24, 2026"
  tags={["Features", "Improvements"]}
  rss={{
title: "Blocked dates on the Admin API",
description: "List, fetch, and create blocked dates on items, variants, and products."
}}
>
  ## Blocked dates on the Admin API

  List, fetch, and create manually blocked date ranges on items, variants, and products through the [Admin API](/api-reference/admin/introduction). Rental scheduling blocks are excluded, matching the admin blocked dates index.

  **List blocked dates:** `GET /api/v1/blocked_dates` with filters for `resourceType`, `itemId`, `shopifyVariantId`, `shopifyProductId`, `activeFrom` / `activeTo` (overlap with a calendar window), `search` (description), and `created` / `updated` date ranges.

  **Fetch a blocked date:** `GET /api/v1/blocked_dates/:id` returns the block with nested resource details.

  **Create a blocked date:** `POST /api/v1/blocked_dates` accepts `resourceType`, `resourceId`, optional `from` / `to` dates, and an optional `description`. Open-ended ranges (no `from` or no `to`) are supported.

  ```
  POST /api/v1/blocked_dates
  {
    "resourceType": "Item",
    "resourceId": 123,
    "from": "2026-01-01",
    "to": "2026-01-07",
    "description": "Maintenance"
  }
  ```

  <Accordion title="Improvements">
    * Shop logistics settings now expose `preparationDuration` and `restockDuration` as serialized duration values (e.g. `6.hour`, `2.day`) instead of whole-day integers, enabling sub-day buffer configuration via the API.
    * Custom field definitions accept `owner_type=consignor` when consignment is enabled for the store.
  </Accordion>
</Update>

<Update
  label="June 9, 2026"
  tags={["Features", "Improvements"]}
  rss={{
title: "Filter rentals by receivedAt and recredit membership credits",
description: "GET /rentals accepts a receivedAt filter, and PUT /membership_credits/{id} recredits a customer's membership credit."
}}
>
  ## Filter rentals by `receivedAt` date range

  `GET /rentals` now accepts a `receivedAt` filter (with `gte`, `gt`, `lte`, `lt` operators) for the actual receival timestamp, alongside the existing `receiveAt`, `rentalStart`, `created`, and `updated` filters.

  Query rentals received within a specific window, useful for keeping an external system in sync on when items actually came back, not just when they were due.

  ```
  GET /api/v1/rentals?receivedAt[gte]=2026-06-01T00:00:00Z&receivedAt[lt]=2026-06-09T00:00:00Z
  ```

  ## Recredit a membership credit via the API

  `PUT /membership_credits/{id}` recredits or reclaims a customer's membership credit when you receive a rental back. This is the same action available in the admin.

  The v1 Rental response now includes a `membershipCredit` object (id, credit cost, status, return condition), so you can find the credit and its status without a second call.

  <Accordion title="Improvements">
    * `create_charge` accepts an optional `payment_collector_status` (defaults to `active`), so you can create a charge whose collection starts in a non-active state.
    * Remove a line item from a subscription contract via the Admin GraphQL draft flow.
  </Accordion>
</Update>

<Update
  label="February 16, 2026"
  tags={["Deprecation"]}
  rss={{
title: "Rental intent tokens are being retired",
description: "Plan to migrate off rental intent tokens; contact support to migrate early or delay."
}}
>
  ## Rental intent tokens are being retired

  We're retiring rental intent tokens.

  If your integration creates or reads rental intent tokens, plan to migrate off them. To migrate early, or to delay the migration, contact support.
</Update>

<Update
  label="May 1, 2025"
  tags={["Improvements"]}
  rss={{
title: "Item location on the Admin API",
description: "Get and update an item's location via the Admin API."
}}
>
  ## Item location on the Admin API

  `GET`, `PUT`, and update an item's location via the [Admin API](/api-reference/admin/items/update-an-item).

  Keep an external WMS or OMS in sync with where each unit physically lives, without anyone editing locations by hand in the admin.
</Update>

<Update
  label="March 21, 2025"
  tags={["Features"]}
  rss={{
title: "Create timeline events via the Admin API",
description: "Add comments to an Item, Rental, or ReturnOrder through the Admin API."
}}
>
  ## Create timeline events via the Admin API

  Add comments to an Item, Rental, or ReturnOrder through the [Admin API](/api-reference/admin/timelinecomments/create-a-timeline-comment).

  Push context from your own systems (an inspection note, a 3PL update) straight onto the record's timeline, so the full history lives in one place.
</Update>

<Update
  label="February 19, 2025"
  tags={["Features"]}
  rss={{
title: "Storefront API is now in beta",
description: "Build a fully custom rental storefront with your own availability, cart, and checkout flows."
}}
>
  ## Storefront API is now in beta

  The [Storefront API](/api-reference/storefront/introduction) is available in beta on request.

  Build a fully custom rental storefront with your own availability, cart, and checkout flows. Request access from support.
</Update>
