1. Products
Returning.AI
  • Getting Started
  • Users
    • User directory and provisioning
    • Get Users with Filters
      POST
    • Create New User
      POST
    • Get User Data
      POST
    • Manage User Account
      POST
    • Get User Milestones
      POST
    • Update User Data, Identifier, And Roles
      POST
    • Update User XP and Currency
      POST
  • Messaging
    • Agent messaging workflow
    • Get Messages
      GET
    • Send Message
      POST
    • Reply Message
      POST
    • React Message
      POST
    • Upload message images
      POST
  • Gamification
    • Leaderboards
      • Leaderboards
      • List leaderboards with pagination
      • Create a new leaderboard
      • Update an existing leaderboard
      • Get a single leaderboard by ID
      • Delete a leaderboard
    • Streaks & Mini Games
      • Mini-game State and History
      • List user streak logs
      • List mini-game logs by user email
      • Get current mini-game and streak state
      • Update user spin-wheel information
    • Referral
      • Referral Program Integration
      • Get referral programs
      • Get user's referral summary
    • Rolling Data
      • Get Daily Calculation Data
      • Get Rolling Calculation Data
    • Match Predictions
    • Get tier configuration
    • Get daily user XP and coin changes
    • Search user gamification logs
    • Get user activity stats
  • Rewards & Redemptions
    • Store catalog to redemptions
    • Update redemption order status or refund
    • List redemption orders by user email
    • List redemption statuses
    • Get redemption status by ID
    • List redemption orders by community
    • Create redemption order status
    • Get redemption order status history
  • Chart Analysis
    • Create Analysis
    • Get Analysis
    • Update Analysis
    • Delete Analysis
    • List Analyses
    • Append Drawings
  • Bulk Operations
    • Bulk user updates
    • List bulk update jobs
    • Get bulk update job status
    • Get bulk update job details
    • Bulk update users from CSV
    • Bulk update premium currency from CSV
  • Channels
    • Iframe
    • List integration channels
  • Events
    • Outgoing webhooks
      • Encryption
      • User Joins Server
      • User Visits server
      • New Message Posted Anywhere
      • New Message Posted To channel
      • Purchased Store Item
    • Incoming webhooks
      • API Keys & Encryption
      • Send message into channels
      • Update Custom User Fields
      • Update In-game currency
  • Widgets
    • Authenticated Widgets
    • Public widgets
    • Channels
    • Leaderboard
    • Milestone
    • Socials
    • Store
  • Community Analytics
    • Get Loyalty Overview
    • Get Phone Verification Contacts
  • Store
    • Store catalog
    • Purchase History
      • Update redemption instructions or voucher details
    • Categories
      • List Store categories
      • Create Store category
      • Get Store category by ID
      • Update Store category
      • Delete Store category
    • Products
      • List products
        GET
      • Update products in bulk
        PUT
      • Create products in bulk
        POST
      • Create product with vouchers
        POST
      • Read product
        GET
      • Update product and append vouchers
        PUT
      • Delete product
        DELETE
    • Redemption-transaction
      • Get redemption transaction detail
    • Get Store configuration
      GET
    • Update Store configuration
      PUT
  • Community
    • Appearance
      • Update community theme colors
      • Update community bot profile
      • Update community URL metadata
      • Update community name and URL
    • Community Users
      • Get community users
      • Get user
    • Create community
  • API Keys
    • API key lifecycle
    • Community API Keys
      • Create API key
      • Read API keys
      • Delete API key
      • Update API key
    • User API Keys
      • List user API keys
      • Create user API key
      • Update user API key
      • Delete user API key
      • Get current API key information
  • User Fields
    • User field definitions and history
    • User Field History
      • Get all user field histories in a community
      • Get user field histories for a specific field
      • Get user field histories for a specific user
      • Get user field histories of specific user field and user
      • Update A User Field Value
      • Deprecated Field-First History Write
      • Deprecated Field-First History Read
    • Get A User Field Definition
    • Update A User Field Definition
    • Create A User Field Definition
    • Delete A User Field Definition
    • List User Field Definitions
  • Legacy
    • Servers
      • Create server
      • List servers
      • Update server metadata
    • Bulk Operations
      • Bulk import users from CSV
    • Authentication
      • Secure Auth
      • Register user with password
      • Verify user email
      • Log in user with password
    • Badges
      • List badges
      • Create badge
      • Update badge
      • Delete badge
      • Remove badge from user
      • Award badge to user
    • Messaging
    • Roles & Permissions
      • List server roles
      • Create role
      • Update role
      • Delete role
      • List user roles
      • Add role to user
      • Remove role from user
    • Users
      • Get user
      • Upload user avatar
    • Channels
      • Create channel
      • Update channel
      • Delete channel
    • API Keys
      • List integration API keys
      • Create integration API key
      • Delete integration API key
      • Update integration API key
  • Schemas
    • Sample Schemas
    • Schemas
    • Outgoing webhooks
    • Analysis
    • Pet
    • Category
    • Tag
    • ValidationError
    • NotFoundError
    • InternalServerError
    • NotImplementedError
    • CreateUserFieldHistoryResponse
    • CreateUserFieldHistorySuccessResponse
    • UserFieldHistoryItem
    • GetUserFieldHistoriesResponse
    • UserFieldHistoriesValidationError
    • UserFieldHistoriesMetaWithValidation
    • UserFieldHistoriesMetaWithPagination
    • GetUserFieldHistoriesSuccessResponse
    • CreateUserFieldResponse
    • CreateUserFieldSuccessResponse
    • DeleteUserFieldResponse
    • DeleteUserFieldSuccessResponse
    • UserFieldCreator
    • GetUserFieldResponse
    • GetUserFieldSuccessResponse
    • ValidationErrorItem
    • GetUserFieldsMetaResponse
    • CreatorInfo
    • UserFieldResponse
    • GetUserFieldsSuccessResponse
    • UpdateUserFieldResponse
    • UpdateUserFieldPayload
    • UpdateUserFieldSuccessResponse
    • MetaResponse
    • GetUserResponse
    • GetUserSuccessResponse
    • Purchased store item
    • ErrorResponse
    • New message posted to channel
    • UpdateAnalysisRequest
    • User visits server
    • AppendDrawingsRequest
    • User join server
    • CreateAnalysisResponse
    • GetAnalysisResponse
    • UpdateAnalysisResponse
    • AppendDrawingsResponse
    • AnalysisMetadata
    • Expiry
    • Levels
    • LevelEntry
    • Drawing
    • HorizontalLineDrawing
    • LineDrawing
    • RectangleDrawing
    • ParallelDrawing
    • FibonacciRetracementDrawing
    • Coordinate
    • DrawingStyle
    • AnalysisDetail
    • AnalysisSummary
    • CreateAnalysisRequest
    • ListAnalysesResponse
    • StandardApiError
    • StandardSuccessEnvelope
    • PurchasedStoreItemEvent
    • ChannelMessagePostedEvent
    • UserVisitedCommunityEvent
    • UserJoinedCommunityEvent
  1. Products

