instacart Products API

Endpoints for creating and updating products in the retailer's catalog on Instacart. Products are the same across all of a retailer's stores.

OpenAPI Specification

instacart-products-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Instacart Catalog Authentication Products 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: Products
  description: Endpoints for creating and updating products in the retailer's catalog on Instacart. Products are the same across all of a retailer's stores.
paths:
  /v2/data_ingestion/catalog/product/submission:
    post:
      operationId: submitProducts
      summary: Create or update products
      description: Creates new products or updates existing products in the retailer's catalog on Instacart. When creating a new product, it takes 1-3 business days for the product to be displayed on the storefront. When updating a product, only the attributes included in the request body are modified and changes are displayed within a few hours.
      tags:
      - Products
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductSubmissionRequest'
      responses:
        '200':
          description: Products submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmissionResponse'
        '400':
          description: Bad request due to invalid product data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too many requests - rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /idp/v1/products/products_link:
    post:
      operationId: createShoppingListPage
      summary: Create a shopping list page
      description: Creates a shopping list page on Instacart Marketplace and returns a unique URL. The page displays a list of products that users can add to their Instacart cart. Each call generates a new page with a unique URL.
      tags:
      - Products
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListRequest'
      responses:
        '200':
          description: Shopping list page created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsLinkResponse'
        '400':
          description: Bad request due to invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
        '401':
          description: Unauthorized due to missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
        '429':
          description: Too many requests - rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
  /idp/v1/products/recipe:
    post:
      operationId: createRecipePage
      summary: Create a recipe page
      description: Creates a recipe page on Instacart Marketplace and returns a unique URL. The page displays recipe details including title, image, ingredients, and cooking instructions. Users can add recipe ingredients to their Instacart cart directly from the page.
      tags:
      - Products
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeRequest'
      responses:
        '200':
          description: Recipe page created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsLinkResponse'
        '400':
          description: Bad request due to invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
        '401':
          description: Unauthorized due to missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
        '429':
          description: Too many requests - rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_2'
components:
  schemas:
    Ingredient:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: The name of the ingredient.
        display_text:
          type: string
          description: Custom display text for the ingredient on the recipe page.
        product_ids:
          type: array
          description: Instacart product identifiers to match specific products.
          items:
            type: string
        upcs:
          type: array
          description: Universal Product Codes to match specific products.
          items:
            type: string
        measurements:
          type: object
          description: Measurement details for the ingredient.
          properties:
            amount:
              type: number
              description: The measurement amount.
            unit:
              type: string
              description: The measurement unit.
        filters:
          type: object
          description: Filters to narrow product matching for this ingredient.
          properties:
            department:
              type: string
              description: The store department to filter products by.
    Error_2:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message describing what went wrong.
        status:
          type: integer
          description: The HTTP status code of the error response.
    ProductSubmissionRequest:
      type: object
      required:
      - products
      properties:
        products:
          type: array
          description: The list of products to create or update.
          items:
            $ref: '#/components/schemas/Product'
    RecipeRequest:
      type: object
      required:
      - title
      - ingredients
      properties:
        title:
          type: string
          description: The title of the recipe displayed on the recipe page.
        image_url:
          type: string
          format: uri
          description: URL of an image to display for the recipe.
        author:
          type: string
          description: The name of the recipe author.
        servings:
          type: integer
          description: The number of servings the recipe makes.
          minimum: 1
        cooking_time:
          type: string
          description: The estimated cooking time for the recipe.
        external_reference_id:
          type: string
          description: An external identifier for the recipe from the partner system.
        content_creator_credit_info:
          type: object
          description: Information for crediting the content creator on the recipe page.
          properties:
            name:
              type: string
              description: The name of the content creator.
            url:
              type: string
              format: uri
              description: URL to the content creator's website or profile.
        expires_in:
          type: integer
          description: The number of seconds until the generated recipe link expires.
          minimum: 1
        instructions:
          type: array
          description: Step-by-step cooking instructions for the recipe.
          items:
            type: string
        ingredients:
          type: array
          description: The list of ingredients required for the recipe.
          items:
            $ref: '#/components/schemas/Ingredient'
    SubmissionResponse:
      type: object
      properties:
        submission_id:
          type: string
          description: A unique identifier for tracking the submission.
        status:
          type: string
          enum:
          - accepted
          - processing
          - completed
          - failed
          description: The current status of the submission.
        submitted_count:
          type: integer
          description: The number of records submitted.
        errors:
          type: array
          description: Any validation errors found in the submitted data.
          items:
            type: object
            properties:
              index:
                type: integer
                description: The index of the record with the error.
              message:
                type: string
                description: The error message describing the issue.
    ProductsLinkResponse:
      type: object
      properties:
        products_link_url:
          type: string
          format: uri
          description: The unique URL to the generated shopping list or recipe page on Instacart Marketplace.
    ShoppingListRequest:
      type: object
      required:
      - title
      - line_items
      properties:
        title:
          type: string
          description: The title displayed at the top of the shopping list page.
        image_url:
          type: string
          format: uri
          description: URL of an image to display on the shopping list page.
        link_type:
          type: string
          description: The type of product link to create.
        expires_in:
          type: integer
          description: The number of seconds until the generated link expires.
          minimum: 1
        instructions:
          type: string
          description: Additional instructions or notes to display on the page.
        line_items:
          type: array
          description: The list of products to include on the shopping list page.
          items:
            $ref: '#/components/schemas/LineItem'
        landing_page_configuration:
          type: object
          description: Configuration options for the landing page appearance and behavior.
          properties:
            partner_linkback_url:
              type: string
              format: uri
              description: URL to link back to the partner site from the landing page.
    Product:
      type: object
      required:
      - product_code
      - name
      properties:
        product_code:
          type: string
          description: The retailer's unique product identifier used to match the product in the Instacart system.
        name:
          type: string
          description: The display name of the product.
        brand:
          type: string
          description: The brand name of the product.
        description:
          type: string
          description: A detailed description of the product.
        size:
          type: string
          description: The size or quantity description of the product.
        upc:
          type: string
          description: The Universal Product Code for the product.
        image_url:
          type: string
          format: uri
          description: URL to the primary product image.
        category:
          type: string
          description: The product category in the retailer's taxonomy.
        subcategory:
          type: string
          description: The product subcategory.
        department:
          type: string
          description: The store department the product belongs to.
        attributes:
          type: object
          description: Additional product attributes such as dietary information or certifications.
          additionalProperties:
            type: string
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
        status:
          type: integer
          description: The HTTP status code.
    LineItem:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: The name of the product.
        quantity:
          type: number
          description: The quantity of the product to add.
          minimum: 1
        unit:
          type: string
          description: The unit of measurement for the quantity.
        display_text:
          type: string
          description: Custom display text for the line item on the page.
        product_ids:
          type: array
          description: Instacart product identifiers to match specific products.
          items:
            type: string
        upcs:
          type: array
          description: Universal Product Codes to match specific products.
          items:
            type: string
        line_item_measurements:
          type: object
          description: Measurement details for the line item.
          properties:
            amount:
              type: number
              description: The measurement amount.
            unit:
              type: string
              description: The measurement unit.
        filters:
          type: object
          description: Filters to narrow product matching.
          properties:
            department:
              type: string
              description: The store department to filter products by.
  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/