DummyJSON

App · Utilities · 29 actions

Free fake data and developer tools for testing and prototyping, from DummyJSON. Products with prices, discounts and reviews, shopping carts, whole user profiles, posts, comments, to-dos, recipes and quotes, all searchable, filterable and paged. Add, change and delete steps are answered as though they worked without anything being stored, and any of the fake users can log in for a real access token. The tools make placeholder images and identicons, answer with any HTTP status, serve your own JSON from a mock endpoint, record what is sent to a test webhook and generate two-factor codes for test accounts. No account or API key required.

Actions

ActionWhat it does
Add a cart (simulated)Put a cart together for a user from product ids and quantities, and get it back priced by DummyJSON: each line multiplied out and discounted, and the cart totalled.
Add a product (simulated)Send a new product to DummyJSON and get back what a real create would answer, without anything being stored: the product as sent, under the next id after the catalogue's last.
Create a mock endpointGet a public address that answers with the JSON you give it: a stand-in for an API that does not exist yet.
Create a test webhookMake a temporary address that records every request sent to it for 24 hours.
Delete a product (simulated)Send a delete for a product and get back what a real delete would answer: the whole product and the moment it was deleted.
Generate a 2FA code for a test accountGet the current six-digit two-factor code for a test account: the code Google Authenticator or Authy would show for it, so a scripted sign-in can get past its 2FA step.
Get a cartGet one cart by its id: each product in it with its quantity, price, discount and line total, and the cart's total before and after discounts.
Get a postGet one blog post by its id, with its text, tags, likes, dislikes, views and its author's id.
Get a productGet one product by its id, with everything DummyJSON holds on it: the price before and after its discount, stock, reviews, pictures, size, SKU and barcode.
Get a recipeGet one recipe by its id: ingredients, step by step instructions, preparation and cooking time, servings, calories and a photo.
Get a userGet one of DummyJSON's fake people by their id: the whole profile, from home address and employer to the username and password Log in as a test user takes.
Get random quotesGet one to ten random quotes from DummyJSON's 1,454, each with its author, different every time.
Get the logged-in userGet the user an access token from Log in as a test user belongs to: the whole profile.
List a test webhook's requestsList what a test webhook has received, newest first: each request's method, headers, query parameters, body and time.
List cartsList DummyJSON's 208 fake shopping carts, or one user's, each priced line by line with quantities, discounts and totals.
List commentsList DummyJSON's 340 fake comments, or the ones on one post, each with its likes and the commenter's name and username.
List postsList DummyJSON's 251 fake blog posts, with their tags, likes, dislikes and views.
List product categoriesList DummyJSON's 24 product categories, each with its slug, its name and how many products are in it.
List productsList DummyJSON's 194 fake products, each with a price and a discount, stock, brand, category, rating, reviews, pictures, SKU and barcode.
List recipesList DummyJSON's 50 fake recipes, each with ingredients, steps, times, servings, calories, cuisine and a rating.
List to-dosList DummyJSON's 254 fake to-dos, or one user's, and keep only the done or only the open ones.
List usersList DummyJSON's 208 fake people, each a whole profile: name, age, email, phone, home address with coordinates, employer, university, bank card, and the username and password that log them in.
Log in as a test userLog in as one of DummyJSON's fake users and get a real, signed access token (a JWT) and a refresh token, with the user's short profile.
Make a placeholder imageGet the address of a placeholder image of any size up to 4000 pixels a side, with your own caption, colors, font and format (PNG, JPEG or WebP).
Make an identiconGet the address of an identicon: a pattern drawn from any text, the same every time, for a default avatar.
Refresh a login sessionTrade a refresh token for a new access token and a new refresh token, the way an app keeps someone logged in.
Send a request to a test webhookSend a request into a test webhook, the way another system would call it: any method, a JSON body and query parameters.
Simulate an HTTP statusHave DummyJSON answer with the status code of your choosing, 404, 429 or 503 say, and a message of your own.
Update a product (simulated)Send a change to a product and get back what a real update would answer, without anything being stored: the product with the fields you set applied.

Add a cart (simulated)

Put a cart together for a user from product ids and quantities, and get it back priced by DummyJSON: each line multiplied out and discounted, and the cart totalled. Nothing is stored. Product ids DummyJSON does not have are left out of the cart and listed separately. A realistic order to test a checkout, invoice or receipt workflow with. No API key required.

Inputs

Useruser_idnumberRequired
The id of the user the cart is for. Users are numbered 1 to 208.At least 1.
ProductsproductslistRequired
What goes in the cart: a list of products, each with an 'id' and a 'quantity' (1 when left out). Text works too, one product per line or comma, written as an id or as id:quantity, e.g. 144:4, 98. The same product twice is added together.

Outputs

cartobject
One shopping cart, priced line by line.
simulatedtrue/false
Always true. DummyJSON fakes every write: nothing is stored, changed or removed, and reading the record back gives what was there before.
unknown_product_idslist
The product ids DummyJSON does not have, which it left out of the cart. Empty when every product was found.
Example output
{
  "cart": {
    "api_url": null,
    "discounted_total": 105.41,
    "id": 209,
    "products": [
      {
        "discount_percentage": 12.13,
        "discounted_total": 105.41,
        "id": 162,
        "price": 29.99,
        "quantity": 4,
        "thumbnail_url": "https://cdn.dummyjson.com/product-images/tops/blue-frock/thumbnail.webp",
        "title": "Blue Frock",
        "total": 119.96
      }
    ],
    "total": 119.96,
    "total_products": 1,
    "total_quantity": 4,
    "user_id": 1
  },
  "simulated": true,
  "unknown_product_ids": []
}

Add a product (simulated)

Send a new product to DummyJSON and get back what a real create would answer, without anything being stored: the product as sent, under the next id after the catalogue's last. DummyJSON keeps ten fields of a product (title, description, price, discount, stock, rating, brand, category, thumbnail and pictures) and drops anything else. The way to prove a workflow puts the right product together before pointing it at a real store. No API key required.

Inputs