Create products in bulk

POST
/v1/products/bulk

What this endpoint does#

Create up to 100 products in one all-or-nothing request.
INFO
Workflow
Categories → product batch → read each product

Quick start#

Use the environment selected by Try it. The example values are synthetic.

Authentication and permission#

SendPermissionCommunity scope
Authorization: Bearer <apiKey>storeCommunity scope is derived from the key; do not send a community identifier.

Complete examples#

[
  {
    "name": "Agent A",
    "description": "<p>Synthetic voucher product.</p>",
    "image": null,
    "price": 50,
    "categoryName": "Agent Test Rewards",
    "discountPrice": 0,
    "isDiscountEnabled": false,
    "discountStartDate": null,
    "discountEndDate": null,
    "userInformation": {
      "isEnabled": false,
      "shouldCollectName": false,
      "shouldCollectPhone": false,
      "shouldCollectAddress": false
    },
    "shouldPrioritiesExpiringVouchers": false,
    "shouldDisplayRemainingQuantity": true,
    "expiringVoucherHighlight": {
      "isEnabled": false,
      "duration": 7,
      "timeframe": "days"
    },
    "isArchived": false,
    "redemptionInstructions": null,
    "productPermission": [],
    "isProductAccessEnabled": false,
    "purchaseStatusOverrideName": null,
    "vouchers": [
      "AGENT-BULK-A"
    ],
    "voucherExpireDate": "2027-01-01T00:00:00.000Z"
  },
  {
    "name": "Agent B",
    "description": "<p>Synthetic voucher product.</p>",
    "image": null,
    "price": 75,
    "categoryName": "Agent Test Rewards",
    "discountPrice": 0,
    "isDiscountEnabled": false,
    "discountStartDate": null,
    "discountEndDate": null,
    "userInformation": {
      "isEnabled": false,
      "shouldCollectName": false,
      "shouldCollectPhone": false,
      "shouldCollectAddress": false
    },
    "shouldPrioritiesExpiringVouchers": false,
    "shouldDisplayRemainingQuantity": true,
    "expiringVoucherHighlight": {
      "isEnabled": false,
      "duration": 7,
      "timeframe": "days"
    },
    "isArchived": false,
    "redemptionInstructions": null,
    "productPermission": [],
    "isProductAccessEnabled": false,
    "purchaseStatusOverrideName": null,
    "vouchers": [
      "AGENT-BULK-B"
    ],
    "voucherExpireDate": "2027-01-01T00:00:00.000Z"
  }
]

