Skip to main content

Generate Fake Data For Mock API Response

Imagine that you want to prototype an app with realistic-looking data, but the backend APIs are not there yet. That's where Beeceptor comes in. With Beeceptor, you have access to a powerful template engine that uses Handlebars' syntax. You can easily generate fake data that looks and feels realistic, without the hassle of dealing with messy code.

Fake data helpers

Beeceptor uses popular Faker's comparable syntax. It becomes a breeze to generate small/large data using a mocked response template. You can use pretty much all the attributes from Faker namespaces.

Enabling faker template

By default, template engine is off. You need to explicitly mark a rule to enable usage of Handlebars template to generate fake data.

enable-faker-template-in-beeceptor

The faker Syntax

Beeceptor defines faker as a Handlebars template helper.

Faker attributes are grouped into namespaces. E.g. datatype, address, company, etc. To generate faked value for given attribute, prefix the attribute with its namespace. Refer below examples and values generated.

Syntax: {{faker 'namespace.attribute'}}

Sample SyntaxGenerated value
{{faker 'random.uuid'}}52375efe-cf9e-44f5-adb2-65c1631bfcea
{{faker 'address.country'}}Spain
{{faker 'finance.currencyCode'}}USD
{{faker 'hacker.phrase'}}The AI hard drive is down, index the 1080p panel so we can override the COM firewall!
{{faker 'lorem.paragraph'}}Omnis perspiciatis provident error. Est possimus voluptates. Illo nam et excepturi blanditiis quae rerum et amet accusantium. Mollitia temporibus temporibus ea fugiat quia in possimus et. Ut provident est debitis perspiciatis ipsa non mollitia magnam quis. Et quod dolorum et non

Refer the section below to view complete list of supported attributes.

Example using mocking template

You can mix and match any of the Faker attributes to build a rich response. Consider the following example for GET /users API or model.

Mocking Template: A mocking template to build user objects.

[
{
"id" : "{{faker 'random.uuid'}}",
"name": "{{faker 'name.firstName'}} {{faker 'name.lastName'}}" ,
"address": "{{faker 'address.streetAddress'}}",
"country": "{{faker 'address.country'}}",
"phone": "{{faker 'phone.phoneNumber'}}",
"profileImage": "{{faker 'image.image'}}",
},
{
"id" : "{{faker 'random.uuid'}}",
"name": "{{faker 'name.firstName'}} {{faker 'name.lastName'}}" ,
"address": "{{faker 'address.streetAddress'}}",
"country": "{{faker 'address.country'}}",
"phone": "{{faker 'phone.phoneNumber'}}",
"profileImage": "{{faker 'image.image'}}",
}
]

Response: This will generate below output:

[
{
"id" : "cbe55c5d-36fa-4f05-9557-fcd4966187f4",
"name": "Dillon Davis" ,
"address": "613 Dickinson Run",
"country": "Tanzania",
"phone": "886.282.3509 x0831",
"profileImage": "http://placeimg.com/640/480/business",
},
{
"id" : "36df51a8-8d4c-4d70-8818-d77b9f6bf215",
"name": "Dannie Hackett" ,
"address": "8449 Brenna Alley",
"country": "Central African Republic",
"phone": "(786) 895-4923",
"profileImage": "http://placeimg.com/640/480/business",
}
]

Advance use-cases - Parameterized examples

You can pass arguments to the faker syntax and generate even more specific and tailored fake data. Here are a few examples:

  1. Generate a date between given two dates: {{faker 'date.between' '2022-05-01' '2022-05-15'}}
  2. Generate a past date in the last 5 years: {{faker 'date.past' '5'}}
  3. Generate a female first name: {{faker 'name.firstName' 'female'}}
  4. Generate a 10 digit alphanumeric {{faker 'random.alphaNumeric' '10' }}
  5. Generate ten lines of lorem {{faker 'lorem.lines' '10' }}
  6. Generate a paragraph {{faker 'lorem.paragraph' }}, or a paragraph with five sentences {{faker 'lorem.paragraph' '5' }}
  7. Generate a file name {{faker 'system.fileName'}}
  8. Generates a random ethereum Address {{faker 'finance.ethereumAddress'}}
  9. Generate a short product name {{faker 'commerce.productName'}}
  10. Generate a random password {{faker 'internet.password'}}
  11. Generate a random number between {{faker 'mersenne.rand' '500' '1000'}}
  12. Generate a random domain name {{faker 'internet.domainName'}}

You can checkout Fake JSON API as a reference when building the template. This is a pre-built mock server provided by Beeceptor for most common use-cases.

Supported attributes

Datatype: To generate random datatype values, string, uuid, etc.

datatype.number datatype.float datatype.uuid datatype.boolean datatype.string datatype.hexaDecimal

Random: To generate some random combinations.

random.word random.words random.image random.locale random.alphaNumeric

Lorem: Some blah blah... text and paragraphs.

lorem.word lorem.words lorem.sentence lorem.slug lorem.sentences lorem.paragraph lorem.paragraphs lorem.text lorem.lines

Person Names: Generate first/last name, titles, job type, etc.

name.firstName name.lastName name.findName name.jobTitle name.prefix name.suffix name.title name.jobDescriptor name.jobArea name.jobType

Address

address.zipCode address.city address.cityPrefix address.citySuffix address.streetName address.streetAddress address.streetSuffix address.streetPrefix address.secondaryAddress address.county address.country address.countryCode address.state address.stateAbbr address.latitude address.longitude

Phone Numbers:

phone.phoneNumber phone.phoneNumberFormat phone.phoneFormats

E-commerce: Some realistic product names.

commerce.color commerce.department commerce.productName commerce.price commerce.productAdjective commerce.productMaterial commerce.product

Company:

company.suffixes company.companyName company.companySuffix company.catchPhrase company.bs company.catchPhraseAdjective company.catchPhraseDescriptor company.catchPhraseNoun company.bsAdjective company.bsBuzz company.bsNoun

Finance:

finance.account finance.accountName finance.mask finance.amount finance.transactionType finance.currencyCode finance.currencyName finance.currencySymbol finance.bitcoinAddress finance.iban finance.bic

Date:

date.past date.future date.between date.recent date.month date.weekday

Online Forum:

hacker.abbreviation hacker.adjective hacker.noun hacker.verb hacker.ingverb hacker.phrase

Images: Generates links to images for the following categories.

E.g. The image.animals syntax will generate a link to http://placeimg.com/640/480/animals. The image.image syntax will generate a link to a random image for any of the below categories.

image.image image.avatar image.imageUrl image.abstract image.animals image.business image.cats image.city image.food image.nightlife image.fashion image.people image.nature image.sports image.technics image.transport image.dataUri

Internet:

internet.avatar internet.email internet.exampleEmail internet.userName internet.protocol internet.url internet.domainName internet.domainSuffix internet.domainWord internet.ip internet.ipv6 internet.userAgent internet.color internet.mac internet.password

Database:

database.column database.type database.collation database.engine

Git:

git.branch git.commitEntry git.commitMessage git.commitSha git.shortSha

System:

system.fileName system.commonFileName system.mimeType system.commonFileType system.commonFileExt system.fileType system.fileExt system.directoryPath system.filePath system.semver

Troubleshooting

When there are syntax errors in defining templates, Beeceptor tries to recover safely and attempts to generate the mocked response. However, there can be unrecoverable errors.

  1. If the faker syntax has any issue, you shall get Faker Attribute Error: Missing or wrong syntax in the response.
  2. If there is an unrecoverable error, a response with 561 HTTP status code is returned. In such cases, you should review the template's syntax and correct it.