TitletitletextRequired
The product's name.
Descriptiondescriptiontext
Optional. A paragraph about the product.
Pricepricenumber
Optional. The price.At least 0.
Discount (%)discount_percentagenumber
Optional. The discount on it, as a percentage from 0 to 100.From 0 to 100.
Stockstocknumber
Optional. How many are in stock, a whole number.At least 0.
Ratingratingnumber
Optional. The average rating, from 0 to 5.From 0 to 5.
Brandbrandtext
Optional. The brand.
Categorycategorytext
Optional. The category's slug. Pick one of DummyJSON's or type any; a simulated write takes a new one as readily as an existing one.
Thumbnail URLthumbnail_urltext
Optional. The address of a small picture of it, starting with https://.
Image URLsimage_urlslist
Optional. The addresses of its pictures: a list, or text with one address per line.

Outputs

productobject
One product from DummyJSON's catalogue.
simulatedtrue/false
Always true. DummyJSON fakes every write: nothing is stored, changed or removed, and reading the record back gives what was there before.
Example output
{
  "product": {
    "api_url": null,
    "availability_status": null,
    "barcode": null,
    "brand": null,
    "category": "stationery",
    "created_at": null,
    "description": null,
    "dimensions": {
      "depth": null,
      "height": null,
      "width": null
    },
    "discount_percentage": 10.0,
    "discounted_price": 3.15,
    "id": 195,
    "image_urls": [],
    "minimum_order_quantity": null,
    "price": 3.5,
    "qr_code_url": null,
    "rating": null,
    "return_policy": null,
    "reviews": [],
    "shipping_information": null,
    "sku": null,
    "stock": null,
    "tags": [],
    "thumbnail_url": null,
    "title": "Lodol Test Pencil",
    "updated_at": null,
    "warranty_information": null,
    "weight": null
  },
  "simulated": true
}

Create a mock endpoint

Get a public address that answers with the JSON you give it: a stand-in for an API that does not exist yet. The same JSON and method always get the same address, and DummyJSON deletes one nobody has called for 90 days. Anyone with the address can call it, so keep secrets out of it. No API key required.

Inputs

Responseresponse_bodyobjectRequired
The JSON the address answers with: an object, a list, or JSON text, up to 300 KB.
Methodmethodtext
Optional. The HTTP method the address answers. GET by default.One of: GET, POST, PUT, PATCH, DELETE. Default: GET.

Outputs

endpoint_idtext
The last part of the address, DummyJSON's id for it.
methodtext
The HTTP method it answers.
size_bytesnumber
How big the response is, in bytes.
urltext
The address that answers with the JSON.
Example output
{
  "endpoint_id": "cde2-77cc-4977-9d5d",
  "method": "GET",
  "size_bytes": 39,
  "url": "https://dummyjson.com/c/cde2-77cc-4977-9d5d"
}

Create a test webhook

Make a temporary address that records every request sent to it for 24 hours. Point another service or a workflow's HTTP step at it, then read what arrived with List a test webhook's requests; opening the address in a browser shows DummyJSON's live inspector. DummyJSON allows 10 new test webhooks an hour. No API key required.

Inputs

None.

Outputs

expires_attext
When the webhook stops recording.
urltext
The address to send requests to. Anyone who has it can send to it and read what arrived.
webhook_idtext
The webhook's id, e.g. 0f02351d.
Example output
{
  "expires_at": "2026-09-25T06:54:49.956Z",
  "url": "https://dummyjson.com/webhook/0f02351d",
  "webhook_id": "0f02351d"
}

Delete a product (simulated)

Send a delete for a product and get back what a real delete would answer: the whole product and the moment it was deleted. Nothing is removed, so Get a product still finds it and this can run again on the same id. No API key required.

Inputs

Productproduct_idnumberRequired
The product's id. DummyJSON publishes 194 products, numbered 1 to 194, and the numbering stays put, so an id from an earlier run still means the same product.At least 1.

Outputs

deleted_attext
When DummyJSON says it deleted the product, as an ISO 8601 timestamp.
productobject
One product from DummyJSON's catalogue.
simulatedtrue/false
Always true. DummyJSON fakes every write: nothing is stored, changed or removed, and reading the record back gives what was there before.
Example output
{
  "deleted_at": "2026-09-24T06:54:17.383Z",
  "product": {
    "api_url": "https://dummyjson.com/products/1",
    "availability_status": "In Stock",
    "barcode": "5784719087687",
    "brand": "Essence",
    "category": "beauty",
    "created_at": "2025-10-09T14:47:01.588Z",
    "description": "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects.",
    "dimensions": {
      "depth": 22.99,
      "height": 13.08,
      "width": 15.14
    },
    "discount_percentage": 10.48,
    "discounted_price": 8.94,
    "id": 1,
    "image_urls": [
      "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"
    ],
    "minimum_order_quantity": 48,
    "price": 9.99,
    "qr_code_url": "https://cdn.dummyjson.com/public/qr-code.png",
    "rating": 2.56,
    "return_policy": "No return policy",
    "reviews": [
      {
        "comment": "Would not recommend!",
        "date": "2025-04-30T09:41:02.053Z",
        "rating": 3,
        "reviewer_email": "eleanor.collins@x.dummyjson.com",
        "reviewer_name": "Eleanor Collins"
      }
    ],
    "shipping_information": "Ships in 3-5 business days",
    "sku": "BEA-ESS-ESS-001",
    "stock": 99,
    "tags": [
      "beauty",
      "mascara"
    ],
    "thumbnail_url": "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp",
    "title": "Essence Mascara Lash Princess",
    "updated_at": "2026-05-23T11:27:41.868Z",
    "warranty_information": "1 week warranty",
    "weight": 4.0
  },
  "simulated": true
}

Generate a 2FA code for a test account

Get the current six-digit two-factor code for a test account: the code Google Authenticator or Authy would show for it, so a scripted sign-in can get past its 2FA step. You supply the account's own secret, the key its authenticator was set up with or the otpauth link in its QR code; this action does not make one up. That secret is sent to DummyJSON's servers to work the code out, and whoever holds it can make the account's codes for good, so use this only with a test account's secret, never a real account's. The example, JBSWY3DPEHPK3PXP, is the public test secret from DummyJSON's docs. No API key required.