Success and readback#

Branch on: meta.code = PRODUCTS_BULK_CREATED
{
  "meta": {
    "status": "success",
    "statusCode": 201,
    "code": "PRODUCTS_BULK_CREATED",
    "created": 2
  },
  "message": "Create products in bulk successfully",
  "data": [
    {
      "_id": "prd_agent_a",
      "name": "Agent A",
      "category": {
        "_id": "cat_agent_01",
        "name": "Agent Test Rewards",
        "displayOrder": 10
      },
      "price": 50,
      "stocks": 2
    },
    {
      "_id": "prd_agent_b",
      "name": "Agent B",
      "category": {
        "_id": "cat_agent_01",
        "name": "Agent Test Rewards",
        "displayOrder": 10
      },
      "price": 75,
      "stocks": 2
    }
  ]
}
CHECK
Readback
List by the returned IDs or exact names and verify every item. The response returns created in meta and the created products in data.

Errors and recovery#

Branch on meta.code, never message text.
HTTPMachine codeWhat the caller should doRetry?
400VALIDATION_FAILEDRepair the indexed item; the request writes nothing.No, fix first
401AUTH_API_KEY_REQUIREDAdd the Authorization header.No, fix first
401AUTH_API_KEY_INVALIDReplace or rotate the key.No, fix first
401AUTH_API_KEY_VALIDATION_FAILEDAuthentication could not be completed.Yes, with backoff
403AUTH_PERMISSION_REQUIREDRequest the store permission; no resource data is returned.No, fix first
409STORE_RESOURCE_CONFLICTResolve conflicting items before retrying.After reconciliation
500INTERNAL_ERRORRetry with exponential backoff and the same request context, then escalate.Yes, with backoff

Retry safety#

WARNING
Exact retry
This bulk create is not idempotent. Reconcile every item before deciding whether to retry.

Gotchas#

Avoid this mistake

Next steps#

List Store products
Continue with the next operation in the connected Store lifecycle.

Request

Header Params

Body Params
application/json
Required

Examples

Responses

🟢201Created
application/json
Products created for the API-key community.
Bodyapplication/json

