Instacart Developer Platform API

The Instacart Developer Platform API is a REST-based API that allows app developers to add Instacart shopping capabilities to their websites and applications. It provides endpoints for creating product shopping lists and recipe pages on Instacart Marketplace, enabling users to select a store, add ingredients or products to a cart, and check out.

OpenAPI Specification

instacart-developer-platform-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Instacart Developer Platform API
  description: >-
    The Instacart Developer Platform API is a REST-based API that allows app
    developers to add Instacart shopping capabilities to their websites and
    applications. It provides endpoints for creating product shopping lists and
    recipe pages on Instacart Marketplace, enabling users to select a store, add
    ingredients or products to a cart, and check out. The API uses predictable
    resource-oriented URLs, standard HTTP methods, and API key authentication,
    with requests made to the connect.instacart.com base URL.
  version: '1.0'
  contact:
    name: Instacart Developer Support
    url: https://docs.instacart.com/developer_platform_api/
  termsOfService: https://www.instacart.com/terms
externalDocs:
  description: Instacart Developer Platform API Documentation
  url: https://docs.instacart.com/developer_platform_api/
servers:
  - url: https://connect.instacart.com
    description: Production Server
  - url: https://connect.dev.instacart.tools
    description: Development Server
tags:
  - name: Products
    description: >-
      Endpoints for creating shopping list and recipe pages on Instacart
      Marketplace with product links.
security:
  - apiKeyAuth: []
paths:
  /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'
        '401':
          description: Unauthorized due to missing or invalid API key
          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/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'
        '401':
          description: Unauthorized due to missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too many requests - rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key authentication. Include your API key in the Authorization
        header.
  schemas:
    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.
    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'
    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.
    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.
    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.
    Error:
      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.