Inputs

Test account's secretsecrettextRequired
The test account's own authenticator secret: the base32 key shown when its 2FA was set up (spaces are fine), or the whole otpauth://totp link from its QR code. It goes to DummyJSON as it is, so never enter a real account's secret. From a link only the secret is sent, not the account name or issuer. DummyJSON makes 6-digit, 30-second SHA-1 codes, so a link asking for any other kind is refused.

Outputs

codetext
The six-digit code.
expires_attext
When the code stops working.
expires_in_secondsnumber
How many seconds it has left, at least 5: a code about to change is waited out for the next one.
period_secondsnumber
How often a new code comes, every 30 seconds.
Example output
{
  "code": "944629",
  "expires_at": "2026-09-24T07:17:00Z",
  "expires_in_seconds": 22,
  "period_seconds": 30
}

Get a cart

Get one cart by its id: each product in it with its quantity, price, discount and line total, and the cart's total before and after discounts. No API key required.

Inputs

Cartcart_idnumberRequired
The cart's id. DummyJSON publishes 208 carts, numbered 1 to 208, one per user.At least 1.

Outputs

cartobject
One shopping cart, priced line by line.
Example output
{
  "cart": {
    "api_url": "https://dummyjson.com/carts/1",
    "discounted_total": 105.41,
    "id": 1,
    "products": [
      {
        "discount_percentage": 12.13,
        "discounted_total": 105.41,
        "id": 162,
        "price": 29.99,
        "quantity": 4,
        "thumbnail_url": "https://cdn.dummyjson.com/product-images/tops/blue-frock/thumbnail.webp",
        "title": "Blue Frock",
        "total": 119.96
      }
    ],
    "total": 119.96,
    "total_products": 1,
    "total_quantity": 4,
    "user_id": 1
  }
}

Get a post

Get one blog post by its id, with its text, tags, likes, dislikes, views and its author's id. No API key required.

Inputs

Postpost_idnumberRequired
The post's id. DummyJSON publishes 251 posts, numbered 1 to 251.At least 1.

Outputs

postobject
One blog post.
Example output
{
  "post": {
    "api_url": "https://dummyjson.com/posts/1",
    "body": "His mother had always taught him not to ever think of himself as better than others.",
    "dislikes": 25,
    "id": 1,
    "likes": 192,
    "tags": [
      "history",
      "american",
      "crime"
    ],
    "title": "His mother had always taught him",
    "user_id": 121,
    "views": 305
  }
}

Get a product

Get one product by its id, with everything DummyJSON holds on it: the price before and after its discount, stock, reviews, pictures, size, SKU and barcode. No API key required.

Inputs

Productproduct_idnumberRequired
The product's id. DummyJSON publishes 194 products, numbered 1 to 194, and the numbering stays put, so an id from an earlier run still means the same product.At least 1.

Outputs

productobject
One product from DummyJSON's catalogue.
Example output
{
  "product": {
    "api_url": "https://dummyjson.com/products/1",
    "availability_status": "In Stock",
    "barcode": "5784719087687",
    "brand": "Essence",
    "category": "beauty",
    "created_at": "2025-10-09T14:47:01.588Z",
    "description": "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects.",
    "dimensions": {
      "depth": 22.99,
      "height": 13.08,
      "width": 15.14
    },
    "discount_percentage": 10.48,
    "discounted_price": 8.94,
    "id": 1,
    "image_urls": [
      "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"
    ],
    "minimum_order_quantity": 48,
    "price": 9.99,
    "qr_code_url": "https://cdn.dummyjson.com/public/qr-code.png",
    "rating": 2.56,
    "return_policy": "No return policy",
    "reviews": [
      {
        "comment": "Would not recommend!",
        "date": "2025-04-30T09:41:02.053Z",
        "rating": 3,
        "reviewer_email": "eleanor.collins@x.dummyjson.com",
        "reviewer_name": "Eleanor Collins"
      }
    ],
    "shipping_information": "Ships in 3-5 business days",
    "sku": "BEA-ESS-ESS-001",
    "stock": 99,
    "tags": [
      "beauty",
      "mascara"
    ],
    "thumbnail_url": "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp",
    "title": "Essence Mascara Lash Princess",
    "updated_at": "2026-05-23T11:27:41.868Z",
    "warranty_information": "1 week warranty",
    "weight": 4.0
  }
}

Get a recipe

Get one recipe by its id: ingredients, step by step instructions, preparation and cooking time, servings, calories and a photo. No API key required.

Inputs

Reciperecipe_idnumberRequired
The recipe's id. DummyJSON publishes 50 recipes, numbered 1 to 50.At least 1.

Outputs

recipeobject
One recipe.
Example output
{
  "recipe": {
    "api_url": "https://dummyjson.com/recipes/1",
    "calories_per_serving": 300,
    "cook_time_minutes": 15,
    "cuisine": "Italian",
    "difficulty": "Easy",
    "id": 1,
    "image_url": "https://cdn.dummyjson.com/recipe-images/1.webp",
    "ingredients": [
      "Pizza dough",
      "Tomato sauce",
      "Fresh mozzarella cheese"
    ],
    "instructions": [
      "Preheat the oven to 475\u00b0F (245\u00b0C).",
      "Roll out the pizza dough and spread tomato sauce evenly."
    ],
    "meal_types": [
      "Dinner"
    ],
    "name": "Classic Margherita Pizza",
    "prep_time_minutes": 20,
    "rating": 4.6,
    "review_count": 98,
    "servings": 4,
    "tags": [
      "Pizza",
      "Italian"
    ],
    "total_time_minutes": 35,
    "user_id": 166
  }
}

Get a user

Get one of DummyJSON's fake people by their id: the whole profile, from home address and employer to the username and password Log in as a test user takes. No API key required.

Inputs

Useruser_idnumberRequired
The user's id. DummyJSON publishes 208 users, numbered 1 to 208.At least 1.

