Seed Data Generator API

API ID 13373

QA test fixtures and CI seed data with reproducible seeds, so pinned test runs return identical rows every time. 16 field types, each value explaining what it breaks.

API 文档

端点

请求
生成针对单一字段类型的边缘案例测试数据——能够破坏真实代码的非法但合法的输入值。返回带有元数据的值,使其可操作:该值所属的类别以及对它破坏了何种代码的通俗解释 从 8 个组中选择 16 种类型:unicode_string、emoji_sequence、person_name、organization_name、email、email_display_name、date、datetime、integer、float、UUID、path_or_filename、postal_code、phone_number、JSON key 和 JSON value 您获得的示例:打破天真的日期算术的闰年日期、溢出 32 位 time_t 的 2038 年时间戳、来自 IEEE 754 四舍五入的 0.30000000000000004、作为一个单一字形但七个代码点的 ZWJ 表情符号组合、用于域名欺骗的西里尔同形异义词、像 CON 这样的保留 Windows 文件名以及 RFC 5322 有效的电子邮件地址,这些地址被天真的正则表达式验证器错误拒绝 完全确定性:传入种子,每次都会返回完全相同的值,因此结果可以固定在 CI 夹具中。省略种子时,将为您生成一个,并在响应中返回,以便稍后固定 以 JSON(默认)、CSV 或纯文本格式输出。通过类别参数过滤到单一类别。通过目录端点发现每种类型和类别
Endpoint ID: 28547
GET https://zylalabs.com/api/13373/seed+data+generator+api/28547/generate+edge+case+test+data
输入参数

生成边界情况测试数据 — 端点功能

对象 描述
type 必需 Field type to generate. One of the 16 types — call the Catalog endpoint for the full list.
count 可选 Number of values to return, 1–500. Default 50.
seed 可选 Integer seed for reproducible output. Omit for a random seed, which is returned in the response.
category 可选 Restrict output to one category within the type, e.g. leap_day or homoglyph.
format 可选 json (default), csv, or text.
csv_escape 可选 Only for format=csv. true (default) neutralises spreadsheet formula injection; false returns raw values.

剩余免费测试请求:3 / 3。


输入参数

