instacart Delivery API

Endpoints for finding delivery stores, previewing time slots, reserving time slots, and creating delivery orders.

Business capability
Order Fulfilment Management BC-520.40

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /v2/fulfillment/stores/delivery Find stores that deliver to a location · Find stores offering delivery #
Ask an LLM
“Which stores can deliver groceries to a given address?”
“Can I look up delivery stores by postal code or by latitude and longitude?”
Tell an agent
Find stores that deliver to postal code {postal_code}.
List delivery stores near latitude {latitude}, longitude {longitude}.
POST /v2/fulfillment/users/{user_id}/service_options/delivery Preview available delivery time slots · Preview time slots for delivery #
Ask an LLM
“What delivery windows can I show a customer before checkout?”
“Can I see delivery time options for a specific store and address?”
Tell an agent
Show available delivery time slots for user {user_id} from store {store_id}.
Preview delivery windows for user {user_id} to address {address}.
POST /v2/fulfillment/users/{user_id}/service_options/delivery/hold Hold a delivery time slot · Reserve a previewed delivery time slot #
Ask an LLM
“How do I hold a delivery window for a customer before placing the order?”
“Does a reserved delivery slot expire if the order isn't created?”
Tell an agent
Reserve delivery slot {service_option_id} for user {user_id}.
Hold delivery window {service_option_id} for user {user_id} with cart {cart}.
POST /v2/fulfillment/users/{user_id}/orders/delivery Place a delivery order · Create a delivery order #
Ask an LLM
“How do I place a grocery delivery order after reserving a time slot?”
“Can I add driver instructions when creating a delivery order?”
Tell an agent
Create a delivery order for user {user_id} using hold {hold_id}.
Place a delivery order for user {user_id} on hold {hold_id} to {delivery_address} with note {delivery_instructions}.
GET /v2/fulfillment/users/{user_id}/orders/{order_id} Look up an order's status and details · Get an order #
Ask an LLM
“What is the current status of a customer's grocery order?”
“Can I see the items and fulfillment details of one order?”
Tell an agent
Get order {order_id} for user {user_id}.
Check the status of user {user_id}'s order {order_id}.
POST /v2/fulfillment/users/{user_id}/orders/{order_id}/cancel Cancel an order before a shopper takes it · Cancel an order #
Ask an LLM
“How do I cancel a delivery or pickup order?”
“Can an order still be canceled once a shopper has acknowledged it?”
Tell an agent destructive · confirm first
Cancel order {order_id} for user {user_id}.
Call off user {user_id}'s order {order_id} while it is still brand new.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/instacart:instacart-delivery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

instacart-delivery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Instacart Connect Fulfillment Delivery API
  description: The Instacart Connect Fulfillment API enables retailers to integrate Instacart fulfillment capabilities directly into their e-commerce sites.
  version: '2.0'
  contact:
    name: Instacart Connect Support
    url: https://docs.instacart.com/connect/fulfillment/
  termsOfService: https://www.instacart.com/terms
servers:
- url: https://connect.instacart.com
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Delivery
  description: Endpoints for finding delivery stores, previewing time slots, reserving time slots, and creating delivery orders.