Outputs

userobject
One of DummyJSON's fake people: a whole profile, every detail of it made up.
Example output
{
  "user": {
    "address": {
      "city": "Phoenix",
      "country": "United States",
      "latitude": -77.16213,
      "longitude": -92.084824,
      "postal_code": "29112",
      "state": "Mississippi",
      "state_code": "MS",
      "street": "626 Main Street"
    },
    "age": 29,
    "api_url": "https://dummyjson.com/users/1",
    "bank": {
      "card_expire": "05/28",
      "card_number": "3693233511855044",
      "card_type": "Diners Club International",
      "currency": "GBP",
      "iban": "GB74MH2UZLR9TRPHYNU8F8"
    },
    "birth_date": "1996-05-30",
    "blood_group": "O-",
    "company": {
      "address": {
        "city": "San Francisco",
        "country": "United States",
        "latitude": 71.814525,
        "longitude": -161.150263,
        "postal_code": "37657",
        "state": "Wisconsin",
        "state_code": "WI",
        "street": "263 Tenth Street"
      },
      "department": "Engineering",
      "name": "Dooley, Kozey and Cronin",
      "title": "Sales Manager"
    },
    "crypto": {
      "coin": "Bitcoin",
      "network": "Ethereum (ERC20)",
      "wallet": "0xb9fc2fe63b2a6c003f1c324c3bfa53259162181a"
    },
    "ein": "977-175",
    "email": "emily.johnson@x.dummyjson.com",
    "eye_color": "Green",
    "first_name": "Emily",
    "full_name": "Emily Johnson",
    "gender": "female",
    "hair": {
      "color": "Brown",
      "type": "Curly"
    },
    "height": 193.24,
    "id": 1,
    "image_url": "https://dummyjson.com/icon/emilys/128",
    "ip_address": "42.48.100.32",
    "last_name": "Johnson",
    "mac_address": "47:fa:41:18:ec:eb",
    "maiden_name": "Smith",
    "password": "emilyspass",
    "phone": "+81 965-431-3024",
    "role": "admin",
    "ssn": "900-590-289",
    "university": "University of Wisconsin--Madison",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
    "username": "emilys",
    "weight": 63.16
  }
}

Get random quotes

Get one to ten random quotes from DummyJSON's 1,454, each with its author, different every time. The quote of the day for a newsletter, a chat post or a screen. No API key required.

Inputs

How manycountnumber
Optional. How many quotes, from 1 to 10. 1 by default.From 1 to 10. Default: 1.

Outputs

authortext
Who said the first quote.
countnumber
How many came back.
quotetext
The first quote's text, for the step that wanted one.
quoteslist
The quotes, in no particular order.
Example output
{
  "author": "Rumi",
  "count": 1,
  "quote": "Your heart is the size of an ocean. Go find yourself in its hidden depths.",
  "quotes": [
    {
      "api_url": "https://dummyjson.com/quotes/1",
      "author": "Rumi",
      "id": 1,
      "quote": "Your heart is the size of an ocean. Go find yourself in its hidden depths."
    }
  ]
}

Get the logged-in user

Get the user an access token from Log in as a test user belongs to: the whole profile. It proves the token works, and says why when it does not. No API key required.

Inputs

Access tokenaccess_tokentextRequired
The access token Log in as a test user or Refresh a login session returned. A leading 'Bearer ' is fine.

Outputs

userobject
One of DummyJSON's fake people: a whole profile, every detail of it made up.
Example output
{
  "user": {
    "address": {
      "city": "Phoenix",
      "country": "United States",
      "latitude": -77.16213,
      "longitude": -92.084824,
      "postal_code": "29112",
      "state": "Mississippi",
      "state_code": "MS",
      "street": "626 Main Street"
    },
    "age": 29,
    "api_url": "https://dummyjson.com/users/1",
    "bank": {
      "card_expire": "05/28",
      "card_number": "3693233511855044",
      "card_type": "Diners Club International",
      "currency": "GBP",
      "iban": "GB74MH2UZLR9TRPHYNU8F8"
    },
    "birth_date": "1996-05-30",
    "blood_group": "O-",
    "company": {
      "address": {
        "city": "San Francisco",
        "country": "United States",
        "latitude": 71.814525,
        "longitude": -161.150263,
        "postal_code": "37657",
        "state": "Wisconsin",
        "state_code": "WI",
        "street": "263 Tenth Street"
      },
      "department": "Engineering",
      "name": "Dooley, Kozey and Cronin",
      "title": "Sales Manager"
    },
    "crypto": {
      "coin": "Bitcoin",
      "network": "Ethereum (ERC20)",
      "wallet": "0xb9fc2fe63b2a6c003f1c324c3bfa53259162181a"
    },
    "ein": "977-175",
    "email": "emily.johnson@x.dummyjson.com",
    "eye_color": "Green",
    "first_name": "Emily",
    "full_name": "Emily Johnson",
    "gender": "female",
    "hair": {
      "color": "Brown",
      "type": "Curly"
    },
    "height": 193.24,
    "id": 1,
    "image_url": "https://dummyjson.com/icon/emilys/128",
    "ip_address": "42.48.100.32",
    "last_name": "Johnson",
    "mac_address": "47:fa:41:18:ec:eb",
    "maiden_name": "Smith",
    "password": "emilyspass",
    "phone": "+81 965-431-3024",
    "role": "admin",
    "ssn": "900-590-289",
    "university": "University of Wisconsin--Madison",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
    "username": "emilys",
    "weight": 63.16
  }
}

List a test webhook's requests

List what a test webhook has received, newest first: each request's method, headers, query parameters, body and time. It can wait up to two minutes for something to arrive, and keep only what came in after a given moment. DummyJSON keeps a webhook's latest 100 requests, and keeps JSON and form bodies only. No API key required.

Inputs

