{
"type": "email",
"seed": 42,
"count": 3,
"items": [
{
"value": "user@[192.168.1.1]",
"category": "ip_literal_domain",
"breaks": "Domain-parsing code that assumes the part after '@' is always a hostname (never a bracketed IP literal) fails to extract or validate the domain correctly.",
"safe_to_display": true
},
{
"value": "[email protected]",
"category": "punycode_domain",
"breaks": "The domain is punycode-encoded (an internationalized domain name). Domain allowlist or comparison logic that does not decode punycode may fail to recognize this as equivalent to its Unicode form, or fail to catch a homograph-spoofed lookalike domain encoded the same way.",
"safe_to_display": true
},
{
"value": "[email protected]",
"category": "plus_addressing",
"breaks": "Deduplication logic treating '[email protected]' and '[email protected]' as different accounts misses that most mail providers deliver both to the same inbox (sub-addressing, RFC 5233).",
"safe_to_display": true
}
]
}
curl --location --request GET 'https://zylalabs.com/api/13372/unicode+internationalization+test+data+generator+api/28541/generate+edge+case+test+data?type=email&count=3&seed=42' --header 'Authorization: Bearer YOUR_API_KEY'
{
"seed": 7,
"count": 2,
"rows": [
{
"user_email": {
"value": "a234567890123456789012345678901234567890123456789012345678901234@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com",
"category": "max_length_254",
"breaks": "This address is near the RFC 5321 maximum length of 254 characters. Database columns sized below that maximum truncate or reject it even though it is technically valid.",
"safe_to_display": true
},
"signup_at": {
"value": "2026-11-01T01:30:00-04:00",
"category": "dst_fall_back_ambiguous",
"breaks": "In US Eastern time, this local clock time occurs twice during the fall-back transition. Without an explicit fold indicator, converting it to UTC is genuinely ambiguous, and libraries may silently pick the wrong occurrence.",
"safe_to_display": true
}
},
{
"user_email": {
"value": "[email protected]",
"category": "plus_addressing",
"breaks": "Deduplication logic treating '[email protected]' and '[email protected]' as different accounts misses that most mail providers deliver both to the same inbox (sub-addressing, RFC 5233).",
"safe_to_display": true
},
"signup_at": {
"value": "2026-01-01T24:00:00",
"category": "midnight_as_24_00",
"breaks": "ISO 8601 permits 24:00:00 to represent midnight at the end of a day, but many parsers only accept 00:00:00 through 23:59:59 and reject this equally valid representation.",
"safe_to_display": true
}
}
]
}
curl --location --request POST 'https://zylalabs.com/api/13372/unicode+internationalization+test+data+generator+api/28542/generate+multi-field+test+fixture+rows' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{
"fields": {
"user_email": "email",
"signup_at": "datetime"
},
"count": 2,
"seed": 7
}'
{
"types": [
{
"type": "date",
"category_group": "datetimes",
"description": "Calendar-boundary and invalid-looking-but-real dates.",
"categories": [
"earliest_iso_year",
"far_future_sentinel",
"invalid_day_of_month",
"leap_day",
"pre_epoch",
"year_2038"
],
"entry_count": 6
},
{
"type": "datetime",
"category_group": "datetimes",
"description": "Timestamps at DST transitions, unusual UTC offsets, and precision boundaries.",
"categories": [
"dst_fall_back_ambiguous",
"dst_spring_forward_gap",
"leap_second",
"midnight_as_24_00",
"quarter_hour_offset",
"sub_microsecond_precision"
],
"entry_count": 7
},
{
"type": "email",
"category_group": "emails",
"description": "RFC 5322-valid but unusual email addresses.",
"categories": [
"comment_syntax",
"ip_literal_domain",
"max_length_254",
"mixed_case",
"plus_addressing",
"punycode_domain",
"quoted_local_part"
],
"entry_count": 7
},
{
"type": "email_display_name",
"category_group": "emails",
"description": "Display-name strings that can corrupt naively-built SMTP headers.",
"categories": [
"angle_bracket_in_display_name",
"comma_in_display_name",
"crlf_header_injection",
"null_byte",
"very_long_display_name"
],
"entry_count": 5
},
{
"type": "emoji_sequence",
"category_group": "unicode",
"description": "Multi-codepoint emoji: ZWJ sequences, skin-tone modifiers, flag sequences, keycaps.",
"categories": [
"flag_sequence",
"keycap_sequence",
"skin_tone_modifier",
"zwj_family",
"zwj_generic_pair"
],
"entry_count": 5
},
{
"type": "float",
"category_group": "numbers",
"description": "Floating-point values that are not representable in JSON, or that expose IEEE 754 rounding.",
"categories": [
"denormal_minimum",
"ieee754_rounding",
"infinity",
"not_a_number",
"scientific_notation"
],
"entry_count": 5
},
{
"type": "integer",
"category_group": "numbers",
"description": "Integer values at 32-bit and 64-bit signed boundaries.",
"categories": [
"int32_max_plus_one",
"int32_min_minus_one",
"int64_max",
"leading_zeros",
"negative_zero"
],
"entry_count": 5
},
{
"type": "json_key",
"category_group": "structural",
"description": "Strings intended for use as a JSON object key, including reserved and unsafe names.",
"categories": [
"dollar_prefix",
"embedded_dot",
"empty_string_key",
"numeric_string_key",
"prototype_pollution_key",
"very_long_key",
"whitespace_only_key"
],
"entry_count": 8
},
{
"type": "json_value",
"category_group": "structural",
"description": "JSON values at precision, nesting, and null/empty/missing boundaries.",
"categories": [
"boolean_as_string",
"empty_array",
"empty_object",
"explicit_null",
"float64_precision_loss",
"leading_zero_numeric_string"
],
"entry_count": 6
},
{
"type": "organization_name",
"category_group": "names",
"description": "Company/brand names with punctuation, leading digits, or unusual casing.",
"categories": [
"accented_character",
"ampersand",
"apostrophe",
"intentional_lowercase_brand",
"leading_digit",
"trailing_punctuation",
"very_long_legal_name"
],
"entry_count": 7
},
{
"type": "path_or_filename",
"category_group": "identifiers",
"description": "Filenames and paths that are legal but mishandled by common filesystem or validation code.",
"categories": [
"bare_parent_reference",
"leading_dot_hidden_file",
"max_length_255",
"path_traversal",
"reserved_windows_device_name",
"trailing_dot",
"trailing_space",
"unicode_normalization_mismatch"
],
"entry_count": 8
},
{
"type": "person_name",
"category_group": "names",
"description": "Names that break naive validation, splitting, or templating logic -- includes canonical injection probes.",
"categories": [
"apostrophe",
"emoji_in_name",
"leading_trailing_whitespace",
"mononym",
"multi_word_particle_surname",
"reserved_word",
"right_to_left_script",
"shell_metacharacter_probe",
"single_character",
"sql_injection_probe",
"ssti_probe",
"very_long_name",
"xss_probe"
],
"entry_count": 14
},
{
"type": "phone_number",
"category_group": "addresses_phones",
"description": "Phone numbers at E.164 length boundaries and common formatting variants.",
"categories": [
"e164_maximum_length",
"e164_near_minimum_length",
"extension_suffix",
"human_formatted_punctuation",
"leading_zero_national_format",
"long_country_code"
],
"entry_count": 6
},
{
"type": "postal_code",
"category_group": "addresses_phones",
"description": "Postal codes from formats that break US-centric assumptions.",
"categories": [
"canada_alternating_pattern",
"country_without_postal_code",
"eircode",
"embedded_hyphen",
"leading_zero_us_zip",
"uk_postcode_variable_length"
],
"entry_count": 6
},
{
"type": "unicode_string",
"category_group": "unicode",
"description": "Strings with combining marks, bidi overrides, zero-width characters, and homoglyphs.",
"categories": [
"astral_plane",
"bidi_override",
"byte_order_mark",
"combining_diacritic",
"combining_mark_stack",
"homoglyph",
"mixed_script",
"variation_selector",
"zero_width_space"
],
"entry_count": 9
},
{
"type": "uuid",
"category_group": "identifiers",
"description": "Syntactically valid UUIDs at sentinel and formatting boundaries.",
"categories": [
"invalid_version_nibble",
"max_uuid",
"nil_uuid",
"unhyphenated_form",
"uppercase_hex"
],
"entry_count": 5
}
],
"formats": [
"csv",
"json",
"text"
],
"max_count": 500
}
curl --location --request GET 'https://zylalabs.com/api/13372/unicode+internationalization+test+data+generator+api/28543/list+available+types+and+categories' --header 'Authorization: Bearer YOUR_API_KEY'
Após se cadastrar, cada desenvolvedor recebe uma chave de acesso à API pessoal, uma combinação única de letras e dígitos para acessar nosso endpoint de API. Para autenticar com a Unicode Internationalization Test Data Generator API basta incluir seu token Bearer no cabeçalho Authorization.
| Cabeçalho | Descrição |
|---|---|
Authorization
|
Obrigatório
Deve ser Bearer access_key. Veja "Sua chave de acesso à API" acima quando você estiver inscrito.
|
Sem compromisso de longo prazo. Faça upgrade, downgrade ou cancele a qualquer momento. O teste gratuito inclui até 50 requisições.
(Economize 2 meses com cobrança anual 🎉)
Empresas líderes confiam em nós
Edge case test data for QA and fuzz testing: Unicode, injection probes, boundary dates, float precision. 16 types, reproducible seeds, and every value explains what it breaks.
Dados de teste de casos extremos são entradas que são tecnicamente válidas, mas estão nos limites onde o software costuma falhar—datas de dia bissexto, inteiros nos limites de 32 bits, nomes contendo apóstrofos, emojis feitos de múltiplos pontos de código e nomes de arquivos reservados pelo Windows. Geradores de dados falsos comuns produzem dados plausíveis; dados de casos extremos são os que realmente encontram bugs
Faker Mockaroo e ferramentas semelhantes otimizam para dados que parecem realistas nomes endereços e datas plausíveis Esta API faz o oposto cada valor é escolhido porque quebra algo Ela também informa o que quebra para que um teste falho seja diagnosticável imediatamente em vez de ser um mistério
Uma explicação em inglês simples do modo de falha específico que o valor foi projetado para expor - por exemplo, que 0.30000000000000004 é o resultado real de 0.1 + 0.2 na aritmética IEEE 754 e falhará em uma verificação de igualdade contra 0.3. Isso transforma uma string bruta em um caso de teste documentado
Sim. Passe uma semente e os mesmos valores são retornados sempre, permanentemente, nos endpoints /v1 - seguro para fixar em fixtures de CI. Omitir a semente e uma aleatória é gerada e retornada na resposta para que você possa reproduzir essa execução exata mais tarde
Dezesseis tipos em oito grupos: strings Unicode e sequências de emoji, nomes de pessoas e organizações, e-mails e nomes de exibição de e-mail, datas e datetimes, inteiros e floats, UUIDs e caminhos de arquivos, códigos postais e números de telefone, e chaves e valores JSON
Sim POST /v1/generate aceita um objeto fields mapeando seus próprios nomes de campo para tipos e retorna até 500 linhas completas até 20 campos cada prontas para semear um banco de dados ou um fixture de CI
Inclui sondas de detecção canônicas e inofensivas do tipo publicadas em guias padrão de testes de segurança - uma tautologia SQL uma sonda básica XSS uma string de travessia de caminho Estas são para testar seu próprio manuseio de entrada Não há exploits funcionais payloads de shell ou cadeias de ataque específicas de CVE
Ele distingue dois riscos diferentes "Falso" significa que o valor não é seguro para ser renderizado como bruto em uma interface de usuário uma sobreposição bidirecional que pode enganar visualmente um nome de arquivo por exemplo "Verdadeiro" significa que é seguro exibir como texto inerte mesmo que ainda possa quebrar o código de backend que o processa Filtre-o se você mostrar valores gerados aos usuários
Sim — format=csv, além de format=text para um valor bruto por linha. Por padrão, as células CSV que acionariam a execução de fórmulas de planilhas são neutralizadas. Defina csv_escape=false se você estiver testando deliberadamente seu próprio manuseio de importação CSV
Não A API é sem estado sem banco de dados Nada que você solicitar e nada gerado para você é escrito em logs apenas metadados de solicitação como endpoint código de status e qual tipo foi solicitado