Docs
Dashboard
On this page

    Reviews

    3 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.

    The moderation queue with counts and the rating summary

    GET/v1/store/reviews

    Or name the store: GET /v1/stores/{storeId}/reviews

    customers:readlistReviews

    Parameters

    • tab"all" | "pending" | "needs_reply" | "low_ratings" | "flagged" | "hidden"query
    • qstring | nullquery
    • productIdprd_… | nullquery
    • ratinginteger | string | nullquery
    • cursorstring | nullquery
    • limitinteger | stringquery

    Response ListReviewsResponse

    • itemsSellerReview[]required
    • nextCursorCursor | nullrequired
    • countsReviewCountsrequired
    • summaryRatingSummaryrequired

    Example

    curl "https://api.shopfa.st/v1/store/reviews" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/reviews', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/reviews",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/reviews", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Approve, hide, flag or unflag a review

    POST/v1/store/reviews/{reviewId}/moderate

    Or name the store: POST /v1/stores/{storeId}/reviews/{reviewId}/moderate

    customers:writemoderateReview

    Parameters

    • reviewIdrev_…pathrequired

    Body

    • action"approve" | "hide" | "flag" | "unflag"required
    • reasonstring

    Response SellerReview

    • idReviewIdrequired
    • productIdProductIdrequired
    • productNamestringrequired
    • orderIdOrderId | nullrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerEmailstringrequired
    • ratingintegerrequired
    • titlestringrequired
    • bodystringrequired
    12 more fields
    • authorstringrequired
    • statusReviewStatusrequired
    • verifiedbooleanrequired
    • flaggedbooleanrequired
    • flagReasonstringrequired
    • replystringrequired
    • repliedAtTimestamp | nullrequired
    • createdAtTimestamprequired
    • rewardIssuedReviewReward | nullrequired
    • sourcestringrequired
    • sourceLabelstringrequired
    • imageUrlstringrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/moderate" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "action": "approve",
      "reason": ""
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/moderate', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "action": "approve",
        "reason": ""
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/moderate",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "action": "approve",
          "reason": ""
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/moderate", strings.NewReader(`{
      "action": "approve",
      "reason": ""
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Reply in public (null removes the reply)

    PUT/v1/store/reviews/{reviewId}/reply

    Or name the store: PUT /v1/stores/{storeId}/reviews/{reviewId}/reply

    customers:writereplyReview

    Parameters

    • reviewIdrev_…pathrequired

    Body

    • replystring | nullrequired

    Response SellerReview

    • idReviewIdrequired
    • productIdProductIdrequired
    • productNamestringrequired
    • orderIdOrderId | nullrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerEmailstringrequired
    • ratingintegerrequired
    • titlestringrequired
    • bodystringrequired
    12 more fields
    • authorstringrequired
    • statusReviewStatusrequired
    • verifiedbooleanrequired
    • flaggedbooleanrequired
    • flagReasonstringrequired
    • replystringrequired
    • repliedAtTimestamp | nullrequired
    • createdAtTimestamprequired
    • rewardIssuedReviewReward | nullrequired
    • sourcestringrequired
    • sourceLabelstringrequired
    • imageUrlstringrequired

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/reply" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "reply": "string"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/reply', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "reply": "string"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/reply",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "reply": "string"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/reviews/rev_0123456789abcdefghjk/reply", strings.NewReader(`{
      "reply": "string"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Was this page helpful?