Store/Developer/REST API Reference

Developer API Reference

v1.0 REST

High-performance REST API for B2B resellers and automated storefronts. Synchronize wholesale catalogs, verify real-time handloom stock, and submit wholesale procurement orders directly with Varanasi weavers.

Get API Key

Overview

The Weave365 REST API allows B2B resellers and eCommerce storefronts to query live catalog pricing, verify real-time inventory availability, and automate wholesale order procurement directly with weavers in Varanasi.

Base URLhttps://www.weave365.com/api/v1
AuthenticationHeader x-api-key or Bearer
Payload FormatJSON / UTF-8

3-Step Storefront Integration

Integrating Weave365 with your storefront takes less than 15 minutes. Follow this 3-step blueprint:

1

Generate Key & Subscribe

Submit your API request in your Developer Dashboard. Once approved, select a 30-day plan (Growth Partner for Stock & Catalog sync, or Pro Scale for Automated Orders API).

2

Sync Catalog & Stock Feeds

Fetch products via GET /api/v1/catalog (strictly Reseller B2R prices) and setup an automated 5–15 min cron query to GET /api/v1/stock-status to keep your store inventory in sync with the Varanasi warehouse.

3

Forward Orders & Track

Submit wholesale procurement orders directly to the Varanasi warehouse queue via POST /api/v1/orders and track live dispatch and courier fulfillment in real time.

Authentication

All requests must include your secret API key. Pass it in the HTTP headers using either x-api-key or as a standard Bearer token.

HTTP Request Headers
x-api-key: w365_live_9a7f8e1b4c3d2e... # OR Authorization: Bearer w365_live_9a7f8e1b4c3d2e...
Zero Plaintext Secret Storage

For security, Weave365 stores your API key as a salted SHA-256 cryptographic hash. Your full raw secret key is presented only once upon creation or regeneration. Please store it securely in your .env file or server vault. If lost, you can rotate and regenerate a new key anytime from your Developer Dashboard.

You can generate and manage your API keys in your Account Developer Dashboard.

Supported Platforms & Integration Guides

Whether you run a Shopify store, WooCommerce, PrestaShop, or a custom Next.js/Node.js web application, Weave365 provides native support:

Setting up SyncX / Stock Sync in Shopify? Jump to the detailed Shopify Column Matching, Margin & Image Guide → below.
Shopify (Matrixify / Sync) Integration Code
# ============================================================================
# Weave365 Shopify Sync Feed URL (SyncX / Stock Sync / Matrixify)
# ============================================================================

# 1. Dedicated Source Feed URL (Flat JSON Variant Array - Auto-detected by SyncX):
https://www.weave365.com/api/v1/catalog.json?key=w365_live_YOUR_API_KEY&format=stocksync

# 2. Standard Nested Shopify REST Payload (Matrixify):
https://www.weave365.com/api/v1/catalog.json?key=w365_live_YOUR_API_KEY&format=shopify

# 3. Optional Liquid Formula for Price Markup (+30% Profit Margin in SyncX):
{{ data | jmespath: '"price"' | times: 1.3 | round: 2 }}

# NOTE: For complete column matching, color variants & image delimiter setup,
# follow the step-by-step visual guide directly below.

Shopify & SyncX (Stock Sync) Complete Setup Guide

Step-by-step walkthrough to import the Weave365 wholesale catalog, configure color variants, apply profit margins, and sync images without errors.

Shopify SyncX
Zero-Config Auto Mapping: By adding &format=stocksync to your catalog URL, the API emits a flat JSON variant array that matches Shopify and SyncX out of the box.
1

Connect Your Source Feed in SyncX (Step 1)

In your Shopify admin, open the SyncX (or Stock Sync) app, click Add New Update / Add Products, choose REST API / URL, and paste your dedicated feed URL:

SyncX Feed URL (GET Request)
https://www.weave365.com/api/v1/catalog.json?key=w365_live_YOUR_API_KEY&format=stocksync
Why use the ?key= parameter?
Because Shopify apps make automated server-to-server GET requests without custom HTTP headers, passing your secret key in the query parameter ?key=... authenticates requests instantly without needing custom header configuration.
2

Matching Columns (Step 2: Matching Column)

SyncX prompts for the exact feed column/property names to match your Shopify store fields. Enter these values into the input boxes:

SectionSearch Store Field (Shopify)Value to Type in BoxDescription
Product IdentifierSKU (Variant's SKU)sku (or SKU)Matches feed rows to Shopify products/variants for stock and price updates.
Store Product Field(s)Product's titletitle (or Title)Clean saree title for your storefront catalog.
Priceprice (or Price)Weave365 wholesale B2R procurement rate (Strictly wholesale; cost prices never exposed).
Compare At Pricecompare_at_price (or mrp)Suggested retail price / MRP for strikethrough retail discount display.
Quantity (or Inventory)quantity (or stock)Live weaver inventory (5 for ready stock, 0 for out-of-stock).
Product's imageimages (or image)Full saree image gallery. Important: Set delimiter to comma , in Smart Settings (see Step 5).
Variant imagevariant_image (or image)Color-specific photo linked directly to the color swatch on Shopify.
Product Descriptiondescription (or body_html)Rich HTML description including fabric, weave authenticity, and care instructions.
VendorvendorDefaults to Weave365 Wholesale (can be customized or mapped to a static value).
Swipe horizontally to view all columns →
3

Setting Your Profit Margin (+30% Price Markup)

Since the API provides your wholesale procurement cost, you can automatically add your profit margin so your Shopify store sells at retail:

Method 1: UI Smart SettingRecommended
  1. Click the Smart setting icon right next to the Price dropdown.
  2. Under Price markup / Adjust price, choose Increase by percentage (%).
  3. Enter 30 (or your target profit margin percentage).
  4. Set Rounding to Round to nearest whole number to prevent awkward decimal prices.
  5. Click Done / Save.
Method 2: Liquid Formula BoxDirect Formula

If you prefer writing expressions directly inside the formula box, replace the default Price expression with:

{{ data | jmespath: '"price"' | times: 1.3 | round: 2 }}

*(Use | round: 0 if you want integer prices with no paise).*

4

Combine Rows into One Product (Saree Color Variants)

Weave365 sarees feature multiple colorways (e.g. Red, Bottle Green, Royal Blue). SyncX provides a section called Combine rows into one product so each saree has a single product page with color swatches:

Store FieldValue to Type in BoxConfiguration Details
Variant grouphandle (or product_id)Groups all color variants belonging to the same saree under one parent product.
Variant option 1color (or option1_value)Sets the variant option value to the color name. Click Smart setting and verify Option Name is set to Color.
Crucial: Delete Unused Option Rows (Trash Icon )
If SyncX shows an empty 3rd row (like Variant option 2 or Variant option 3 with a red error), click the Trash Can icon () to remove it. Sizing does not apply to unstitched sarees, and leaving empty option rows will cause SyncX to fail with validation errors.
5

Image Sync & Delimiter Setup (Troubleshooting Missing Images)

If images aren't appearing on your Shopify store, verify these three essential checks:

  1. Map under "Store product field(s)": Images must be added under Store product field(s) (click + Add more field), NOT inside the Product options / variations section.
  2. Configure the comma delimiter in Smart Settings: Next to Product's image, click the Smart setting icon and set Multiple image delimiter to comma (,). The Weave365 API provides all high-resolution saree photos in a comma-separated string under images.
  3. Map Variant Image: Add a second field for Variant image and map it to variant_image so that selecting a color swatch dynamically swaps the image to that specific colorway.
Shopify Asynchronous Download Queue Delay
Shopify imports images in a background queue after product creation. It typically takes 1 to 3 minutes after products appear in your Shopify admin for all high-resolution photos to finish downloading and display.
6

Incoming Feed Filters & Skipping Out-of-Stock Items

The Incoming feed filter section is entirely optional:

  • Removing accidental filter errors: If you see a red "Required field" error on an empty Feed column name line, click the Trash Can icon () to delete the filter. This ensures all authorized products from your feed are imported.
  • Skip products with zero quantity: To enable this toggle switch, you must first map the quantity field in Step 2. Once mapped, toggle Skip product(s) with zero quantity to ON.
  • Only import ready stock: If you want to use a filter rule instead, set Feed column name: is_available, Condition: Equal to, and Value: true.

Curated Catalog Product Sync

Weave365 is a curated B2B procurement network. To maintain your storefront's focus, the API only delivers the exact products you choose to list on your store.

MethodConfigurationAPI Feed Output
Dashboard SelectionCheckmark products in Account → Developer API and click Save Selection/api/v1/catalog and /api/v1/stock-status automatically output strictly your chosen products.
URL Parameter OverridePass ?skus=100001,100005 in the API request URLExplicit URL query parameters filter the feed directly on demand.
Swipe horizontally to see all columns →

API Endpoints Reference

GET/api/v1/catalog
Catalog & Reseller Price

Fetches the live Weave365 catalog with high-resolution imagery and strictly the Reseller Procurement Price.

Query Parameters
ParameterTypeDescription
categorystring (optional)Filter by category (e.g. Kanchipuram Silk, Banarasi Katan).
skusstring (optional)Filter by specific selected SKUs (comma-separated, e.g. 100001,100005,100012). Ideal when only curating selected products.
keystring (optional)Alternative to x-api-key header. Pass your secret API key directly in the query string (e.g. ?key=w365_live_...). Essential for Shopify SyncX, Stock Sync, and automated feed crawlers that do not support custom request headers.
formatstring (optional)Set to stocksync (or syncx) to emit flattened variant rows with out-of-the-box field auto-matching for Shopify sync apps. Set to shopify or matrixify for standard nested Shopify REST payload.
Response (JSON)HTTP 200 OK
200 OK Response Payload
{
  "status": "success",
  "tier": "growth",
  "client_name": "My Reseller Store",
  "catalog_mode": "curated",
  "total_products": 24,
  "last_synced_at": "2026-08-27T12:00:00Z",
  "products": [
    {
      "id": "100001",
      "sku": "100001",
      "title": "Pure Kanchipuram Silk Saree",
      "category": "Kanchipuram Silk",
      "fabric": "Pure Silk",
      "weave": "Handloom",
      "price": 3500,
      "currency": "INR",
      "stock_status": "ready-stock",
      "stock_status_label": "Ready Stock",
      "is_available": true,
      "colors": ["Royal Blue", "Crimson Red"],
      "images": ["https://assets.weave365.com/products/kan-001.webp"],
      "description": "Certified authentic pure silk Banarasi handloom saree."
    }
  ]
}
GET/api/v1/stock-status
Ultra-Lightweight Stock Map

Returns an ultra-compact map of all SKUs and their instant stock availability. Ideal for frequent (every 5-15 minute) inventory polling without consuming bandwidth or heavy payloads.

Query Parameters
ParameterTypeDescription
skusstring (optional)Filter stock verification to only specific selected SKUs (comma-separated, e.g. 100001,100005).
Response (JSON)HTTP 200 OK
{
  "status": "success",
  "timestamp": "2026-08-26T12:30:00Z",
  "total_items": 240,
  "stock_map": {
    "100001": {
      "title": "Pure Kanchipuram Silk Saree",
      "status": "ready-stock",
      "is_available": true,
      "stock_label": "Ready Stock",
      "updated_at": "2026-08-26 12:15:00 IST"
    },
    "100002": {
      "title": "Banarasi Katan Georgette",
      "status": "out-of-stock",
      "is_available": false,
      "stock_label": "Out of Stock",
      "updated_at": "2026-08-26 11:40:00 IST"
    }
  }
}
GET/api/v1/products/:sku
Single Product Lookup

Retrieves real-time details, high-resolution imagery, and live stock availability for a specific product design code / SKU.

{
  "status": "success",
  "product": {
    "id": "100001",
    "sku": "100001",
    "title": "Pure Kanchipuram Silk Saree",
    "category": "Kanchipuram Silk",
    "fabric": "Pure Silk",
    "price": 3500,
    "currency": "INR",
    "stock_status": "ready-stock",
    "is_available": true,
    "colors": ["Royal Blue", "Crimson Red"],
    "images": ["https://assets.weave365.com/products/kan-001.webp"]
  }
}
Curated Feed Error ResponseHTTP 404 Not Found

If your API key is in curated catalog mode and the requested SKU is not in your selected products list:

{
  "status": "error",
  "code": "NOT_FOUND",
  "message": "Product with SKU 100001 is not found or not included in your curated feed."
}
POST/api/v1/orders
Automated Wholesale Order

Submit wholesale procurement orders directly to the Weave365 fulfillment center in Varanasi.

Automated Reseller Invoice & Payment Flow
  • 1. Initial Placement: Order is created in payment_pending status.
  • 2. Invoice Email: An itemized B2B wholesale invoice with a direct payment link is automatically emailed to your registered reseller address.
  • 3. Payment Settlement: Settle the wholesale total via UPI, NetBanking, or Cards. Status immediately updates to payment_received.
  • 4. Varanasi Fulfillment: Once payment is confirmed, the parcel enters our quality inspection and courier dispatch queue.
Request Body (JSON)
{
  "reseller_order_id": "RESELLER-ORD-1092",
  "reseller_email": "reseller@example.com",
  "items": [
    {
      "sku": "102001",
      "color": "Copper",
      "quantity": 2,
      "customer_price": 2899
    }
  ],
  "shipping_address": {
    "name": "Priya Sharma",
    "phone": "9876543210",
    "address_line1": "Flat 402, Lotus Orchid, Indiranagar",
    "city": "Bengaluru",
    "state": "Karnataka",
    "pincode": "560038"
  },
  "shipping_notes": "Wholesale handloom pure silk parcel"
}
Request Parameters
FieldTypeDescription
reseller_order_idstring (optional)Your custom storefront order reference number (e.g. RESELLER-ORD-1092).
reseller_emailstring (optional)Your registered email to receive the itemized B2B wholesale invoice and payment link.
itemsarray (required)Array of items: sku, color, quantity, and customer_price (the retail price you charged the buyer, printed on the courier parcel slip).
shipping_addressobject (required)End consignee delivery address: name, phone, address_line1, city, state, and pincode.
shipping_notesstring (optional)Special delivery instructions or packaging references.
Success Response (JSON)HTTP 201 Created
{
  "status": "success",
  "order_id": "ord_8f7b2a19-3c94",
  "reseller_order_id": "RESELLER-ORD-1092",
  "order_status": "payment_pending",
  "payment_status": "pending",
  "payment_link": "https://www.weave365.com/order-tracking/ord_8f7b2a19-3c94?pay=1",
  "invoice_email_sent_to": "reseller@example.com",
  "pricing": {
    "wholesale_amount": 3528,
    "customer_billed_price": 5798,
    "reseller_margin": 2270,
    "currency": "INR"
  },
  "courier_slip": {
    "sender_name": "My Reseller Store",
    "recipient_name": "Priya Sharma",
    "recipient_address": "Flat 402, Lotus Orchid, Indiranagar, Bengaluru, Karnataka - PIN: 560038",
    "parcel_declared_value": 5798
  },
  "tracking_url": "https://www.weave365.com/order-tracking/ord_8f7b2a19-3c94",
  "estimated_dispatch": "24-48 Business Hours after payment confirmation"
}
Pro Scale Plan RequirementHTTP 403 Forbidden

Automated wholesale order routing requires an active Pro Scale Plan (₹499/mo). Keys on the Growth Partner (₹299/mo) plan have catalog and stock sync enabled; wholesale orders on the Growth plan are placed manually on Weave365:

{
  "status": "error",
  "code": "FORBIDDEN",
  "message": "Order API access is not enabled for this API key."
}
GET/api/v1/orders
Fetch Orders & Live Tracking

Retrieve orders placed by your account along with live fulfillment stages, courier carrier, and tracking details.

Query Parameters
ParameterTypeDescription
id / order_idstring (optional)Filter by specific Weave365 Order ID (or pass as path: /api/v1/orders/:order_id).
reseller_order_idstring (optional)Filter by your storefront's custom order number (e.g. RESELLER-ORD-1092).
statusstring (optional)Filter by order status (payment_pending, payment_received, processing, dispatched, delivered, cancelled).
limitnumber (optional)Number of orders to retrieve (default: 50, max: 100).
ResponseHTTP 200 OK
{
  "status": "success",
  "total_orders": 2,
  "orders": [
    {
      "id": "ord_8f7b2a19-3c94",
      "reseller_order_id": "RESELLER-ORD-1092",
      "created_at": "2026-08-27T01:15:00Z",
      "status": "payment_received",
      "status_label": "Payment Received / In QC",
      "payment_status": "paid",
      "payment_link": null,
      "tracking": {
        "carrier": "Delhivery Express",
        "tracking_number": "DEL198273645",
        "tracking_message": "Quality inspection verified. Prepared for courier dispatch.",
        "tracking_url": "https://www.weave365.com/order-tracking/ord_8f7b2a19-3c94",
        "is_dispatched": false
      },
      "customer": {
        "name": "Priya Sharma",
        "phone": "9876543210",
        "address": "Flat 402, Lotus Orchid, Indiranagar",
        "city": "Bengaluru",
        "state": "Karnataka",
        "pincode": "560038"
      },
      "items": [
        {
          "sku": "102001",
          "variant_code": "102001",
          "product_title": "Katan Silk Handloom Banarasi Saree",
          "color": "Copper",
          "quantity": 2
        }
      ]
    },
    {
      "id": "ord_a12c45e8-9b10",
      "reseller_order_id": "RESELLER-ORD-1093",
      "created_at": "2026-08-27T03:30:00Z",
      "status": "payment_pending",
      "status_label": "Payment Pending",
      "payment_status": "pending",
      "payment_link": "https://www.weave365.com/order-tracking/ord_a12c45e8-9b10?pay=1",
      "tracking": {
        "carrier": null,
        "tracking_number": null,
        "tracking_message": null,
        "tracking_url": "https://www.weave365.com/order-tracking/ord_a12c45e8-9b10",
        "is_dispatched": false
      },
      "customer": {
        "name": "Ananya Verma",
        "phone": "9812345678",
        "address": "12 Banjara Hills, Road No 3",
        "city": "Hyderabad",
        "state": "Telangana",
        "pincode": "500034"
      },
      "items": [
        {
          "sku": "100001",
          "variant_code": "100001",
          "product_title": "Pure Kanchipuram Silk Saree",
          "color": "Royal Blue",
          "quantity": 1
        }
      ]
    }
  ]
}
Order API Permission RequirementHTTP 403 Forbidden

If Order API permissions are disabled for your key, this endpoint responds with:

{
  "status": "error",
  "code": "FORBIDDEN",
  "message": "Order API access is not enabled for this API key."
}
GET/api/v1/me
Account & Live Quota Metrics

Inspect your current API key details, catalog sync mode, remaining monthly quota, rate limits, active permissions, and live usage statistics.

{
  "status": "success",
  "client_name": "My Reseller Store",
  "client_website": "https://mystore.com",
  "tier": "growth",
  "monthly_quota": 10000,
  "month_total_used": 1420,
  "remaining_quota": 8580,
  "rate_limit_rps": 3,
  "is_active": true,
  "orders_enabled": true,
  "usage_history": [
    {
      "usage_date": "2026-08-26",
      "total_requests": 142,
      "successful_requests": 140,
      "rate_limited_requests": 2
    }
  ]
}

Rate Limits & Quotas

Request quotas are allocated per calendar month and reset automatically on the 1st of every month at 00:00 UTC. Choose an inventory polling frequency suited to your plan:

Sync FrequencyMonthly RequestsRecommended Tier
Every 1–2 Hours~360–720 req / monthGrowth Partner (₹299) — Continuous 24/7 sync
Every 15 Minutes~2,880 req / monthGrowth Partner (₹299) — High-frequency sync
Every 5 Minutes~8,640 req / monthGrowth Partner (₹299) — Near real-time sync
Real-Time / Multi-Store~15,000–25,000 req / monthPro Scale (₹499) — Dedicated high volume sync

Quota Safety Guard

When your monthly quota is reached, endpoints safely respond with HTTP 429 Too Many Requests (code QUOTA_EXCEEDED) to prevent serving outdated stock availability.

Quota Exceeded Error ResponseHTTP 429 Too Many Requests
{
  "status": "error",
  "code": "QUOTA_EXCEEDED",
  "message": "Monthly API quota of 10,000 requests has been exceeded.",
  "upgrade_info": {
    "current_tier": "growth",
    "monthly_quota": 10000,
    "whatsapp_support": "+91 9919101369"
  }
}

Pricing Tiers

Select a plan matched to your store's monthly catalog sync volume:

Growth Partner

For storefronts syncing live stock & catalog

₹299/ month
  • 10,000 requests / month (3 req/sec)
  • Full B2R Catalog Feed (/api/v1/catalog)
  • Real-time stock status sync (/api/v1/stock-status)
  • WooCommerce & Shopify cron sync code
  • Standard B2R Reseller pricing feed
  • Automated Orders API (Manual orders on Weave365)
Activate in Dashboard

Managing From Your Developer Dashboard

Every registered reseller has full access to the self-service Developer Portal inside their account area:

Key Provisioning

Generate, reveal, copy, or refresh secret API tokens securely with salted SHA-256 storage.

Live Usage Gauges

Track remaining monthly requests and daily request histograms in real time.

In-Browser Test Console

Send live test queries and view response headers directly in the browser.