instacart Pickup API

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

OpenAPI Specification

instacart-pickup-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Instacart Catalog Authentication Pickup API
  description: The Instacart Catalog API enables retailers to programmatically manage their product catalogs on the Instacart platform. Retailers can use the API to create or update products and items, with partial updates supported so that only the attributes included in the request body are modified. This API is designed for retailers who need to keep their Instacart product listings synchronized with their inventory management systems, ensuring accurate product information, pricing, and availability across the platform.
  version: '2.0'
  contact:
    name: Instacart Catalog Support
    url: https://docs.instacart.com/catalog/catalog_api/overview/
  termsOfService: https://www.instacart.com/terms
servers:
- url: https://connect.instacart.com
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Pickup
  description: Endpoints for finding pickup stores, previewing time slots, reserving time slots, and creating pickup orders.
paths:
  /v2/fulfillment/stores/pickup:
    post:
      operationId: findPickupStores
      summary: Find stores offering pickup
      description: Returns an array of stores that offer pickup for the customer's location, sorted by distance with the closest store first.
      tags:
      - Pickup
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindStoresRequest'
      responses:
        '200':
          description: List of stores offering pickup
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoresResponse'
        '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/pickup:
    post:
      operationId: previewPickupTimeSlots
      summary: Preview time slots for pickup
      description: Previews possible service options and available time slots for pickup fulfillments. Useful for displaying pickup time options to customers before they complete checkout.
      tags:
      - Pickup
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewServiceOptionsRequest'
      responses:
        '200':
          description: Available pickup 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}/orders/pickup:
    post:
      operationId: createPickupOrder
      summary: Create a pickup order
      description: Creates a pickup order for a previously reserved time slot. The response can take several seconds, so orders should be created as soon as possible after checkout to minimize wait time.
      tags:
      - Pickup
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
      responses:
        '200':
          description: Pickup 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'
components:
  schemas:
    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.
    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'
    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'
    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.
    ServiceOptionsResponse:
      type: object
      properties:
        service_options:
          type: array
          description: Available service option time slots for the requested fulfillment type.
          items:
            $ref: '#/components/schemas/ServiceOption'
    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.
    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.
    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.
    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.
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
        status:
          type: integer
          description: The HTTP status code.
  parameters:
    userId:
      name: user_id
      in: path
      required: true
      description: The unique identifier for the user in the retailer's system.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer token obtained using client credentials with the connect:data_ingestion scope.
externalDocs:
  description: Instacart Catalog API Documentation
  url: https://docs.instacart.com/catalog/catalog_api/overview/