Test webhookwebhooktextRequired
The test webhook's address or its id, as Create a test webhook returned them, e.g. https://dummyjson.com/webhook/0f02351d. A webhook lasts 24 hours.
Received afterreceived_afterdate and time
Optional. Keep only the requests that arrived after this moment, to the millisecond. Pass the latest received at of an earlier listing to see only what is new.
Wait up to (seconds)wait_secondsnumber
Optional. When nothing (new) has arrived yet, keep asking every few seconds for up to this long, 120 at most. 0 by default. Nothing arriving is an empty list, not an error.From 0 to 120. Default: 0.

Outputs

countnumber
How many there are.
expires_attext
When the webhook stops recording.
latest_received_attext
When the newest of them arrived, to hand to the next listing's received after. Null when there are none.
requestslist
The requests, newest first.
webhook_idtext
The webhook's id.
Example output
{
  "count": 1,
  "expires_at": "2026-09-25T06:54:49.956Z",
  "latest_received_at": "2026-09-24T07:17:08.662Z",
  "requests": [
    {
      "body": {
        "event": "order.created",
        "order_id": 1001
      },
      "content_type": "application/json",
      "headers": {
        "content-type": "application/json",
        "host": "dummyjson.com",
        "user-agent": "Stripe/1.0 (+https://stripe.com/docs/webhooks)"
      },
      "method": "POST",
      "query": {
        "source": "checkout"
      },
      "received_at": "2026-09-24T07:17:08.662Z",
      "request_id": "098a1aeb-63e6-40d9-80ac-ee6c2b9750e5",
      "truncated": false
    }
  ],
  "webhook_id": "0f02351d"
}

List carts

List DummyJSON's 208 fake shopping carts, or one user's, each priced line by line with quantities, discounts and totals. Sort by total or by how much is in them, and page through. No API key required.

Inputs

Useruser_idnumber
Optional. Return only this user's records. Users are numbered 1 to 208; leave blank for everyone's.At least 1.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: total, discounted_total (Total after discounts), total_products (Number of products), total_quantity (Number of items).
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

cartslist
The carts in this page.
countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "carts": [
    {
      "api_url": "https://dummyjson.com/carts/1",
      "discounted_total": 105.41,
      "id": 1,
      "products": [
        {
          "discount_percentage": 12.13,
          "discounted_total": 105.41,
          "id": 162,
          "price": 29.99,
          "quantity": 4,
          "thumbnail_url": "https://cdn.dummyjson.com/product-images/tops/blue-frock/thumbnail.webp",
          "title": "Blue Frock",
          "total": 119.96
        }
      ],
      "total": 119.96,
      "total_products": 1,
      "total_quantity": 4,
      "user_id": 1
    }
  ],
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "total_count": 208
}

List comments

List DummyJSON's 340 fake comments, or the ones on one post, each with its likes and the commenter's name and username. No API key required.

Inputs

Postpost_idnumber
Optional. Return only the comments on this post. Posts are numbered 1 to 251; leave blank for every comment.At least 1.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: likes, post_id (Post).
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

commentslist
The comments in this page.
countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "comments": [
    {
      "api_url": "https://dummyjson.com/comments/93",
      "body": "These are fabulous ideas!",
      "id": 93,
      "likes": 7,
      "post_id": 1,
      "user": {
        "full_name": "Leah Gutierrez",
        "id": 190,
        "username": "leahw"
      }
    }
  ],
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "total_count": 340
}

List posts

List DummyJSON's 251 fake blog posts, with their tags, likes, dislikes and views. Search their text, keep one tag or one author's posts (these combine), sort by views or likes, and page through. No API key required.

Inputs

Search textsearchtext
Optional. Keep the posts whose text contains this, ignoring capitals. DummyJSON searches the post's body, which begins with its title.
Tagtagtext
Optional. Keep the posts with this tag. Pick one or type it; a tag DummyJSON does not use is refused with the nearest it does.
Useruser_idnumber
Optional. Return only this user's records. Users are numbered 1 to 208; leave blank for everyone's.At least 1.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: views, likes, dislikes, title.
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
postslist
The posts in this page.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "posts": [
    {
      "api_url": "https://dummyjson.com/posts/1",
      "body": "His mother had always taught him not to ever think of himself as better than others.",
      "dislikes": 25,
      "id": 1,
      "likes": 192,
      "tags": [
        "history",
        "american",
        "crime"
      ],
      "title": "His mother had always taught him",
      "user_id": 121,
      "views": 305
    }
  ],
  "total_count": 251
}

List product categories

List DummyJSON's 24 product categories, each with its slug, its name and how many products are in it. The slug is what List products and Add a product take. No API key required.

Inputs

None.

Outputs

categorieslist
Every category, in DummyJSON's order.
countnumber
How many categories there are.
Example output
{
  "categories": [
    {
      "api_url": "https://dummyjson.com/products/category/beauty",
      "name": "Beauty",
      "product_count": 5,
      "slug": "beauty"
    }
  ],
  "count": 24
}

List products

List DummyJSON's 194 fake products, each with a price and a discount, stock, brand, category, rating, reviews, pictures, SKU and barcode. Search their titles and descriptions, keep one category, sort by price, rating, stock or last change, and page through. The stand-in catalogue for a store workflow while the real one is being built. No API key required.

Inputs