type
count
seed
category
format
csv_escape
API 示例响应
JSON
{
    "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/13373/seed+data+generator+api/28547/generate+edge+case+test+data?type=email&count=3&seed=42' --header 'Authorization: Bearer YOUR_API_KEY' 


    
请求
生成一个完整的测试夹具,只需一次调用:定义您自己的字段名称,将每个字段映射到一种类型,并获取准备好用于填充数据库、CI夹具或QA数据集的行 发送一个字段对象,将您喜欢的任何字段名称映射到16种支持的类型之一,例如{"user_email": "email", "signup_at": "datetime", "display_name": "person_name"}。每行在每个字段中组合一个敌对值,因此一次调用同时测试许多失败模式 每次调用最多可有20个字段和500行。两个字段共享相同类型时接收的值是独立洗牌的,而不是相同的副本,因此同一行中的billing_email和personal_email确实是不同的地址 确定性:相同的种子总是返回相同的行。省略种子,将生成并返回一个,以便可以完全重现运行 输出为JSON(默认)或CSV。CSV以您声明字段的顺序返回每个字段名称的一列—可以直接粘贴到电子表格或填充脚本中
Endpoint ID: 28548
POST https://zylalabs.com/api/13373/seed+data+generator+api/28548/generate+multi-field+test+fixture+rows
输入参数

生成多领域测试夹具行 — 端点功能

对象 描述
请求体 必需 Json

剩余免费测试请求:3 / 3。


输入参数

API 示例响应
JSON
{
    "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/13373/seed+data+generator+api/28548/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
}'

    
请求
返回此 API 可以生成的每个字段类型,以及其类别组、描述、可用于过滤的类别标签列表,以及每个池中存在的不同值的数量。 在编程集成时首先调用此接口 - 包括从 AI 代理或编码助手 - 以发现完整的能力集,而无需硬编码类型名称或阅读文档。 还返回支持的输出格式和每个请求的最大行数
Endpoint ID: 28549
GET https://zylalabs.com/api/13373/seed+data+generator+api/28549/list+available+types+and+categories
输入参数

剩余免费测试请求:3 / 3。

此端点不需要任何输入参数。

API 示例响应
JSON
{
    "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/13373/seed+data+generator+api/28549/list+available+types+and+categories' --header 'Authorization: Bearer YOUR_API_KEY' 


    

API 访问密钥和身份验证

注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 Seed Data Generator API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。

标头
标头 描述
授权 必需 应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。

无长期承诺。随时升级、降级或取消。 免费试用包括最多 50 个请求。

(年度计费可节省 2 个月 🎉)

🚀 企业版套餐

起价
$ 10,000/年


  • 自定义数量
  • 自定义速率限制
  • 专业客户支持
  • 实时 API 监控

概览

QA test fixtures and CI seed data with reproducible seeds, so pinned test runs return identical rows every time. 16 field types, each value explaining what it breaks.

Seed Data Generator API FAQs

边界情况测试数据是技术上有效但处于软件常见故障边界的输入——闰年日期、32位限制的整数、包含撇号的名称、由多个代码点组成的表情符号以及Windows保留的文件名。普通的假数据生成器产生看似合理的数据;边界情况数据才是真正发现错误的数据。

Faker Mockaroo 和类似工具优化看起来真实的数据 可信的姓名 地址 和日期 这个API做的是相反的 每个值都是因为它破坏了某些东西而被选择的 它还告诉你它破坏了什么 所以失败的测试是可以立即诊断的 而不是一个谜

对价值旨在揭示的特定失败模式的简单英文解释——例如,在IEEE 754算术中0.1 + 0.2的真实结果是0.30000000000000004,并且将无法通过与0.3的相等性检查。它将一个原始字符串转变为一个有据可依的测试用例

是的 传递一个种子后每次返回相同的值 永久保存 在/v1端点上 可以安全地固定到CI固定装置中 省略种子时会生成一个随机种子并在响应中返回以便您可以稍后重现该确切的运行

十六种类型分成八个组:Unicode字符串和表情符号序列、个人和组织名称、电子邮件和电子邮件显示名称、日期和日期时间、整数和浮点数、UUID和文件路径、邮政编码和电话号码,以及JSON键和值

是的 POST /v1/generate 接受一个字段对象将你自己的字段名称映射到类型,并返回多达 500 行完整数据 每行最多 20 个字段 准备用于填充数据库或 CI 夹具

它包括经典的无害检测探针,这种探针在标准安全测试指南中有发布——一个SQL同义反复,一个基本的XSS探针,一个路径遍历字符串。这些是用来测试你自己输入处理的。没有有效的利用工具、shell有效负载或CVE特定攻击链

它区分了两种不同的风险。“假”意味着在用户界面中以原始形式呈现该值是不安全的——例如,一个双向覆盖可能会在视觉上伪装一个文件名。“真”意味着作为惰性文本显示是安全的,即使它仍然可能破坏处理它的后端代码。如果您向用户显示生成的值,请对此进行过滤

是的 — 格式=csv,同时格式=文本,每行一个原始值。默认情况下,将中和会触发电子表格公式执行的CSV单元格。如果您正在有意测试自己的CSV导入处理,请设置csv_escape=false

不 这个 API 是无状态的 没有数据库 您请求的内容以及为您生成的内容都不会被写入日志 只有请求元数据 如端点 状态码 以及请求的类型

一般常见问题

Zyla API Hub 就像一个大型 API 商店,您可以在一个地方找到数千个 API。我们还为所有 API 提供专门支持和实时监控。注册后,您可以选择要使用的 API。请记住,每个 API 都需要自己的订阅。但如果您订阅多个 API,您将为所有这些 API 使用相同的密钥,使事情变得更简单。
价格以 USD(美元)、EUR(欧元)、CAD(加元)、AUD(澳元)和 GBP(英镑)列出。我们接受所有主要的借记卡和信用卡。我们的支付系统使用最新的安全技术,由 Stripe 提供支持,Stripe 是世界上最可靠的支付公司之一。如果您在使用卡片付款时遇到任何问题,请通过 [email protected]

此外,如果您已经以这些货币中的任何一种(USD、EUR、CAD、AUD、GBP)拥有有效订阅,该货币将保留用于后续订阅。只要您没有任何有效订阅,您可以随时更改货币。
定价页面上显示的本地货币基于您 IP 地址的国家/地区,仅供参考。实际价格以 USD(美元)为单位。当您付款时,即使您在我们的网站上看到以本地货币显示的等值金额,您的卡片对账单上也会以美元显示费用。这意味着您不能直接使用本地货币付款。
有时,银行可能会因其欺诈保护设置而拒绝收费。我们建议您首先联系您的银行,检查他们是否阻止了我们的收费。此外,您可以访问账单门户并更改关联的卡片以进行付款。如果这些方法不起作用并且您需要进一步帮助,请通过 [email protected]
价格由月度或年度订阅决定,具体取决于所选计划。
API 调用根据成功请求从您的计划中扣除。每个计划都包含您每月可以进行的特定数量的调用。只有成功的调用(由状态 200 响应指示)才会计入您的总数。这确保失败或不完整的请求不会影响您的月度配额。
Zyla API Hub 采用月度订阅系统。您的计费周期将从您购买付费计划的那一天开始,并在下个月的同一日期续订。因此,如果您想避免未来的费用,请提前取消订阅。
要升级您当前的订阅计划,只需转到 API 的定价页面并选择您要升级到的计划。升级将立即生效,让您立即享受新计划的功能。请注意,您之前计划中的任何剩余调用都不会转移到新计划,因此在升级时请注意这一点。您将被收取新计划的全部金额。
要检查您本月剩余多少 API 调用,请参考响应标头中的 "X-Zyla-API-Calls-Monthly-Remaining" 字段。例如,如果您的计划允许每月 1,000 个请求,而您已使用 100 个,则响应标头中的此字段将显示 900 个剩余调用。
要查看您的计划允许的最大 API 请求数,请检查 "X-Zyla-RateLimit-Limit" 响应标头。例如,如果您的计划包括每月 1,000 个请求,此标头将显示 1,000。
"X-Zyla-RateLimit-Reset" 标头显示您的速率限制重置之前的秒数。这告诉您何时您的请求计数将重新开始。例如,如果它显示 3,600,则意味着还有 3,600 秒直到限制重置。
是的,您可以随时通过访问您的账户并在账单页面上选择取消选项来取消您的计划。请注意,升级、降级和取消会立即生效。此外,取消后,您将不再有权访问该服务,即使您的配额中还有剩余调用。
为了让您有机会在没有任何承诺的情况下体验我们的 API,我们提供 7 天免费试用,允许您免费进行最多 50 次 API 调用。此试用只能使用一次,因此我们建议将其应用于您最感兴趣的 API。虽然我们的大多数 API 都提供免费试用,但有些可能不提供。试用在 7 天后或您进行了 50 次请求后结束,以先发生者为准。如果您在试用期间达到 50 次请求限制,您需要"开始您的付费计划"以继续发出请求。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。或者,如果您在第 7 天之前不取消订阅,您的免费试用将结束,您的计划将自动计费,授予您访问计划中指定的所有 API 调用的权限。请记住这一点以避免不必要的费用。
7 天后,您将被收取试用期间订阅的计划的全额费用。因此,在试用期结束前取消很重要。因忘记及时取消而提出的退款请求不被接受。
当您订阅 API 免费试用时,您可以进行最多 50 次 API 调用。如果您希望超出此限制进行额外的 API 调用,API 将提示您执行"开始您的付费计划"。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。
付款订单在每月 20 日至 30 日之间处理。如果您在 20 日之前提交请求,您的付款将在此时间范围内处理。
您可以通过我们的聊天渠道联系我们以获得即时帮助。我们始终在线,时间为上午 8 点至下午 5 点(EST)。如果您在该时间之后联系我们,我们将尽快回复您。此外,您可以通过 [email protected]

相关 API