Gopuff Orders API

Route completed Shopify checkouts to Gopuff for picking, packing, and last-mile delivery from the nearest MFC.

OpenAPI Specification

gopuff-orders-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Powered by Gopuff Fulfillment Availability Orders API
  description: Partner-facing API powering the Powered by Gopuff Shopify Fulfillment app and the Storefronts Powered by Gopuff theme. The API determines whether a consumer's address falls inside a Gopuff micro-fulfillment center (MFC) delivery zone, exposes real-time product availability at the serving MFC, surfaces Gopuff carrier rates at Shopify checkout, and accepts orders that should be routed to Gopuff for picking, packing, and delivery in roughly 15 to 30 minutes. The canonical entry point is the shops resource wired into the Powered by Gopuff Shopify app embed block. Detailed reference documentation is published by Gopuff as "coming soon"; the surfaces captured here are derived from the partner Help Center and the Powered by Gopuff Shopify theme behavior.
  version: '1.0'
  contact:
    name: Powered by Gopuff Partner Support
    url: https://poweredby.gopuff.com/
  termsOfService: https://www.gopuff.com/go/terms-and-conditions
servers:
- url: https://fulfillment-api-eus.partners.gopuff.com/shopify/v1
  description: Production Partner API (US East)
security:
- partnerApiKey: []
tags:
- name: Orders
  description: Route completed Shopify checkouts to Gopuff for picking, packing, and last-mile delivery from the nearest MFC.
paths:
  /shops/orders:
    post:
      operationId: createOrder
      summary: Route Order to Gopuff
      description: Routes a completed Shopify checkout to the nearest Gopuff MFC for picking, packing, and delivery. Returns the Gopuff Order ID, which is also written back to the corresponding Shopify order's Additional details panel within 5 to 10 seconds.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
      responses:
        '201':
          description: Order accepted by Gopuff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Invalid order payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Order rejected (e.g. address out of zone, items out of stock).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /shops/orders/{order_id}:
    get:
      operationId: getOrder
      summary: Get Order
      description: Returns the current status, fulfillment lifecycle, and tracking information for a Gopuff order. Order status mirrors the realtime fulfillment updates Gopuff pushes to Shopify when the order is out for delivery and when it is delivered.
      tags:
      - Orders
      parameters:
      - name: order_id
        in: path
        required: true
        schema:
          type: string
        description: Gopuff Order ID.
      responses:
        '200':
          description: Order returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Order not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreateOrderRequest:
      type: object
      description: Mirrors the Shopify order payload submitted to Gopuff. The shipping line must carry "Instant Delivery - Powered by Gopuff" as the title and "Powered By Gopuff" as the source.
      properties:
        shopify_order_id:
          type: string
        customer:
          type: object
          properties:
            email:
              type: string
            phone:
              type: string
        shipping_address:
          $ref: '#/components/schemas/Address'
        line_items:
          type: array
          items:
            type: object
            properties:
              upc:
                type: string
              quantity:
                type: integer
              price:
                type: integer
              currency:
                type: string
        shipping_line:
          type: object
          properties:
            title:
              type: string
            source:
              type: string
      required:
      - shopify_order_id
      - shipping_address
      - line_items
    Order:
      type: object
      properties:
        gopuff_order_id:
          type: string
        shopify_order_id:
          type: string
        mfc_id:
          type: string
        status:
          type: string
          enum:
          - accepted
          - picking
          - out_for_delivery
          - delivered
          - cancelled
        tracking_url:
          type: string
          description: Realtime delivery tracking URL surfaced via SMS to the customer.
        created_at:
          type: string
          format: date-time
        delivered_at:
          type: string
          format: date-time
      required:
      - gopuff_order_id
      - status
    Address:
      type: object
      properties:
        line1:
          type: string
        line2:
          type: string
        city:
          type: string
        region:
          type: string
          description: State or province code.
        postal_code:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
      required:
      - line1
      - city
      - postal_code
      - country
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        request_id:
          type: string
      required:
      - code
      - message
  securitySchemes:
    partnerApiKey:
      type: apiKey
      in: header
      name: X-Gopuff-Partner-Key
      description: Partner API key issued by Gopuff during onboarding to the Powered by Gopuff platform. Keys are scoped to a single partnership/shop.
externalDocs:
  description: Powered by Gopuff Partner Documentation
  url: https://docs.poweredbygopuff.com/