paths:
  /v2/fulfillment/stores/delivery:
    post:
      operationId: findDeliveryStores
      summary: Find stores offering delivery
      description: Returns an array of stores that offer delivery for the customer's location, sorted by distance with the closest store first. Accepts location data such as latitude and longitude or a postal code.
      tags:
      - Delivery
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindStoresRequest'
      responses:
        '200':
          description: List of stores offering delivery
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoresResponse'
        '400':
          description: Bad request due to invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v2/fulfillment/users/{user_id}/service_options/delivery:
    post:
      operationId: previewDeliveryTimeSlots
      summary: Preview time slots for delivery
      description: Previews possible service options and available time slots for delivery fulfillments. Useful for displaying delivery time options to customers before they complete checkout.
      tags:
      - Delivery
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewServiceOptionsRequest'
      responses:
        '200':
          description: Available delivery time slots
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceOptionsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v2/fulfillment/users/{user_id}/service_options/delivery/hold:
    post:
      operationId: reserveDeliveryTimeSlot
      summary: Reserve a previewed delivery time slot
      description: Reserves a selected delivery time slot for the specified user and their cart items. The hold is temporary and must be followed by order creation before it expires.
      tags:
      - Delivery
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReserveTimeSlotRequest'
      responses:
        '200':
          description: Time slot reserved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceOptionHoldResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v2/fulfillment/users/{user_id}/orders/delivery:
    post:
      operationId: createDeliveryOrder
      summary: Create a delivery order
      description: Creates a delivery order for a previously reserved time slot. The order includes the cart items and delivery details. Orders should be created as soon as possible after the time slot is reserved.
      tags:
      - Delivery
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
      responses:
        '200':
          description: Delivery order created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v2/fulfillment/users/{user_id}/orders/{order_id}:
    get:
      operationId: getOrder
      summary: Get an order
      description: Retrieves details for a specific order, including its current status, items, and delivery or pickup information.
      tags:
      - Delivery
      parameters:
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/orderId'
      responses:
        '200':
          description: Order details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v2/fulfillment/users/{user_id}/orders/{order_id}/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel an order
      description: Cancels a delivery, pickup, or last mile delivery order. To successfully cancel, the order status must be brand_new. Once a shopper is assigned and the status moves to acknowledged, the order can no longer be canceled through this endpoint.
      tags:
      - Delivery
      parameters:
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/orderId'
      responses:
        '200':
          description: Order canceled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          description: Order cannot be canceled in its current status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ReserveTimeSlotRequest:
      type: object
      required:
      - service_option_id
      properties:
        service_option_id:
          type: string
          description: The identifier of the service option time slot to reserve.
        cart:
          type: object
          description: The customer's cart details to associate with the reservation.
          properties:
            items:
              type: array
              description: The items in the customer's cart.
              items:
                $ref: '#/components/schemas/CartItem'
    ServiceOptionsResponse:
      type: object
      properties:
        service_options:
          type: array
          description: Available service option time slots for the requested fulfillment type.
          items:
            $ref: '#/components/schemas/ServiceOption'
    CartItem:
      type: object
      properties:
        upc:
          type: string
          description: The Universal Product Code of the item.
        quantity:
          type: integer
          description: The quantity of the item.
          minimum: 1
        product_id:
          type: string
          description: The Instacart product identifier.
    PreviewServiceOptionsRequest:
      type: object
      properties:
        store_id:
          type: string
          description: The unique identifier of the store to preview service options for.
        address:
          type: object
          description: The delivery or pickup address.
          properties:
            address_line_1:
              type: string
              description: The street address.
            address_line_2:
              type: string
              description: Additional address information.
            city:
              type: string
              description: The city.
            state:
              type: string
              description: The state or province.
            postal_code:
              type: string
              description: The postal or ZIP code.
    OrderResponse:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the order.
        status:
          type: string
          enum:
          - brand_new
          - acknowledged
          - picking
          - staging
          - delivering
          - delivered
          - canceled
          - rescheduled
          description: The current status of the order.
        created_at:
          type: string
          format: date-time
          description: The timestamp when the order was created.
        fulfillment_type:
          type: string
          enum:
          - delivery
          - pickup
          - last_mile
          description: The fulfillment type of the order.
        service_option:
          $ref: '#/components/schemas/ServiceOption'
        store:
          $ref: '#/components/schemas/Store'
        items:
          type: array
          description: The items included in the order.
          items:
            $ref: '#/components/schemas/OrderItem'
    ServiceOptionHoldResponse:
      type: object
      properties:
        hold_id:
          type: string
          description: The unique identifier for the time slot hold.
        expires_at:
          type: string
          format: date-time
          description: The time at which the hold expires and the time slot is released.
        service_option:
          $ref: '#/components/schemas/ServiceOption'
    Store:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the store.
        name:
          type: string
          description: The name of the store.
        address:
          type: object
          description: The physical address of the store.
          properties:
            address_line_1:
              type: string
              description: The street address.
            city:
              type: string
              description: The city.
            state:
              type: string
              description: The state or province.
            postal_code:
              type: string
              description: The postal or ZIP code.
        distance:
          type: number
          format: double
          description: The distance from the customer's location to the store.
    OrderItem:
      type: object
      properties:
        product_id:
          type: string
          description: The Instacart product identifier.
        upc:
          type: string
          description: The Universal Product Code of the item.
        name:
          type: string
          description: The name of the product.
        quantity:
          type: integer
          description: The ordered quantity.
        status:
          type: string
          enum:
          - pending
          - found
          - replaced
          - refunded
          description: The current status of the item in the order.
    CreateOrderRequest:
      type: object
      required:
      - hold_id
      properties:
        hold_id:
          type: string
          description: The identifier of the time slot hold from the reserve step.
        cart:
          type: object
          description: The finalized cart for the order.
          properties:
            items:
              type: array
              description: The items to include in the order.
              items:
                $ref: '#/components/schemas/CartItem'
        delivery_address:
          type: object
          description: The delivery address for the order.
          properties:
            address_line_1:
              type: string
              description: The street address.
            address_line_2:
              type: string
              description: Additional address information.
            city:
              type: string
              description: The city.
            state:
              type: string
              description: The state or province.
            postal_code:
              type: string
              description: The postal or ZIP code.
        delivery_instructions:
          type: string
          description: Special instructions for the delivery driver.
    StoresResponse:
      type: object
      properties:
        stores:
          type: array
          description: An array of stores offering the requested fulfillment type, sorted by distance with the closest store first.
          items:
            $ref: '#/components/schemas/Store'
    FindStoresRequest:
      type: object
      properties:
        address_line_1:
          type: string
          description: The street address of the customer's location.
        address_line_2:
          type: string
          description: Additional address information such as apartment or suite number.
        city:
          type: string
          description: The city of the customer's location.
        state:
          type: string
          description: The state or province of the customer's location.
        postal_code:
          type: string
          description: The postal or ZIP code of the customer's location.
        latitude:
          type: number
          format: double
          description: The latitude coordinate of the customer's location.
        longitude:
          type: number
          format: double
          description: The longitude coordinate of the customer's location.
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
        status:
          type: integer
          description: The HTTP status code.
    ServiceOption:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the service option.
        date:
          type: string
          format: date
          description: The date of the service option.
        window_starts_at:
          type: string
          format: date-time
          description: The start time of the delivery or pickup window.
        window_ends_at:
          type: string
          format: date-time
          description: The end time of the delivery or pickup window.
        fulfillment_type:
          type: string
          enum:
          - delivery
          - pickup
          - last_mile
          description: The type of fulfillment for this service option.
  parameters:
    userId:
      name: user_id
      in: path
      required: true
      description: The unique identifier for the user in the retailer's system.
      schema:
        type: string
    orderId:
      name: order_id
      in: path
      required: true
      description: The unique identifier for the order.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer token obtained from the token endpoint. Valid for 24 hours.
externalDocs:
  description: Instacart Connect Fulfillment API Documentation
  url: https://docs.instacart.com/connect/fulfillment/