Search textsearchtext
Optional. Keep the products whose title or description contains this text, ignoring capitals.
Categorycategorytext
Optional. Return only the products in this category. Pick one, or type its name or slug (mens-shirts and Mens Shirts are the same). A name DummyJSON does not know is refused with the nearest it does.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: title, price, rating, stock, discount_percentage (Discount), brand, updated_at (Last modified).
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Changed aftermodified_afterdate and time
Optional. Keep the products last changed after this moment.
Changed beforemodified_beforedate and time
Optional. Keep the products last changed before this moment.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
productslist
The products in this page.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "products": [
    {
      "api_url": "https://dummyjson.com/products/1",
      "availability_status": "In Stock",
      "barcode": "5784719087687",
      "brand": "Essence",
      "category": "beauty",
      "created_at": "2025-10-09T14:47:01.588Z",
      "description": "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects.",
      "dimensions": {
        "depth": 22.99,
        "height": 13.08,
        "width": 15.14
      },
      "discount_percentage": 10.48,
      "discounted_price": 8.94,
      "id": 1,
      "image_urls": [
        "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"
      ],
      "minimum_order_quantity": 48,
      "price": 9.99,
      "qr_code_url": "https://cdn.dummyjson.com/public/qr-code.png",
      "rating": 2.56,
      "return_policy": "No return policy",
      "reviews": [
        {
          "comment": "Would not recommend!",
          "date": "2025-04-30T09:41:02.053Z",
          "rating": 3,
          "reviewer_email": "eleanor.collins@x.dummyjson.com",
          "reviewer_name": "Eleanor Collins"
        }
      ],
      "shipping_information": "Ships in 3-5 business days",
      "sku": "BEA-ESS-ESS-001",
      "stock": 99,
      "tags": [
        "beauty",
        "mascara"
      ],
      "thumbnail_url": "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp",
      "title": "Essence Mascara Lash Princess",
      "updated_at": "2026-05-23T11:27:41.868Z",
      "warranty_information": "1 week warranty",
      "weight": 4.0
    }
  ],
  "total_count": 194
}

List recipes

List DummyJSON's 50 fake recipes, each with ingredients, steps, times, servings, calories, cuisine and a rating. Search by name, keep a tag, a meal, a cuisine or a difficulty (they combine), sort by rating or time, and page through. No API key required.

Inputs

Search textsearchtext
Optional. Keep the recipes whose name contains this text, ignoring capitals.
Tagtagtext
Optional. Keep the recipes with this tag. Pick one or type it; a tag no recipe has is refused with the nearest one.
Mealmeal_typetext
Optional. Keep the recipes for this meal.One of: breakfast, lunch, dinner, snack, dessert, appetizer, side_dish (Side Dish), beverage.
Cuisinecuisinetext
Optional. Keep the recipes of this cuisine. Pick one or type it; a cuisine no recipe has is refused with the nearest one.
Difficultydifficultytext
Optional. Keep the recipes of this difficulty.One of: easy, medium.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: name, rating, review_count (Number of reviews), prep_time_minutes (Preparation time), cook_time_minutes (Cooking time), calories_per_serving (Calories per serving), servings.
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
recipeslist
The recipes in this page.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "recipes": [
    {
      "api_url": "https://dummyjson.com/recipes/1",
      "calories_per_serving": 300,
      "cook_time_minutes": 15,
      "cuisine": "Italian",
      "difficulty": "Easy",
      "id": 1,
      "image_url": "https://cdn.dummyjson.com/recipe-images/1.webp",
      "ingredients": [
        "Pizza dough",
        "Tomato sauce",
        "Fresh mozzarella cheese"
      ],
      "instructions": [
        "Preheat the oven to 475\u00b0F (245\u00b0C).",
        "Roll out the pizza dough and spread tomato sauce evenly."
      ],
      "meal_types": [
        "Dinner"
      ],
      "name": "Classic Margherita Pizza",
      "prep_time_minutes": 20,
      "rating": 4.6,
      "review_count": 98,
      "servings": 4,
      "tags": [
        "Pizza",
        "Italian"
      ],
      "total_time_minutes": 35,
      "user_id": 166
    }
  ],
  "total_count": 50
}

List to-dos

List DummyJSON's 254 fake to-dos, or one user's, and keep only the done or only the open ones. Stand-in tasks for a reminder or progress workflow. No API key required.

Inputs

Useruser_idnumber
Optional. Return only this user's records. Users are numbered 1 to 208; leave blank for everyone's.At least 1.
Completed?completiontext
Optional. Which to-dos to keep. Both by default.One of: any (Both, completed or not), completed (Completed only), outstanding (Not completed only). Default: any.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
todoslist
The to-dos in this page.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "todos": [
    {
      "api_url": "https://dummyjson.com/todos/1",
      "completed": false,
      "id": 1,
      "todo": "Do something nice for someone you care about",
      "user_id": 152
    }
  ],
  "total_count": 254
}

List users

List DummyJSON's 208 fake people, each a whole profile: name, age, email, phone, home address with coordinates, employer, university, bank card, and the username and password that log them in. Search by name, email or username, keep the people with a given role, city, department or the like, sort, and page through. No API key required.

Inputs

Search textsearchtext
Optional. Keep the people whose first name, last name, email or username contains this text, ignoring capitals.
Filter onfilter_fieldtext
Optional. A field to keep people by, together with the value it must have below.One of: role (Role (admin, moderator or user)), gender, age, eye_color (Eye color), hair_color (Hair color), blood_group (Blood group), city, state, university, department, job_title (Job title).
Filter valuefilter_valuetext
Optional. The value the chosen field must have, in full but ignoring capitals: admin, Brown, Phoenix, Engineering. An age is compared as a number.
Sort bysort_bytext
Optional. The field to sort on. Leave blank for id order.One of: first_name (First name), last_name (Last name), age, username, email, height, weight.
Sort ordersort_ordertext
Optional. Which way to sort, when a field to sort by is chosen. Ascending by default.One of: asc (Ascending (A to Z, lowest first)), desc (Descending (Z to A, highest first)). Default: asc.
Number of recordslimitnumber
Optional. How many records to return in this page, from 1 to 100. 30 by default, which is DummyJSON's own page size.From 1 to 100. Default: 30.
Skipoffsetnumber
Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more records matched than this page holds.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
total_countnumber
How many records matched in total, across every page.
userslist
The users in this page.
Example output
{
  "count": 1,
  "has_more": true,
  "next_offset": 30,
  "total_count": 208,
  "users": [
    {
      "address": {
        "city": "Phoenix",
        "country": "United States",
        "latitude": -77.16213,
        "longitude": -92.084824,
        "postal_code": "29112",
        "state": "Mississippi",
        "state_code": "MS",
        "street": "626 Main Street"
      },
      "age": 29,
      "api_url": "https://dummyjson.com/users/1",
      "bank": {
        "card_expire": "05/28",
        "card_number": "3693233511855044",
        "card_type": "Diners Club International",
        "currency": "GBP",
        "iban": "GB74MH2UZLR9TRPHYNU8F8"
      },
      "birth_date": "1996-05-30",
      "blood_group": "O-",
      "company": {
        "address": {
          "city": "San Francisco",
          "country": "United States",
          "latitude": 71.814525,
          "longitude": -161.150263,
          "postal_code": "37657",
          "state": "Wisconsin",
          "state_code": "WI",
          "street": "263 Tenth Street"
        },
        "department": "Engineering",
        "name": "Dooley, Kozey and Cronin",
        "title": "Sales Manager"
      },
      "crypto": {
        "coin": "Bitcoin",
        "network": "Ethereum (ERC20)",
        "wallet": "0xb9fc2fe63b2a6c003f1c324c3bfa53259162181a"
      },
      "ein": "977-175",
      "email": "emily.johnson@x.dummyjson.com",
      "eye_color": "Green",
      "first_name": "Emily",
      "full_name": "Emily Johnson",
      "gender": "female",
      "hair": {
        "color": "Brown",
        "type": "Curly"
      },
      "height": 193.24,
      "id": 1,
      "image_url": "https://dummyjson.com/icon/emilys/128",
      "ip_address": "42.48.100.32",
      "last_name": "Johnson",
      "mac_address": "47:fa:41:18:ec:eb",
      "maiden_name": "Smith",
      "password": "emilyspass",
      "phone": "+81 965-431-3024",
      "role": "admin",
      "ssn": "900-590-289",
      "university": "University of Wisconsin--Madison",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
      "username": "emilys",
      "weight": 63.16
    }
  ]
}