🟠400Bad Request
🟠401Unauthorized
🟠403Forbidden
🟠409Server Error
🔴500Server Error
🔴502Bad Gateway
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.returning.ai/v1/products/bulk' \
--header 'Authorization: Bearer XXXXXX' \
--header 'Content-Type: application/json' \
--data '[
    {
        "name": "Premium Voucher",
        "description": "<p>Premium access reward.</p>",
        "image": "https://example.com/product.png",
        "price": 100,
        "categoryName": "Premium Rewards",
        "discountPrice": 90,
        "isDiscountEnabled": false,
        "discountStartDate": null,
        "discountEndDate": null,
        "userInformation": {
            "isEnabled": false,
            "shouldCollectName": false,
            "shouldCollectPhone": false,
            "shouldCollectAddress": false
        },
        "shouldPrioritiesExpiringVouchers": false,
        "shouldDisplayRemainingQuantity": true,
        "expiringVoucherHighlight": {
            "isEnabled": false,
            "duration": 7,
            "timeframe": "days"
        },
        "isArchived": false,
        "redemptionInstructions": "<p>Show this voucher at checkout.</p>",
        "productPermission": [
            {
                "isEnabled": true,
                "type": "role",
                "permission": {
                    "roleNames": [
                        "VIP Member"
                    ],
                    "tagNames": [
                        "Early Access"
                    ],
                    "usernames": [
                        "alex"
                    ],
                    "combination": [
                        {
                            "type": "role",
                            "values": [
                                "VIP Member"
                            ]
                        }
                    ]
                },
                "purchaseAccess": {
                    "specialPrice": 80,
                    "isSpecialPriceEnabled": false
                },
                "purchaseLimit": {
                    "isPurchaseLimitEnabled": false,
                    "quantity": 1,
                    "intervalCount": 1,
                    "intervalUnit": "months"
                },
                "accessLevel": "full-access",
                "isExclusiveTagEnabled": false
            }
        ],
        "isProductAccessEnabled": false,
        "purchaseStatusOverrideName": null,
        "vouchers": [
            "VOUCHER-001",
            "VOUCHER-002"
        ],
        "voucherExpireDate": "2026-12-31T00:00:00.000Z"
    }
]'
Response Response Example
201 - Success Example
{
    "meta": {
        "status": "success",
        "statusCode": 201,
        "created": 1
    },
    "message": "Create products success.",
    "data": [
        {
            "_id": "507f1f77bcf86cd799439011",
            "communityID": "6502c9e514a3e564c5c09c0a",
            "name": "Premium Voucher",
            "description": "<p>Redeem for premium access.</p>",
            "image": "https://example.com/product.png",
            "price": 100,
            "category": "Premium Rewards",
            "stocks": 2,
            "discountPrice": 90,
            "isDiscountEnabled": false,
            "discountStartDate": null,
            "discountEndDate": null,
            "userInformation": {
                "isEnabled": false,
                "shouldCollectName": false,
                "shouldCollectPhone": false,
                "shouldCollectAddress": false
            },
            "shouldPrioritiesExpiringVouchers": false,
            "shouldDisplayRemainingQuantity": true,
            "expiringVoucherHighlight": {
                "isEnabled": false,
                "duration": 7,
                "timeframe": "days"
            },
            "isArchived": false,
            "totalOrders": 0,
            "redemptionInstructions": "<p>Show this voucher at checkout.</p>",
            "productPermission": [
                {
                    "isEnabled": true,
                    "type": "role",
                    "permission": {
                        "roleNames": [
                            "VIP Member"
                        ],
                        "tagNames": [
                            "Early Access"
                        ],
                        "usernames": [
                            "alex"
                        ],
                        "combination": [
                            {
                                "type": "role",
                                "values": [
                                    "VIP Member"
                                ]
                            }
                        ]
                    },
                    "purchaseAccess": {
                        "specialPrice": 80,
                        "isSpecialPriceEnabled": false
                    },
                    "purchaseLimit": {
                        "isPurchaseLimitEnabled": false,
                        "quantity": 1,
                        "intervalCount": 1,
                        "intervalUnit": "months"
                    },
                    "accessLevel": "full-access",
                    "isExclusiveTagEnabled": false
                }
            ],
            "isProductAccessEnabled": false,
            "purchaseStatusOverride": {
                "isEnabled": false,
                "status": null
            },
            "createdAt": "2026-06-09T00:00:00.000Z",
            "updatedAt": "2026-06-09T00:00:00.000Z"
        }
    ]
}
Modified at 2026-08-08 01:52:56
Previous
Update products in bulk
Next
Create product with vouchers
Built with