Log in as a test user

Log in as one of DummyJSON's fake users and get a real, signed access token (a JWT) and a refresh token, with the user's short profile. Every user's username and password are in their record; user 1 is emilys, password emilyspass. For testing a login flow or a step that needs a bearer token. No API key required.

Inputs

UsernameusernametextRequired
The user's username, from their record. Capitals do not matter.
PasswordpasswordtextRequired
The user's password, from their record. Capitals matter. It is fake, like every password DummyJSON holds.
Access token lifetime (minutes)expires_in_minutesnumber
Optional. How long the new access token works, in minutes: 60 by default, and up to 43,200 (30 days). The refresh token always lasts 30 days.From 1 to 43200. Default: 60.

Outputs

access_tokentext
A signed JWT. Send it as 'Authorization: Bearer <token>'; Get the logged-in user takes it as it is.
expires_attext
When the access token stops working, as an ISO 8601 timestamp read from the token itself.
expires_in_minutesnumber
How long the access token was asked to last.
refresh_expires_attext
When the refresh token stops working.
refresh_tokentext
What Refresh a login session trades for a new access token. It lasts 30 days.
userobject
The short profile a login answers with. Get the logged-in user has the whole one.
Example output
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJlbWlseXMifQ.4f1n",
  "expires_at": "2026-09-24T08:16:36Z",
  "expires_in_minutes": 60,
  "refresh_expires_at": "2026-10-24T07:16:36Z",
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJlbWlseXMifQ.9kq2",
  "user": {
    "api_url": "https://dummyjson.com/users/1",
    "email": "emily.johnson@x.dummyjson.com",
    "first_name": "Emily",
    "full_name": "Emily Johnson",
    "gender": "female",
    "id": 1,
    "image_url": "https://dummyjson.com/icon/emilys/128",
    "last_name": "Johnson",
    "username": "emilys"
  }
}

Make a placeholder image

Get the address of a placeholder image of any size up to 4000 pixels a side, with your own caption, colors, font and format (PNG, JPEG or WebP). The image is made and checked before the address comes back. For mockups, emails and test posts. No API key required.

Inputs

Width (pixels)widthnumber
Optional. From 1 to 4000. 150 by default.From 1 to 4000. Default: 150.
Height (pixels)heightnumber
Optional. From 1 to 4000. The same as the width by default, which makes a square.From 1 to 4000.
Captiontexttext
Optional. The text in the middle of the image. Its size, like 400 x 200, by default.
Background colorbackground_colortext
Optional. A hex color like 008080 or a color name like teal. Light grey (cccccc) by default.
Text colortext_colortext
Optional. A hex color or a color name. Black or white, whichever stands out on the background, by default.
Fontfonttext
Optional. The caption's font. Bitter by default.One of: bitter, cairo, comfortaa, cookie, dosis, gotham, lobster, marhey, pacifico, poppins, and 4 more.
Font size (pixels)font_sizenumber
Optional. From 1 to 500. By default the caption is sized to fit the width.From 1 to 500.
Formatimage_formattext
Optional. PNG by default.One of: png, jpg (JPEG), webp. Default: png.

Outputs

content_typetext
The type DummyJSON serves it as, e.g. image/png.
heightnumber
Height, in pixels.
image_formattext
png, jpg or webp.
texttext
The caption it shows.
urltext
The image's address, ready for an <img>, an email or a post. It works for anyone, for good.
widthnumber
Width, in pixels.
Example output
{
  "content_type": "image/png",
  "height": 200,
  "image_format": "png",
  "text": "Hello from Lodol",
  "url": "https://dummyjson.com/image/400x200?background=008080&text=Hello%20from%20Lodol",
  "width": 400
}

Make an identicon

Get the address of an identicon: a pattern drawn from any text, the same every time, for a default avatar. DummyJSON's users have these as their avatars, so a username's identicon matches that user's picture. No API key required.

Inputs

TextseedtextRequired
What the pattern is drawn from: a username, an email, anything. The same text always draws the same pattern.
Size (pixels)sizenumber
Optional. From 1 to 1000. 100 by default.From 1 to 1000. Default: 100.
Formatimage_formattext
Optional. PNG by default. DummyJSON labels an SVG image/svg rather than image/svg+xml, which some browsers and mail apps will not show.One of: png, svg. Default: png.

Outputs

content_typetext
The type DummyJSON serves it as.
image_formattext
png or svg.
seedtext
The text it was drawn from.
sizenumber
Its size, in pixels.
urltext
The identicon's address.
Example output
{
  "content_type": "image/png",
  "image_format": "png",
  "seed": "emilys",
  "size": 128,
  "url": "https://dummyjson.com/icon/emilys/128"
}

Refresh a login session

Trade a refresh token for a new access token and a new refresh token, the way an app keeps someone logged in. No API key required.

Inputs

Refresh tokenrefresh_tokentextRequired
The refresh token Log in as a test user, or an earlier refresh, returned.
Access token lifetime (minutes)expires_in_minutesnumber
Optional. How long the new access token works, in minutes: 60 by default, and up to 43,200 (30 days). The refresh token always lasts 30 days.From 1 to 43200. Default: 60.

Outputs

access_tokentext
A new signed JWT.
expires_attext
When the new access token stops working.
expires_in_minutesnumber
How long the access token was asked to last.
refresh_expires_attext
When the new refresh token stops working.
refresh_tokentext
A new refresh token, good for 30 days.
Example output
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJlbWlseXMifQ.4f1n",
  "expires_at": "2026-09-24T08:16:36Z",
  "expires_in_minutes": 60,
  "refresh_expires_at": "2026-10-24T07:16:36Z",
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJlbWlseXMifQ.9kq2"
}

Send a request to a test webhook

Send a request into a test webhook, the way another system would call it: any method, a JSON body and query parameters. For rehearsing a callback, or checking what the webhook records. No API key required.

Inputs

Test webhookwebhooktextRequired
The test webhook's address or its id, as Create a test webhook returned them, e.g. https://dummyjson.com/webhook/0f02351d. A webhook lasts 24 hours.
Methodmethodtext
Optional. The HTTP method to send. POST by default.One of: POST, PUT, PATCH, DELETE, GET. Default: POST.
Bodypayloadobject
Optional. The JSON body to send: an object or a list. A GET carries none.
Query parametersqueryobject
Optional. Parameters to add to the address: an object of names and values, or text like source=lodol&attempt=1.

Outputs

expires_attext
When the webhook stops recording.
methodtext
The method sent.
receivedtrue/false
True when the webhook recorded the request.
request_idtext
DummyJSON's id for the recorded request.
webhook_idtext
The webhook's id.
Example output
{
  "expires_at": "2026-09-25T06:54:49.956Z",
  "method": "POST",
  "received": true,
  "request_id": "098a1aeb-63e6-40d9-80ac-ee6c2b9750e5",
  "webhook_id": "0f02351d"
}

Simulate an HTTP status

Have DummyJSON answer with the status code of your choosing, 404, 429 or 503 say, and a message of your own. The answer comes back as a value, or an error status can fail the step, for rehearsing what a workflow does when a service it calls fails. No API key required.

Inputs

Status codestatus_codenumberRequired
The HTTP status to answer with. DummyJSON knows 63 of them, from 200 to 599.From 200 to 599.
Messagemessagetext
Optional. What the answer should say. The status's own name by default, like Not Found.
Fail the step on an error statusfail_on_errortrue/false
Optional. When on, a status of 400 or more fails the step the way a real failed call would. Off by default, so the status comes back as a value to branch on.Default: false.

Outputs

messagetext
What the answer said.
oktrue/false
True for a status under 400. The field to branch on.
reasontext
The status's name, e.g. Not Found.
response_bodyobject
The body as DummyJSON sent it: an RFC 7807 problem object for an error status. Null for 204 and 304, which carry none.
status_codenumber
The status DummyJSON answered with.
Example output
{
  "message": "Not Found",
  "ok": false,
  "reason": "Not Found",
  "response_body": {
    "detail": "Not Found",
    "message": "Not Found",
    "status": 404,
    "title": "Not Found",
    "type": "about:blank"
  },
  "status_code": 404
}

Update a product (simulated)

Send a change to a product and get back what a real update would answer, without anything being stored: the product with the fields you set applied. DummyJSON answers with the ten fields a product write can change, so tags, reviews and the like come back empty. No API key required.

Inputs

Productproduct_idnumberRequired
The product's id. DummyJSON publishes 194 products, numbered 1 to 194, and the numbering stays put, so an id from an earlier run still means the same product.At least 1.
Titletitletext
Optional. The product's new name. Leave blank to keep it.
Descriptiondescriptiontext
Optional. A paragraph about the product.
Pricepricenumber
Optional. The price.At least 0.
Discount (%)discount_percentagenumber
Optional. The discount on it, as a percentage from 0 to 100.From 0 to 100.
Stockstocknumber
Optional. How many are in stock, a whole number.At least 0.
Ratingratingnumber
Optional. The average rating, from 0 to 5.From 0 to 5.
Brandbrandtext
Optional. The brand.
Categorycategorytext
Optional. The category's slug. Pick one of DummyJSON's or type any; a simulated write takes a new one as readily as an existing one.
Thumbnail URLthumbnail_urltext
Optional. The address of a small picture of it, starting with https://.
Image URLsimage_urlslist
Optional. The addresses of its pictures: a list, or text with one address per line.

Outputs

productobject
One product from DummyJSON's catalogue.
simulatedtrue/false
Always true. DummyJSON fakes every write: nothing is stored, changed or removed, and reading the record back gives what was there before.
Example output
{
  "product": {
    "api_url": "https://dummyjson.com/products/1",
    "availability_status": null,
    "barcode": null,
    "brand": "Essence",
    "category": "beauty",
    "created_at": null,
    "description": "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects.",
    "dimensions": {
      "depth": null,
      "height": null,
      "width": null
    },
    "discount_percentage": 10.48,
    "discounted_price": 11.19,
    "id": 1,
    "image_urls": [
      "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"
    ],
    "minimum_order_quantity": null,
    "price": 12.5,
    "qr_code_url": null,
    "rating": 2.56,
    "return_policy": null,
    "reviews": [],
    "shipping_information": null,
    "sku": null,
    "stock": 99,
    "tags": [],
    "thumbnail_url": "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp",
    "title": "Essence Mascara Lash Princess",
    "updated_at": null,
    "warranty_information": null,
    "weight": null
  },
  "simulated": true
}

On this page