@apifreaks/openapi-specs 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -27,7 +27,6 @@ __export(index_exports, {
27
27
  SPEC_SLUGS: () => SPEC_SLUGS,
28
28
  SpecCategory: () => SpecCategory,
29
29
  SpecSlug: () => SpecSlug,
30
- getSpec: () => getSpec,
31
30
  getSpecJson: () => getSpecJson,
32
31
  getSpecYaml: () => getSpecYaml,
33
32
  getSpecsByCategory: () => getSpecsByCategory
@@ -7029,6 +7028,1123 @@ var bulk_domain_checker_default = {
7029
7028
  ]
7030
7029
  };
7031
7030
 
7031
+ // specs/domain/domain-reputation.json
7032
+ var domain_reputation_default = {
7033
+ openapi: "3.1.1",
7034
+ info: {
7035
+ title: "Domain Reputation API - Real-Time Risk Verdict, Trust Score, DGA Detection, and Threat Intelligence for Any Domain",
7036
+ version: "1.0.0",
7037
+ description: "Assess any domain and get a synthesized risk verdict, a weighted trust score, DGA detection, threat intelligence matches, and a full email deliverability check in one call. Every score carries the evidence behind it, and partial data is called out in errors rather than silently dropped. Built for fraud screening, phishing triage, email vetting, brand protection, and threat intel enrichment.",
7038
+ contact: {
7039
+ name: "APIFreaks Support",
7040
+ url: "https://apifreaks.com/contact",
7041
+ email: "support@apifreaks.com"
7042
+ }
7043
+ },
7044
+ servers: [
7045
+ {
7046
+ url: "https://api.apifreaks.com/v1.0",
7047
+ description: "Domain Reputation API Server"
7048
+ }
7049
+ ],
7050
+ paths: {
7051
+ "/domain/reputation": {
7052
+ get: {
7053
+ tags: ["Domain APIs"],
7054
+ summary: "Get a real-time risk verdict, trust score, and threat intelligence for any domain.",
7055
+ description: "The Domain Reputation API assesses a domain and returns a risk verdict, trust score, DGA detection results, threat intelligence matches, email deliverability analysis, and evidence summary. Partial data is flagged in the errors array rather than silently dropped.",
7056
+ parameters: [
7057
+ {
7058
+ name: "format",
7059
+ in: "query",
7060
+ required: false,
7061
+ schema: {
7062
+ type: "string",
7063
+ enum: ["json", "xml"],
7064
+ default: "json"
7065
+ },
7066
+ description: "Format of the response."
7067
+ },
7068
+ {
7069
+ name: "domainName",
7070
+ in: "query",
7071
+ required: true,
7072
+ schema: {
7073
+ type: "string"
7074
+ },
7075
+ description: "The domain name to assess (e.g. example.com). Must contain at least one dot and be at most 253 characters. Automatically lowercased."
7076
+ }
7077
+ ],
7078
+ responses: {
7079
+ "200": {
7080
+ description: "Success",
7081
+ content: {
7082
+ "application/json": {
7083
+ schema: {
7084
+ $ref: "#/components/schemas/DomainReputationResponse"
7085
+ },
7086
+ examples: {
7087
+ success: {
7088
+ summary: "Safe domain (apple.com)",
7089
+ value: {
7090
+ input: {
7091
+ domain: "apple.com"
7092
+ },
7093
+ assessed_at: "2026-09-08T08:36:23.820181075Z",
7094
+ version: "1.0.0",
7095
+ processing_time_ms: 1739,
7096
+ risk_category: {
7097
+ verdict: "safe",
7098
+ confidence: 0.8,
7099
+ primary_threat: null,
7100
+ severity: "none",
7101
+ threat_types: [],
7102
+ sources: [],
7103
+ pivot_matches: []
7104
+ },
7105
+ dga_score: {
7106
+ score: 0,
7107
+ is_dga: false,
7108
+ model: "deterministic_features_v1",
7109
+ features: {
7110
+ domain_length: 5,
7111
+ vowel_consonant_ratio: 0.6666666666666666,
7112
+ ngram_perplexity: -8.83,
7113
+ shannon_entropy: 1.9219280948873623,
7114
+ digit_letter_ratio: 0,
7115
+ consonant_streak_max: 3,
7116
+ tld_in_known_dga_set: false
7117
+ },
7118
+ interpretation: "human_readable"
7119
+ },
7120
+ trust_signals: {
7121
+ trust_score: 72,
7122
+ trust_band: "high",
7123
+ signals: {
7124
+ positive: [
7125
+ {
7126
+ code: "spf_configured",
7127
+ weight: 5,
7128
+ polarity: "positive",
7129
+ category: "email_security",
7130
+ evidence: "SPF record found",
7131
+ confidence: 1
7132
+ },
7133
+ {
7134
+ code: "dmarc_present",
7135
+ weight: 5,
7136
+ polarity: "positive",
7137
+ category: "email_security",
7138
+ evidence: "DMARC record present",
7139
+ confidence: 1
7140
+ },
7141
+ {
7142
+ code: "established_domain",
7143
+ weight: 10,
7144
+ polarity: "positive",
7145
+ category: "domain_age",
7146
+ evidence: "Domain age > 2 years",
7147
+ confidence: 1
7148
+ },
7149
+ {
7150
+ code: "mature_domain",
7151
+ weight: 5,
7152
+ polarity: "positive",
7153
+ category: "domain_age",
7154
+ evidence: "Domain age > 5 years",
7155
+ confidence: 1
7156
+ },
7157
+ {
7158
+ code: "paid_ssl",
7159
+ weight: 5,
7160
+ polarity: "positive",
7161
+ category: "ssl_certificate",
7162
+ evidence: "Uses paid SSL certificate",
7163
+ confidence: 0.9
7164
+ },
7165
+ {
7166
+ code: "valid_ssl",
7167
+ weight: 3,
7168
+ polarity: "positive",
7169
+ category: "ssl_certificate",
7170
+ evidence: "Valid SSL certificate",
7171
+ confidence: 1
7172
+ }
7173
+ ],
7174
+ negative: [
7175
+ {
7176
+ code: "privacy_whois",
7177
+ weight: 1,
7178
+ polarity: "negative",
7179
+ category: "whois_privacy",
7180
+ evidence: "WHOIS information is privacy-protected",
7181
+ confidence: 0.9
7182
+ },
7183
+ {
7184
+ code: "external_redirect",
7185
+ weight: 10,
7186
+ polarity: "negative",
7187
+ category: "content_analysis",
7188
+ evidence: "Site redirects visitors to an external domain",
7189
+ confidence: 0.8
7190
+ }
7191
+ ],
7192
+ neutral: []
7193
+ },
7194
+ indicators: {
7195
+ is_newly_registered: false,
7196
+ uses_free_extension: false,
7197
+ uses_free_ssl: false,
7198
+ has_privacy_whois: true,
7199
+ ssl_age_days: 26,
7200
+ has_dmarc: true,
7201
+ has_spf: true,
7202
+ redirects_externally: true,
7203
+ javascript_obfuscated: false,
7204
+ domain_age_days: 14446,
7205
+ registrar: "NOM-IQ Ltd dba Com Laude"
7206
+ }
7207
+ },
7208
+ email_deliverability: {
7209
+ score: 95,
7210
+ grade: "excellent",
7211
+ can_receive_email: true,
7212
+ authentication: {
7213
+ spf: {
7214
+ present: true,
7215
+ policy: "~all",
7216
+ record: "v=spf1 include:_spf.apple.com include:_spf-txn.apple.com ~all"
7217
+ },
7218
+ dkim: {
7219
+ found: true,
7220
+ selectors_found: ["selector1", "selector2"],
7221
+ providers_detected: [],
7222
+ note: "Only common selectors are probed; a domain may use a custom selector"
7223
+ },
7224
+ dmarc: {
7225
+ present: true,
7226
+ policy: "quarantine",
7227
+ reporting_configured: true
7228
+ }
7229
+ },
7230
+ infrastructure: {
7231
+ mx_count: 6,
7232
+ mx_records: [
7233
+ "mx-in-ma.apple.com.",
7234
+ "mx-in.g.apple.com.",
7235
+ "mx-in-rn.apple.com.",
7236
+ "mx-in-sg.apple.com.",
7237
+ "mx-in-hfd.apple.com.",
7238
+ "mx-in-vib.apple.com."
7239
+ ],
7240
+ mx_provider: "self_hosted",
7241
+ null_mx: false
7242
+ },
7243
+ reputation: {
7244
+ spam_blacklisted: false,
7245
+ newly_registered: false,
7246
+ domain_age_days: 14446
7247
+ },
7248
+ issues: [
7249
+ {
7250
+ code: "spf_softfail",
7251
+ severity: "low",
7252
+ message: "The SPF policy '~all' only soft-fails unauthorized senders",
7253
+ recommendation: "Move to '-all' once all legitimate sending sources are listed"
7254
+ }
7255
+ ]
7256
+ },
7257
+ intelligence: {
7258
+ ioc_type: "domain",
7259
+ ioc_value: "apple.com",
7260
+ related_iocs: [
7261
+ {
7262
+ type: "ipv4",
7263
+ value: "17.253.144.10",
7264
+ confidence: 0.9
7265
+ },
7266
+ {
7267
+ type: "ipv6",
7268
+ value: "2620:149:af0:0:0:0:0:10",
7269
+ confidence: 0.9
7270
+ }
7271
+ ],
7272
+ feed_tags: [
7273
+ "verdict:safe",
7274
+ "severity:none",
7275
+ "ns:d.ns.apple.com.",
7276
+ "ns:b.ns.apple.com.",
7277
+ "ns:c.ns.apple.com.",
7278
+ "ns:a.ns.apple.com.",
7279
+ "mx:mx-in-ma.apple.com.",
7280
+ "mx:mx-in.g.apple.com.",
7281
+ "mx:mx-in-rn.apple.com.",
7282
+ "mx:mx-in-sg.apple.com.",
7283
+ "mx:mx-in-hfd.apple.com.",
7284
+ "mx:mx-in-vib.apple.com."
7285
+ ],
7286
+ stix_pattern: "[domain-name:value = 'apple.com' OR ipv4-addr:value = '17.253.144.10' OR ipv6-addr:value = '2620:149:af0:0:0:0:0:10']",
7287
+ recommended_action: "allow",
7288
+ first_seen: null,
7289
+ last_seen: null
7290
+ },
7291
+ evidence_summary: {
7292
+ why_flagged: []
7293
+ },
7294
+ errors: []
7295
+ }
7296
+ },
7297
+ partialData: {
7298
+ summary: "Partial data (WHOIS lookup failed)",
7299
+ value: {
7300
+ input: {
7301
+ domain: "apifreaks.com"
7302
+ },
7303
+ risk_category: {
7304
+ verdict: "safe",
7305
+ confidence: 0.7,
7306
+ severity: "none"
7307
+ },
7308
+ trust_signals: {
7309
+ trust_score: 70,
7310
+ trust_band: "high",
7311
+ indicators: {
7312
+ is_newly_registered: null,
7313
+ has_privacy_whois: null,
7314
+ domain_age_days: null,
7315
+ registrar: null
7316
+ }
7317
+ },
7318
+ errors: ["WHOIS lookup failed"]
7319
+ }
7320
+ }
7321
+ }
7322
+ }
7323
+ },
7324
+ headers: {
7325
+ "X-AF-Credits-Cost": {
7326
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7327
+ }
7328
+ }
7329
+ },
7330
+ "400": {
7331
+ description: "Bad Request \u2013 Invalid or missing domainName parameter",
7332
+ content: {
7333
+ "application/json": {
7334
+ schema: {
7335
+ $ref: "#/components/schemas/ErrorResponse"
7336
+ },
7337
+ examples: {
7338
+ invalidDomain: {
7339
+ summary: "Invalid domain parameter",
7340
+ value: {
7341
+ error: "Invalid Domain Exception",
7342
+ message: 'Please provide a valid domain name in the "domainName" parameter.',
7343
+ path: "/v1.0/domain/reputation",
7344
+ status: 400,
7345
+ timestamp: "2026-09-08T12:00:00.000Z"
7346
+ }
7347
+ },
7348
+ missingDomain: {
7349
+ summary: "Missing domainName parameter",
7350
+ value: {
7351
+ error: "Invalid Param Exception",
7352
+ message: 'Please provide a valid domain name in the "domainName" parameter.',
7353
+ path: "/v1.0/domain/reputation",
7354
+ status: 400,
7355
+ timestamp: "2026-09-08T12:00:00.000Z"
7356
+ }
7357
+ }
7358
+ }
7359
+ }
7360
+ },
7361
+ headers: {
7362
+ "X-AF-Credits-Cost": {
7363
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7364
+ }
7365
+ }
7366
+ },
7367
+ "503": {
7368
+ description: "Service Unavailable \u2013 The assessment service is temporarily unavailable",
7369
+ content: {
7370
+ "application/json": {
7371
+ schema: {
7372
+ $ref: "#/components/schemas/ErrorResponse"
7373
+ },
7374
+ examples: {
7375
+ serviceUnavailable: {
7376
+ summary: "Service Unavailable",
7377
+ value: {
7378
+ error: "Service Unavailable",
7379
+ message: "Service is unavailable. Please try after some time. [For Technical Support email at: support@apifreaks.com]",
7380
+ path: "/v1.0/domain/reputation",
7381
+ status: 503,
7382
+ timestamp: "2026-09-08T12:00:00.000Z"
7383
+ }
7384
+ }
7385
+ }
7386
+ }
7387
+ },
7388
+ headers: {
7389
+ "X-AF-Credits-Cost": {
7390
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7391
+ }
7392
+ }
7393
+ }
7394
+ },
7395
+ operationId: "getDomainReputation"
7396
+ }
7397
+ }
7398
+ },
7399
+ components: {
7400
+ securitySchemes: {
7401
+ ApiKeyAuthHeader: {
7402
+ type: "apiKey",
7403
+ in: "header",
7404
+ name: "X-apiKey",
7405
+ description: "Pass your API key via the X-apiKey request header."
7406
+ },
7407
+ ApiKeyAuthQuery: {
7408
+ type: "apiKey",
7409
+ in: "query",
7410
+ name: "apiKey",
7411
+ description: "Pass your API key via the apiKey query parameter."
7412
+ }
7413
+ },
7414
+ schemas: {
7415
+ DomainReputationResponse: {
7416
+ type: "object",
7417
+ required: [
7418
+ "input",
7419
+ "assessed_at",
7420
+ "version",
7421
+ "processing_time_ms",
7422
+ "risk_category",
7423
+ "dga_score",
7424
+ "trust_signals",
7425
+ "email_deliverability",
7426
+ "intelligence",
7427
+ "evidence_summary",
7428
+ "errors"
7429
+ ],
7430
+ properties: {
7431
+ input: {
7432
+ type: "object",
7433
+ required: ["domain"],
7434
+ properties: {
7435
+ domain: {
7436
+ type: "string",
7437
+ description: "Domain name being analyzed."
7438
+ }
7439
+ },
7440
+ description: "Input object containing the analyzed domain."
7441
+ },
7442
+ assessed_at: {
7443
+ type: "string",
7444
+ description: "Timestamp when the assessment was performed (YYYY-MM-DDTHH:mm:ssZ)."
7445
+ },
7446
+ version: {
7447
+ type: "string",
7448
+ description: "API / response schema version."
7449
+ },
7450
+ processing_time_ms: {
7451
+ type: "integer",
7452
+ description: "Time taken to process the request, in milliseconds."
7453
+ },
7454
+ risk_category: {
7455
+ $ref: "#/components/schemas/RiskCategory"
7456
+ },
7457
+ dga_score: {
7458
+ $ref: "#/components/schemas/DgaScore"
7459
+ },
7460
+ trust_signals: {
7461
+ $ref: "#/components/schemas/TrustSignals"
7462
+ },
7463
+ email_deliverability: {
7464
+ $ref: "#/components/schemas/EmailDeliverability"
7465
+ },
7466
+ intelligence: {
7467
+ $ref: "#/components/schemas/Intelligence"
7468
+ },
7469
+ evidence_summary: {
7470
+ $ref: "#/components/schemas/EvidenceSummary"
7471
+ },
7472
+ errors: {
7473
+ type: "array",
7474
+ items: {
7475
+ type: "string"
7476
+ },
7477
+ description: 'List of errors encountered during processing, if any (e.g. "WHOIS lookup failed"). An empty array means every signal resolved.'
7478
+ }
7479
+ },
7480
+ description: "Full domain reputation assessment response."
7481
+ },
7482
+ RiskCategory: {
7483
+ type: "object",
7484
+ required: [
7485
+ "verdict",
7486
+ "confidence",
7487
+ "primary_threat",
7488
+ "severity",
7489
+ "threat_types",
7490
+ "sources",
7491
+ "pivot_matches"
7492
+ ],
7493
+ properties: {
7494
+ verdict: {
7495
+ type: "string",
7496
+ enum: ["safe", "suspicious"],
7497
+ description: "Final verdict of the risk assessment."
7498
+ },
7499
+ confidence: {
7500
+ type: "number",
7501
+ format: "float",
7502
+ description: "Confidence score for the verdict (0-1)."
7503
+ },
7504
+ primary_threat: {
7505
+ type: ["string", "null"],
7506
+ description: "Main threat type identified (e.g. phishing). null when no threat was identified."
7507
+ },
7508
+ severity: {
7509
+ type: "string",
7510
+ enum: ["none", "low", "medium", "high"],
7511
+ description: "Severity level of the risk."
7512
+ },
7513
+ threat_types: {
7514
+ type: "array",
7515
+ items: {
7516
+ type: "string"
7517
+ },
7518
+ description: "List of threat types associated with the domain."
7519
+ },
7520
+ sources: {
7521
+ type: "array",
7522
+ items: {
7523
+ $ref: "#/components/schemas/ThreatSource"
7524
+ },
7525
+ description: "Threat intelligence sources that flagged the domain. Empty when nothing flagged it."
7526
+ },
7527
+ pivot_matches: {
7528
+ type: "array",
7529
+ items: {
7530
+ $ref: "#/components/schemas/PivotMatch"
7531
+ },
7532
+ description: "Related pivots (nameserver, email, etc.) linked to known threats."
7533
+ }
7534
+ },
7535
+ description: "Overall risk assessment for the domain."
7536
+ },
7537
+ ThreatSource: {
7538
+ type: "object",
7539
+ required: [
7540
+ "source",
7541
+ "indicator",
7542
+ "threat_type",
7543
+ "confidence",
7544
+ "first_seen",
7545
+ "last_seen"
7546
+ ],
7547
+ properties: {
7548
+ source: {
7549
+ type: "string",
7550
+ description: "Name of the threat intelligence source (e.g. Spamhaus)."
7551
+ },
7552
+ indicator: {
7553
+ type: "string",
7554
+ description: "Indicator matched by this source."
7555
+ },
7556
+ threat_type: {
7557
+ type: "string",
7558
+ description: "Threat type reported by this source."
7559
+ },
7560
+ confidence: {
7561
+ type: "number",
7562
+ format: "float",
7563
+ description: "Confidence score from this source (0-1)."
7564
+ },
7565
+ first_seen: {
7566
+ type: "string",
7567
+ description: "First time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ)."
7568
+ },
7569
+ last_seen: {
7570
+ type: "string",
7571
+ description: "Last time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ)."
7572
+ }
7573
+ },
7574
+ description: "A threat intelligence source that flagged the domain."
7575
+ },
7576
+ PivotMatch: {
7577
+ type: "object",
7578
+ required: [
7579
+ "pivot",
7580
+ "pivot_type",
7581
+ "total_related_threats",
7582
+ "confidence"
7583
+ ],
7584
+ properties: {
7585
+ pivot: {
7586
+ type: "string",
7587
+ description: "Pivot value (e.g. a nameserver or email address)."
7588
+ },
7589
+ pivot_type: {
7590
+ type: "string",
7591
+ description: "Type of pivot."
7592
+ },
7593
+ total_related_threats: {
7594
+ type: "integer",
7595
+ description: "Total number of threats related to this pivot."
7596
+ },
7597
+ confidence: {
7598
+ type: "number",
7599
+ format: "float",
7600
+ description: "Confidence score for the pivot match (0-1)."
7601
+ }
7602
+ },
7603
+ description: "A related pivot linked to known threats."
7604
+ },
7605
+ DgaScore: {
7606
+ type: "object",
7607
+ required: ["score", "is_dga", "model", "features", "interpretation"],
7608
+ properties: {
7609
+ score: {
7610
+ type: "number",
7611
+ format: "float",
7612
+ description: "DGA likelihood score (0-1)."
7613
+ },
7614
+ is_dga: {
7615
+ type: "boolean",
7616
+ description: "Indicates whether the domain is likely DGA-generated."
7617
+ },
7618
+ model: {
7619
+ type: "string",
7620
+ description: "Model used to compute the DGA score."
7621
+ },
7622
+ features: {
7623
+ $ref: "#/components/schemas/DgaFeatures"
7624
+ },
7625
+ interpretation: {
7626
+ type: "string",
7627
+ description: "Human-readable interpretation of the DGA score."
7628
+ }
7629
+ },
7630
+ description: "Domain Generation Algorithm (DGA) detection results."
7631
+ },
7632
+ DgaFeatures: {
7633
+ type: "object",
7634
+ required: [
7635
+ "domain_length",
7636
+ "vowel_consonant_ratio",
7637
+ "ngram_perplexity",
7638
+ "shannon_entropy",
7639
+ "digit_letter_ratio",
7640
+ "consonant_streak_max",
7641
+ "tld_in_known_dga_set"
7642
+ ],
7643
+ properties: {
7644
+ domain_length: {
7645
+ type: "integer",
7646
+ description: "Length of the domain name."
7647
+ },
7648
+ vowel_consonant_ratio: {
7649
+ type: "number",
7650
+ format: "float",
7651
+ description: "Ratio of vowels to consonants in the domain."
7652
+ },
7653
+ ngram_perplexity: {
7654
+ type: "number",
7655
+ format: "float",
7656
+ description: "N-gram perplexity score of the domain string."
7657
+ },
7658
+ shannon_entropy: {
7659
+ type: "number",
7660
+ format: "float",
7661
+ description: "Shannon entropy of the domain string."
7662
+ },
7663
+ digit_letter_ratio: {
7664
+ type: "number",
7665
+ format: "float",
7666
+ description: "Ratio of digits to letters in the domain."
7667
+ },
7668
+ consonant_streak_max: {
7669
+ type: "integer",
7670
+ description: "Maximum consecutive consonant streak in the domain."
7671
+ },
7672
+ tld_in_known_dga_set: {
7673
+ type: "boolean",
7674
+ description: "Indicates if the TLD belongs to a known DGA set."
7675
+ }
7676
+ },
7677
+ description: "Underlying lexical / statistical features used in DGA detection."
7678
+ },
7679
+ TrustSignals: {
7680
+ type: "object",
7681
+ required: ["trust_score", "trust_band", "signals", "indicators"],
7682
+ properties: {
7683
+ trust_score: {
7684
+ type: "integer",
7685
+ description: "Overall trust score (0-100)."
7686
+ },
7687
+ trust_band: {
7688
+ type: "string",
7689
+ description: "Trust score band / category (e.g. low, medium, high)."
7690
+ },
7691
+ signals: {
7692
+ $ref: "#/components/schemas/TrustScoreSignals"
7693
+ },
7694
+ indicators: {
7695
+ $ref: "#/components/schemas/TrustIndicators"
7696
+ }
7697
+ },
7698
+ description: "Trust scoring and supporting signals for the domain."
7699
+ },
7700
+ TrustScoreSignals: {
7701
+ type: "object",
7702
+ required: ["positive", "negative", "neutral"],
7703
+ properties: {
7704
+ positive: {
7705
+ type: "array",
7706
+ items: {
7707
+ $ref: "#/components/schemas/TrustSignalItem"
7708
+ },
7709
+ description: "Signals that positively affect the trust score."
7710
+ },
7711
+ negative: {
7712
+ type: "array",
7713
+ items: {
7714
+ $ref: "#/components/schemas/TrustSignalItem"
7715
+ },
7716
+ description: "Signals that negatively affect the trust score."
7717
+ },
7718
+ neutral: {
7719
+ type: "array",
7720
+ items: {
7721
+ $ref: "#/components/schemas/TrustSignalItem"
7722
+ },
7723
+ description: "Signals that are neutral to the trust score."
7724
+ }
7725
+ },
7726
+ description: "Signals contributing to the trust score."
7727
+ },
7728
+ TrustSignalItem: {
7729
+ type: "object",
7730
+ required: [
7731
+ "code",
7732
+ "weight",
7733
+ "polarity",
7734
+ "category",
7735
+ "evidence",
7736
+ "confidence"
7737
+ ],
7738
+ properties: {
7739
+ code: {
7740
+ type: "string",
7741
+ description: "Signal code identifier (e.g. valid_ssl, dmarc_missing)."
7742
+ },
7743
+ weight: {
7744
+ type: "integer",
7745
+ description: "Weight assigned to the signal."
7746
+ },
7747
+ polarity: {
7748
+ type: "string",
7749
+ enum: ["positive", "negative", "neutral"],
7750
+ description: "Polarity of the signal."
7751
+ },
7752
+ category: {
7753
+ type: "string",
7754
+ description: "Category the signal belongs to (e.g. ssl_certificate)."
7755
+ },
7756
+ evidence: {
7757
+ type: "string",
7758
+ description: "Evidence supporting the signal."
7759
+ },
7760
+ confidence: {
7761
+ type: "number",
7762
+ format: "float",
7763
+ description: "Confidence score for the signal (0-1)."
7764
+ }
7765
+ },
7766
+ description: "A single trust signal contributing to the trust score."
7767
+ },
7768
+ TrustIndicators: {
7769
+ type: "object",
7770
+ properties: {
7771
+ is_newly_registered: {
7772
+ type: ["boolean", "null"],
7773
+ description: "Indicates whether the domain was recently registered. null when WHOIS data is unavailable."
7774
+ },
7775
+ uses_free_extension: {
7776
+ type: "boolean",
7777
+ description: "Indicates whether the domain uses a free TLD extension."
7778
+ },
7779
+ uses_free_ssl: {
7780
+ type: "boolean",
7781
+ description: "Indicates whether the domain uses a free SSL certificate."
7782
+ },
7783
+ has_privacy_whois: {
7784
+ type: ["boolean", "null"],
7785
+ description: "Indicates whether WHOIS privacy protection is enabled. null when WHOIS data is unavailable."
7786
+ },
7787
+ ssl_age_days: {
7788
+ type: ["integer", "null"],
7789
+ description: "Age of the SSL certificate in days."
7790
+ },
7791
+ has_dmarc: {
7792
+ type: "boolean",
7793
+ description: "Indicates whether a DMARC record exists."
7794
+ },
7795
+ has_spf: {
7796
+ type: "boolean",
7797
+ description: "Indicates whether an SPF record exists."
7798
+ },
7799
+ redirects_externally: {
7800
+ type: "boolean",
7801
+ description: "Indicates whether the domain redirects to an external site."
7802
+ },
7803
+ javascript_obfuscated: {
7804
+ type: "boolean",
7805
+ description: "Indicates whether obfuscated JavaScript was detected."
7806
+ },
7807
+ domain_age_days: {
7808
+ type: ["integer", "null"],
7809
+ description: "Age of the domain in days. null when WHOIS data is unavailable."
7810
+ },
7811
+ registrar: {
7812
+ type: ["string", "null"],
7813
+ description: "Domain registrar name. null when WHOIS data is unavailable."
7814
+ }
7815
+ },
7816
+ description: "Individual trust / risk indicators for the domain."
7817
+ },
7818
+ EmailDeliverability: {
7819
+ type: "object",
7820
+ required: [
7821
+ "score",
7822
+ "grade",
7823
+ "can_receive_email",
7824
+ "authentication",
7825
+ "infrastructure",
7826
+ "reputation",
7827
+ "issues"
7828
+ ],
7829
+ properties: {
7830
+ score: {
7831
+ type: "integer",
7832
+ description: "Overall email deliverability score out of 100."
7833
+ },
7834
+ grade: {
7835
+ type: "string",
7836
+ description: "Letter / word grade summarizing the deliverability score."
7837
+ },
7838
+ can_receive_email: {
7839
+ type: "boolean",
7840
+ description: "Indicates whether the domain is configured to receive email."
7841
+ },
7842
+ authentication: {
7843
+ $ref: "#/components/schemas/EmailAuthentication"
7844
+ },
7845
+ infrastructure: {
7846
+ $ref: "#/components/schemas/EmailInfrastructure"
7847
+ },
7848
+ reputation: {
7849
+ $ref: "#/components/schemas/EmailReputation"
7850
+ },
7851
+ issues: {
7852
+ type: "array",
7853
+ items: {
7854
+ $ref: "#/components/schemas/EmailIssue"
7855
+ },
7856
+ description: "List of detected email deliverability issues or misconfigurations."
7857
+ }
7858
+ },
7859
+ description: "Assessment of the domain's ability to send and receive email reliably."
7860
+ },
7861
+ EmailAuthentication: {
7862
+ type: "object",
7863
+ required: ["spf", "dkim", "dmarc"],
7864
+ properties: {
7865
+ spf: {
7866
+ $ref: "#/components/schemas/SpfRecord"
7867
+ },
7868
+ dkim: {
7869
+ $ref: "#/components/schemas/DkimRecord"
7870
+ },
7871
+ dmarc: {
7872
+ $ref: "#/components/schemas/DmarcRecord"
7873
+ }
7874
+ },
7875
+ description: "Email authentication mechanisms configured for the domain."
7876
+ },
7877
+ SpfRecord: {
7878
+ type: "object",
7879
+ required: ["present", "policy", "record"],
7880
+ properties: {
7881
+ present: {
7882
+ type: "boolean",
7883
+ description: "Indicates whether an SPF record was found."
7884
+ },
7885
+ policy: {
7886
+ type: "string",
7887
+ description: "SPF enforcement policy qualifier found in the record (e.g. ~all, -all)."
7888
+ },
7889
+ record: {
7890
+ type: "string",
7891
+ description: "Raw SPF DNS TXT record string."
7892
+ }
7893
+ },
7894
+ description: "Sender Policy Framework configuration."
7895
+ },
7896
+ DkimRecord: {
7897
+ type: "object",
7898
+ required: ["found", "selectors_found", "providers_detected", "note"],
7899
+ properties: {
7900
+ found: {
7901
+ type: "boolean",
7902
+ description: "Indicates whether a DKIM record was found for any probed selector."
7903
+ },
7904
+ selectors_found: {
7905
+ type: "array",
7906
+ items: {
7907
+ type: "string"
7908
+ },
7909
+ description: "List of DKIM selectors for which a record was found."
7910
+ },
7911
+ providers_detected: {
7912
+ type: "array",
7913
+ items: {
7914
+ type: "string"
7915
+ },
7916
+ description: "Email service providers inferred from the matched DKIM selectors."
7917
+ },
7918
+ note: {
7919
+ type: "string",
7920
+ description: "Clarifying note about the limitations of DKIM selector probing."
7921
+ }
7922
+ },
7923
+ description: "DomainKeys Identified Mail configuration."
7924
+ },
7925
+ DmarcRecord: {
7926
+ type: "object",
7927
+ required: ["present", "policy", "reporting_configured"],
7928
+ properties: {
7929
+ present: {
7930
+ type: "boolean",
7931
+ description: "Indicates whether a DMARC record was found."
7932
+ },
7933
+ policy: {
7934
+ type: "string",
7935
+ description: "DMARC enforcement policy applied to failing messages (e.g. none, quarantine, reject)."
7936
+ },
7937
+ reporting_configured: {
7938
+ type: "boolean",
7939
+ description: "Indicates whether DMARC aggregate / forensic reporting addresses are configured."
7940
+ }
7941
+ },
7942
+ description: "Domain-based Message Authentication, Reporting and Conformance configuration."
7943
+ },
7944
+ EmailInfrastructure: {
7945
+ type: "object",
7946
+ required: ["mx_count", "mx_records", "mx_provider", "null_mx"],
7947
+ properties: {
7948
+ mx_count: {
7949
+ type: "integer",
7950
+ description: "Number of MX records found for the domain."
7951
+ },
7952
+ mx_records: {
7953
+ type: "array",
7954
+ items: {
7955
+ type: "string"
7956
+ },
7957
+ description: "List of mail exchange server hostnames for the domain."
7958
+ },
7959
+ mx_provider: {
7960
+ type: "string",
7961
+ description: "Email hosting provider inferred from the MX records."
7962
+ },
7963
+ null_mx: {
7964
+ type: "boolean",
7965
+ description: "Indicates whether the domain explicitly declines email via a null MX record."
7966
+ }
7967
+ },
7968
+ description: "Mail server infrastructure backing the domain."
7969
+ },
7970
+ EmailReputation: {
7971
+ type: "object",
7972
+ required: ["spam_blacklisted", "newly_registered"],
7973
+ properties: {
7974
+ spam_blacklisted: {
7975
+ type: "boolean",
7976
+ description: "Indicates whether the domain appears on known spam blacklists."
7977
+ },
7978
+ newly_registered: {
7979
+ type: "boolean",
7980
+ description: "Indicates whether the domain was registered recently."
7981
+ },
7982
+ domain_age_days: {
7983
+ type: ["integer", "null"],
7984
+ description: "Age of the domain in days since registration."
7985
+ }
7986
+ },
7987
+ description: "Reputation and trust signals related to the domain's email sending history."
7988
+ },
7989
+ EmailIssue: {
7990
+ type: "object",
7991
+ properties: {
7992
+ code: {
7993
+ type: "string",
7994
+ description: "Machine-readable code identifying the specific deliverability issue."
7995
+ },
7996
+ severity: {
7997
+ type: "string",
7998
+ description: "Severity level assigned to the detected issue."
7999
+ },
8000
+ message: {
8001
+ type: "string",
8002
+ description: "Human-readable explanation of the issue."
8003
+ },
8004
+ recommendation: {
8005
+ type: "string",
8006
+ description: "Plain-language description of the exact fix to apply."
8007
+ }
8008
+ },
8009
+ description: "A detected email deliverability issue or misconfiguration."
8010
+ },
8011
+ Intelligence: {
8012
+ type: "object",
8013
+ required: [
8014
+ "ioc_type",
8015
+ "ioc_value",
8016
+ "related_iocs",
8017
+ "feed_tags",
8018
+ "stix_pattern",
8019
+ "recommended_action",
8020
+ "first_seen",
8021
+ "last_seen"
8022
+ ],
8023
+ properties: {
8024
+ ioc_type: {
8025
+ type: "string",
8026
+ description: "Type of the indicator of compromise (e.g. domain)."
8027
+ },
8028
+ ioc_value: {
8029
+ type: "string",
8030
+ description: "Value of the indicator of compromise."
8031
+ },
8032
+ related_iocs: {
8033
+ type: "array",
8034
+ items: {
8035
+ $ref: "#/components/schemas/RelatedIoc"
8036
+ },
8037
+ description: "Other IOCs related to this domain."
8038
+ },
8039
+ feed_tags: {
8040
+ type: "array",
8041
+ items: {
8042
+ type: "string"
8043
+ },
8044
+ description: "Tags associated with this IOC from threat feeds."
8045
+ },
8046
+ stix_pattern: {
8047
+ type: "string",
8048
+ description: "STIX 2.1 pattern representation of the IOC, ready to wrap into an Indicator object."
8049
+ },
8050
+ recommended_action: {
8051
+ type: "string",
8052
+ enum: ["allow", "monitor", "block"],
8053
+ description: "Recommended action based on the assessment."
8054
+ },
8055
+ first_seen: {
8056
+ type: ["string", "null"],
8057
+ description: "First time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed."
8058
+ },
8059
+ last_seen: {
8060
+ type: ["string", "null"],
8061
+ description: "Last time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed."
8062
+ }
8063
+ },
8064
+ description: "Threat intelligence details for the indicator of compromise (IOC)."
8065
+ },
8066
+ RelatedIoc: {
8067
+ type: "object",
8068
+ required: ["type", "value", "confidence"],
8069
+ properties: {
8070
+ type: {
8071
+ type: "string",
8072
+ description: "Type of the related IOC (e.g. ipv4, ipv6)."
8073
+ },
8074
+ value: {
8075
+ type: "string",
8076
+ description: "Value of the related IOC."
8077
+ },
8078
+ confidence: {
8079
+ type: "number",
8080
+ format: "float",
8081
+ description: "Confidence score for the related IOC (0-1)."
8082
+ }
8083
+ },
8084
+ description: "A related indicator of compromise."
8085
+ },
8086
+ EvidenceSummary: {
8087
+ type: "object",
8088
+ required: ["why_flagged"],
8089
+ properties: {
8090
+ why_flagged: {
8091
+ type: "array",
8092
+ items: {
8093
+ type: "string"
8094
+ },
8095
+ description: "List of reasons why the domain was flagged. Empty for a clean domain."
8096
+ }
8097
+ },
8098
+ description: "Summary of reasons behind the risk assessment."
8099
+ },
8100
+ ErrorResponse: {
8101
+ type: "object",
8102
+ description: "Standard error envelope returned by the API on failed requests.",
8103
+ required: ["message"],
8104
+ properties: {
8105
+ error: {
8106
+ type: "string",
8107
+ description: "Short error category or exception type."
8108
+ },
8109
+ message: {
8110
+ type: "string",
8111
+ description: "Human-readable error message describing the failure."
8112
+ },
8113
+ path: {
8114
+ type: "string",
8115
+ description: "API endpoint path that produced the error."
8116
+ },
8117
+ status: {
8118
+ type: "integer",
8119
+ description: "HTTP status code returned with the error."
8120
+ },
8121
+ timestamp: {
8122
+ type: "string",
8123
+ format: "date-time",
8124
+ description: "Timestamp when the error occurred (ISO 8601)."
8125
+ }
8126
+ }
8127
+ }
8128
+ },
8129
+ headers: {
8130
+ "X-AF-Credits-Cost": {
8131
+ description: "Specifies the number of credits consumed by the current request.",
8132
+ schema: {
8133
+ type: "integer"
8134
+ }
8135
+ }
8136
+ }
8137
+ },
8138
+ security: [
8139
+ {
8140
+ ApiKeyAuthHeader: []
8141
+ },
8142
+ {
8143
+ ApiKeyAuthQuery: []
8144
+ }
8145
+ ]
8146
+ };
8147
+
7032
8148
  // specs/domain/domain-search-with-suggestions.json
7033
8149
  var domain_search_with_suggestions_default = {
7034
8150
  openapi: "3.1.1",
@@ -7244,47 +8360,278 @@ var domain_search_with_suggestions_default = {
7244
8360
  schemas: {
7245
8361
  DomainAvailabilityResponse: {
7246
8362
  type: "object",
7247
- description: "Domain availability check response containing the domain name and availability status. Returned when sug=false.",
8363
+ description: "Domain availability check response containing the domain name and availability status. Returned when sug=false.",
8364
+ required: ["domain", "domainAvailability"],
8365
+ properties: {
8366
+ domain: {
8367
+ type: "string",
8368
+ description: "Name of the queried domain."
8369
+ },
8370
+ domainAvailability: {
8371
+ type: "boolean",
8372
+ description: "True if available, false if not available."
8373
+ }
8374
+ }
8375
+ },
8376
+ DomainSuggestionResponse: {
8377
+ type: "object",
8378
+ required: ["domain_available_response"],
8379
+ properties: {
8380
+ domain_available_response: {
8381
+ type: "array",
8382
+ description: "List of domain availability objects.",
8383
+ items: {
8384
+ $ref: "#/components/schemas/DomainSuggestionItem"
8385
+ }
8386
+ }
8387
+ },
8388
+ description: "Domain suggestion response containing a list of availability-suggestions."
8389
+ },
8390
+ DomainSuggestionItem: {
8391
+ type: "object",
8392
+ description: "A single domain suggestion with availability status.",
8393
+ required: ["domain", "domainAvailability"],
8394
+ properties: {
8395
+ domain: {
8396
+ type: "string",
8397
+ description: "Name of the suggested domain."
8398
+ },
8399
+ domainAvailability: {
8400
+ type: "boolean",
8401
+ description: "True if available, false if not available."
8402
+ }
8403
+ }
8404
+ },
8405
+ ErrorResponse: {
8406
+ type: "object",
8407
+ description: "Standard error envelope returned by the API on failed requests.",
8408
+ required: ["message"],
8409
+ properties: {
8410
+ error: {
8411
+ type: "string",
8412
+ description: "Short error category or exception type."
8413
+ },
8414
+ message: {
8415
+ type: "string",
8416
+ description: "Human-readable error message describing the failure."
8417
+ },
8418
+ path: {
8419
+ type: "string",
8420
+ description: "API endpoint path that produced the error."
8421
+ },
8422
+ status: {
8423
+ type: "integer",
8424
+ description: "HTTP status code returned with the error."
8425
+ },
8426
+ timestamp: {
8427
+ type: "string",
8428
+ format: "date-time",
8429
+ description: "Timestamp when the error occurred (ISO 8601)."
8430
+ }
8431
+ }
8432
+ }
8433
+ },
8434
+ headers: {
8435
+ "X-AF-Credits-Cost": {
8436
+ description: "Specifies the number of credits consumed by the current request.",
8437
+ schema: {
8438
+ type: "integer"
8439
+ }
8440
+ }
8441
+ }
8442
+ },
8443
+ security: [
8444
+ {
8445
+ ApiKeyAuthHeader: []
8446
+ },
8447
+ {
8448
+ ApiKeyAuthQuery: []
8449
+ }
8450
+ ]
8451
+ };
8452
+
8453
+ // specs/domain/domain-search.json
8454
+ var domain_search_default = {
8455
+ openapi: "3.1.1",
8456
+ info: {
8457
+ title: "Domain Availability API - Check Domain Names in Real Time and Get Suggestions",
8458
+ version: "1.0.0",
8459
+ description: "Check whether a domain is available for registration across all top-level domains (TLDs) and second-level domains (SLDs). Uses DNS-based or WHOIS-based lookups to determine domain availability. Returns a simple response with the domain name and a boolean availability indicator.",
8460
+ contact: {
8461
+ name: "APIFreaks Support",
8462
+ url: "https://apifreaks.com/contact",
8463
+ email: "support@apifreaks.com"
8464
+ }
8465
+ },
8466
+ servers: [
8467
+ {
8468
+ url: "https://api.apifreaks.com/v1.0",
8469
+ description: "Domain Search API Server"
8470
+ }
8471
+ ],
8472
+ paths: {
8473
+ "/domain/availability": {
8474
+ get: {
8475
+ tags: ["Domain APIs"],
8476
+ summary: "Check whether a domain is available for registration or not.",
8477
+ description: "The Domain Search API is designed to simplify the process of finding available domain names across all top-level domains (TLDs) and second-level domains (SLDs).",
8478
+ parameters: [
8479
+ {
8480
+ name: "format",
8481
+ in: "query",
8482
+ required: false,
8483
+ schema: {
8484
+ type: "string",
8485
+ enum: ["json", "xml"],
8486
+ default: "json"
8487
+ },
8488
+ description: "Format of the response."
8489
+ },
8490
+ {
8491
+ name: "domain",
8492
+ in: "query",
8493
+ required: true,
8494
+ schema: {
8495
+ type: "string"
8496
+ },
8497
+ description: "Domain name whose availability is to be checked."
8498
+ },
8499
+ {
8500
+ name: "source",
8501
+ in: "query",
8502
+ required: false,
8503
+ schema: {
8504
+ type: "string",
8505
+ enum: ["dns", "whois"],
8506
+ default: "dns"
8507
+ },
8508
+ description: 'Specify the data source for domain availability checks. Use "dns" for DNS-based lookups or "whois" for WHOIS-based lookups. By default, "dns" is used.'
8509
+ }
8510
+ ],
8511
+ responses: {
8512
+ "200": {
8513
+ description: "Success",
8514
+ content: {
8515
+ "application/json": {
8516
+ schema: {
8517
+ $ref: "#/components/schemas/DomainAvailabilityResponse"
8518
+ },
8519
+ examples: {
8520
+ success: {
8521
+ summary: "Domain available",
8522
+ value: {
8523
+ domain: "google.com",
8524
+ domainAvailability: false
8525
+ }
8526
+ }
8527
+ }
8528
+ }
8529
+ },
8530
+ headers: {
8531
+ "X-AF-Credits-Cost": {
8532
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8533
+ }
8534
+ }
8535
+ },
8536
+ "400": {
8537
+ description: "Bad Request \u2013 Missing domain, or domain has an unrecognized/unsupported TLD",
8538
+ content: {
8539
+ "application/json": {
8540
+ schema: {
8541
+ $ref: "#/components/schemas/ErrorResponse"
8542
+ },
8543
+ examples: {
8544
+ missingDomain: {
8545
+ summary: "Missing required domain parameter",
8546
+ value: {
8547
+ error: "Invalid Param Exception",
8548
+ message: "please pass correct parameters",
8549
+ path: "/v1.0/domain/availability",
8550
+ status: 400,
8551
+ timestamp: "2026-07-27T12:18:21.115Z"
8552
+ }
8553
+ },
8554
+ unsupportedTld: {
8555
+ summary: "Domain has an unrecognized or unsupported TLD",
8556
+ value: {
8557
+ timestamp: "2026-07-27T12:18:47.346748812Z",
8558
+ status: 400,
8559
+ error: "Invalid Param Exception",
8560
+ message: "Please pass domain param correct value [For Technical Support: support@whoisfreaks.com]",
8561
+ path: "/v1.0/domain/availability"
8562
+ }
8563
+ }
8564
+ }
8565
+ }
8566
+ },
8567
+ headers: {
8568
+ "X-AF-Credits-Cost": {
8569
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8570
+ }
8571
+ }
8572
+ },
8573
+ "408": {
8574
+ description: "Request Timeout \u2013 Unable to fetch WHOIS data",
8575
+ content: {
8576
+ "application/json": {
8577
+ schema: {
8578
+ $ref: "#/components/schemas/ErrorResponse"
8579
+ },
8580
+ examples: {
8581
+ error: {
8582
+ summary: "Error response",
8583
+ value: {
8584
+ timestamp: "2025-08-14T10:37:21.871Z",
8585
+ status: 408,
8586
+ error: "Request Timeout",
8587
+ message: "Unable to fetch whois data. Please try again. [For Technical Support email at: support@apifreaks.com]",
8588
+ path: "/v1.0/domain/availability"
8589
+ }
8590
+ }
8591
+ }
8592
+ }
8593
+ },
8594
+ headers: {
8595
+ "X-AF-Credits-Cost": {
8596
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8597
+ }
8598
+ }
8599
+ }
8600
+ },
8601
+ operationId: "checkDomainAvailability"
8602
+ }
8603
+ }
8604
+ },
8605
+ components: {
8606
+ securitySchemes: {
8607
+ ApiKeyAuthHeader: {
8608
+ type: "apiKey",
8609
+ in: "header",
8610
+ name: "X-apiKey",
8611
+ description: "Pass your API key via the X-apiKey request header."
8612
+ },
8613
+ ApiKeyAuthQuery: {
8614
+ type: "apiKey",
8615
+ in: "query",
8616
+ name: "apiKey",
8617
+ description: "Pass your API key via the apiKey query parameter."
8618
+ }
8619
+ },
8620
+ schemas: {
8621
+ DomainAvailabilityResponse: {
8622
+ type: "object",
7248
8623
  required: ["domain", "domainAvailability"],
7249
8624
  properties: {
7250
8625
  domain: {
7251
8626
  type: "string",
7252
- description: "Name of the queried domain."
8627
+ description: "Name of the queried domain"
7253
8628
  },
7254
8629
  domainAvailability: {
7255
8630
  type: "boolean",
7256
- description: "True if available, false if not available."
7257
- }
7258
- }
7259
- },
7260
- DomainSuggestionResponse: {
7261
- type: "object",
7262
- required: ["domain_available_response"],
7263
- properties: {
7264
- domain_available_response: {
7265
- type: "array",
7266
- description: "List of domain availability objects.",
7267
- items: {
7268
- $ref: "#/components/schemas/DomainSuggestionItem"
7269
- }
8631
+ description: "True if available, false if not available"
7270
8632
  }
7271
8633
  },
7272
- description: "Domain suggestion response containing a list of availability-suggestions."
7273
- },
7274
- DomainSuggestionItem: {
7275
- type: "object",
7276
- description: "A single domain suggestion with availability status.",
7277
- required: ["domain", "domainAvailability"],
7278
- properties: {
7279
- domain: {
7280
- type: "string",
7281
- description: "Name of the suggested domain."
7282
- },
7283
- domainAvailability: {
7284
- type: "boolean",
7285
- description: "True if available, false if not available."
7286
- }
7287
- }
8634
+ description: "Domain availability check response containing the domain name and availability status."
7288
8635
  },
7289
8636
  ErrorResponse: {
7290
8637
  type: "object",
@@ -7334,13 +8681,13 @@ var domain_search_with_suggestions_default = {
7334
8681
  ]
7335
8682
  };
7336
8683
 
7337
- // specs/domain/domain-search.json
7338
- var domain_search_default = {
8684
+ // specs/domain/domain-typosquatting.json
8685
+ var domain_typosquatting_default = {
7339
8686
  openapi: "3.1.1",
7340
8687
  info: {
7341
- title: "Domain Availability API - Check Domain Names in Real Time and Get Suggestions",
8688
+ title: "Domain Typosquatting API - Find Typo and Look-Alike Domains for Brand Protection and Phishing Discovery",
7342
8689
  version: "1.0.0",
7343
- description: "Check whether a domain is available for registration across all top-level domains (TLDs) and second-level domains (SLDs). Uses DNS-based or WHOIS-based lookups to determine domain availability. Returns a simple response with the domain name and a boolean availability indicator.",
8690
+ description: "Search for registered domains that read like typo variants of a brand keyword, or that match a wildcard pattern, across the full TLD set. Each match returns what is available of its registration date, expiry date, last-seen date, and drop status, paginated at 100 domains per page. Built for brand and trademark protection, phishing discovery, scheduled monitoring, and domain reclaim.",
7344
8691
  contact: {
7345
8692
  name: "APIFreaks Support",
7346
8693
  url: "https://apifreaks.com/contact",
@@ -7350,15 +8697,15 @@ var domain_search_default = {
7350
8697
  servers: [
7351
8698
  {
7352
8699
  url: "https://api.apifreaks.com/v1.0",
7353
- description: "Domain Search API Server"
8700
+ description: "Domain Typosquatting API Server"
7354
8701
  }
7355
8702
  ],
7356
8703
  paths: {
7357
- "/domain/availability": {
8704
+ "/domain/typosquatting": {
7358
8705
  get: {
7359
8706
  tags: ["Domain APIs"],
7360
- summary: "Check whether a domain is available for registration or not.",
7361
- description: "The Domain Search API is designed to simplify the process of finding available domain names across all top-level domains (TLDs) and second-level domains (SLDs).",
8707
+ summary: "Find registered typo-variant or wildcard-pattern domains for a brand keyword.",
8708
+ description: "The Domain Typosquatting API searches for registered domains that are typo or look-alike variants of a brand keyword, or that match a wildcard pattern. Results include registration lifecycle data and drop status across 1529+ TLDs, paginated at 100 domains per page.",
7362
8709
  parameters: [
7363
8710
  {
7364
8711
  name: "format",
@@ -7372,24 +8719,35 @@ var domain_search_default = {
7372
8719
  description: "Format of the response."
7373
8720
  },
7374
8721
  {
7375
- name: "domain",
8722
+ name: "keyword",
7376
8723
  in: "query",
7377
- required: true,
8724
+ required: false,
7378
8725
  schema: {
7379
- type: "string"
8726
+ type: "string",
8727
+ minLength: 3,
8728
+ maxLength: 63
7380
8729
  },
7381
- description: "Domain name whose availability is to be checked."
8730
+ description: "Brand or label to find typo variants for. 3-63 characters, letters, digits, or hyphens, a single label with no dots. Case-insensitive. Use either keyword or pattern, never both."
7382
8731
  },
7383
8732
  {
7384
- name: "source",
8733
+ name: "pattern",
7385
8734
  in: "query",
7386
8735
  required: false,
7387
8736
  schema: {
7388
8737
  type: "string",
7389
- enum: ["dns", "whois"],
7390
- default: "dns"
8738
+ minLength: 3,
8739
+ maxLength: 63
7391
8740
  },
7392
- description: 'Specify the data source for domain availability checks. Use "dns" for DNS-based lookups or "whois" for WHOIS-based lookups. By default, "dns" is used.'
8741
+ description: "Wildcard search string that combines fuzzy matching with * wildcards. 3-63 characters total, * is the only supported wildcard and each one matches zero or more characters, maximum 3 asterisks per request. Use either keyword or pattern, never both."
8742
+ },
8743
+ {
8744
+ name: "pageToken",
8745
+ in: "query",
8746
+ required: false,
8747
+ schema: {
8748
+ type: "string"
8749
+ },
8750
+ description: "Token from nextPageToken in the previous response. Required to retrieve page 2 and onward. The original keyword or pattern must be passed alongside the token on every page request. Results page at 100 domains per page."
7393
8751
  }
7394
8752
  ],
7395
8753
  responses: {
@@ -7398,14 +8756,85 @@ var domain_search_default = {
7398
8756
  content: {
7399
8757
  "application/json": {
7400
8758
  schema: {
7401
- $ref: "#/components/schemas/DomainAvailabilityResponse"
8759
+ $ref: "#/components/schemas/DomainTyposquattingResponse"
7402
8760
  },
7403
8761
  examples: {
7404
- success: {
7405
- summary: "Domain available",
8762
+ keywordSuccess: {
8763
+ summary: "Keyword search (paypal)",
7406
8764
  value: {
7407
- domain: "google.com",
7408
- domainAvailability: false
8765
+ status: true,
8766
+ totalRecords: 1284,
8767
+ currentPage: 1,
8768
+ hasNextPage: true,
8769
+ totalPages: 13,
8770
+ nextPageToken: "<opaque_token>",
8771
+ domains: [
8772
+ {
8773
+ domainName: "p-aypal.com",
8774
+ createDate: "2025-04-17",
8775
+ expiryDate: "2026-04-17",
8776
+ lastSeen: "2026-05-29",
8777
+ isDropped: true
8778
+ },
8779
+ {
8780
+ domainName: "p-aypal.de",
8781
+ lastSeen: "2024-07-11",
8782
+ isDropped: true
8783
+ },
8784
+ {
8785
+ domainName: "p0aypal.com",
8786
+ createDate: "2017-12-29",
8787
+ expiryDate: "2026-12-29",
8788
+ lastSeen: "2026-08-18",
8789
+ isDropped: false
8790
+ },
8791
+ {
8792
+ domainName: "p7ypal.com",
8793
+ isDropped: true
8794
+ },
8795
+ {
8796
+ domainName: "pa-pal.club",
8797
+ createDate: "2019-10-25",
8798
+ expiryDate: "2020-10-25",
8799
+ isDropped: false
8800
+ }
8801
+ ]
8802
+ }
8803
+ },
8804
+ patternSuccess: {
8805
+ summary: "Wildcard pattern search (*paypal*)",
8806
+ value: {
8807
+ status: true,
8808
+ totalRecords: 5471,
8809
+ currentPage: 1,
8810
+ hasNextPage: true,
8811
+ totalPages: 55,
8812
+ nextPageToken: "<opaque_token>",
8813
+ domains: [
8814
+ {
8815
+ domainName: "paypal-support.com",
8816
+ createDate: "2024-11-02",
8817
+ expiryDate: "2026-11-02",
8818
+ lastSeen: "2026-08-30",
8819
+ isDropped: false
8820
+ },
8821
+ {
8822
+ domainName: "login-paypal.net",
8823
+ lastSeen: "2025-12-14",
8824
+ isDropped: true
8825
+ }
8826
+ ]
8827
+ }
8828
+ },
8829
+ emptyResult: {
8830
+ summary: "No matches found",
8831
+ value: {
8832
+ status: true,
8833
+ totalRecords: 0,
8834
+ currentPage: 1,
8835
+ hasNextPage: false,
8836
+ totalPages: 0,
8837
+ domains: []
7409
8838
  }
7410
8839
  }
7411
8840
  }
@@ -7418,58 +8847,41 @@ var domain_search_default = {
7418
8847
  }
7419
8848
  },
7420
8849
  "400": {
7421
- description: "Bad Request \u2013 Missing domain, or domain has an unrecognized/unsupported TLD",
8850
+ description: "Bad Request \u2013 Invalid parameters",
7422
8851
  content: {
7423
8852
  "application/json": {
7424
8853
  schema: {
7425
8854
  $ref: "#/components/schemas/ErrorResponse"
7426
8855
  },
7427
8856
  examples: {
7428
- missingDomain: {
7429
- summary: "Missing required domain parameter",
8857
+ shortPattern: {
8858
+ summary: "Pattern has too few non-wildcard characters",
7430
8859
  value: {
7431
- error: "Invalid Param Exception",
7432
- message: "please pass correct parameters",
7433
- path: "/v1.0/domain/availability",
8860
+ error: "Invalid Pattern Exception",
8861
+ message: "The pattern must contain at least 5 non-wildcard characters and no more than 3 wildcards.",
8862
+ path: "/v1.0/domain/typosquatting",
7434
8863
  status: 400,
7435
- timestamp: "2026-07-27T12:18:21.115Z"
8864
+ timestamp: "2026-09-08T12:00:00.000Z"
7436
8865
  }
7437
8866
  },
7438
- unsupportedTld: {
7439
- summary: "Domain has an unrecognized or unsupported TLD",
8867
+ bothParams: {
8868
+ summary: "Both keyword and pattern supplied",
7440
8869
  value: {
7441
- timestamp: "2026-07-27T12:18:47.346748812Z",
7442
- status: 400,
7443
8870
  error: "Invalid Param Exception",
7444
- message: "Please pass domain param correct value [For Technical Support: support@whoisfreaks.com]",
7445
- path: "/v1.0/domain/availability"
8871
+ message: 'Use either the "keyword" or the "pattern" parameter, never both.',
8872
+ path: "/v1.0/domain/typosquatting",
8873
+ status: 400,
8874
+ timestamp: "2026-09-08T12:00:00.000Z"
7446
8875
  }
7447
- }
7448
- }
7449
- }
7450
- },
7451
- headers: {
7452
- "X-AF-Credits-Cost": {
7453
- $ref: "#/components/headers/X-AF-Credits-Cost"
7454
- }
7455
- }
7456
- },
7457
- "408": {
7458
- description: "Request Timeout \u2013 Unable to fetch WHOIS data",
7459
- content: {
7460
- "application/json": {
7461
- schema: {
7462
- $ref: "#/components/schemas/ErrorResponse"
7463
- },
7464
- examples: {
7465
- error: {
7466
- summary: "Error response",
8876
+ },
8877
+ missingParam: {
8878
+ summary: "Neither keyword nor pattern supplied",
7467
8879
  value: {
7468
- timestamp: "2025-08-14T10:37:21.871Z",
7469
- status: 408,
7470
- error: "Request Timeout",
7471
- message: "Unable to fetch whois data. Please try again. [For Technical Support email at: support@apifreaks.com]",
7472
- path: "/v1.0/domain/availability"
8880
+ error: "Invalid Param Exception",
8881
+ message: 'Please provide either a "keyword" or a "pattern" parameter.',
8882
+ path: "/v1.0/domain/typosquatting",
8883
+ status: 400,
8884
+ timestamp: "2026-09-08T12:00:00.000Z"
7473
8885
  }
7474
8886
  }
7475
8887
  }
@@ -7482,7 +8894,7 @@ var domain_search_default = {
7482
8894
  }
7483
8895
  }
7484
8896
  },
7485
- operationId: "checkDomainAvailability"
8897
+ operationId: "getDomainTyposquatting"
7486
8898
  }
7487
8899
  }
7488
8900
  },
@@ -7502,20 +8914,70 @@ var domain_search_default = {
7502
8914
  }
7503
8915
  },
7504
8916
  schemas: {
7505
- DomainAvailabilityResponse: {
8917
+ DomainTyposquattingResponse: {
7506
8918
  type: "object",
7507
- required: ["domain", "domainAvailability"],
8919
+ required: ["status", "totalRecords", "currentPage", "hasNextPage", "totalPages", "domains"],
7508
8920
  properties: {
7509
- domain: {
8921
+ status: {
8922
+ type: "boolean",
8923
+ description: "Indicates if the request was successful."
8924
+ },
8925
+ totalRecords: {
8926
+ type: "integer",
8927
+ description: "Total number of domains found."
8928
+ },
8929
+ currentPage: {
8930
+ type: "integer",
8931
+ description: "Page number of the current response. Starts at 1."
8932
+ },
8933
+ hasNextPage: {
8934
+ type: "boolean",
8935
+ description: "true if at least one additional page is available."
8936
+ },
8937
+ totalPages: {
8938
+ type: "integer",
8939
+ description: "Total number of pages available."
8940
+ },
8941
+ nextPageToken: {
7510
8942
  type: "string",
7511
- description: "Name of the queried domain"
8943
+ description: "Opaque token to pass as pageToken on the next request. Present only when hasNextPage is true."
7512
8944
  },
7513
- domainAvailability: {
8945
+ domains: {
8946
+ type: "array",
8947
+ items: {
8948
+ $ref: "#/components/schemas/DomainItem"
8949
+ },
8950
+ description: "List of typo-variant or pattern-matched domains on the current page."
8951
+ }
8952
+ },
8953
+ description: "Paginated response containing typo-variant or pattern-matched domains."
8954
+ },
8955
+ DomainItem: {
8956
+ type: "object",
8957
+ required: ["domainName", "isDropped"],
8958
+ properties: {
8959
+ domainName: {
8960
+ type: "string",
8961
+ description: "Domain name."
8962
+ },
8963
+ createDate: {
8964
+ type: "string",
8965
+ description: "Domain creation date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries."
8966
+ },
8967
+ expiryDate: {
8968
+ type: "string",
8969
+ description: "Domain expiration date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries."
8970
+ },
8971
+ lastSeen: {
8972
+ type: "string",
8973
+ description: "Last time the domain was observed (YYYY-MM-DD). One of the two fields reliably meaningful across a full result set."
8974
+ },
8975
+ isDropped: {
7514
8976
  type: "boolean",
7515
- description: "True if available, false if not available"
8977
+ description: "Indicates whether the domain has dropped out of the registry and become available to register again."
7516
8978
  }
7517
8979
  },
7518
- description: "Domain availability check response containing the domain name and availability status."
8980
+ description: "A single typo-variant or pattern-matched domain with registration lifecycle data."
7519
8981
  },
7520
8982
  ErrorResponse: {
7521
8983
  type: "object",
@@ -7939,7 +9401,7 @@ var bulk_email_validation_default = {
7939
9401
  info: {
7940
9402
  title: "Bulk Email Validation API - Validate and Verify Emails in Bulk",
7941
9403
  version: "1.0.0",
7942
- description: "Validate up to 10 email addresses in a single POST request. Each email is processed independently. Returns an array of validation results with deliverability assessment per email, plus per-item error objects for failed validations. Maximum 10 email addresses per request.",
9404
+ description: "Validate up to 10 email addresses in a single POST request. Each email is processed independently. Returns an array of validation results with deliverability assessment per email (valid/accept_all/invalid/unknown/risky/app_server_blocked), plus per-item error objects for failed validations. Maximum 10 email addresses per request.",
7943
9405
  contact: {
7944
9406
  name: "APIFreaks Support",
7945
9407
  url: "https://apifreaks.com/contact",
@@ -7991,7 +9453,7 @@ var bulk_email_validation_default = {
7991
9453
  },
7992
9454
  examples: {
7993
9455
  bulkEmailsValidated: {
7994
- summary: "Mix of a valid and a syntactically invalid email",
9456
+ summary: "Mix of valid, syntactically invalid, accept_all, null-MX invalid, and unknown (no-MX probe) results",
7995
9457
  value: {
7996
9458
  emailResponse: [
7997
9459
  {
@@ -8030,6 +9492,74 @@ var bulk_email_validation_default = {
8030
9492
  name: "not-an-email",
8031
9493
  validDomain: false
8032
9494
  }
9495
+ },
9496
+ {
9497
+ success: true,
9498
+ email: "random12345@yahoo.com",
9499
+ validEmail: "accept_all",
9500
+ validSyntax: true,
9501
+ reason: "domain accepts all addresses.",
9502
+ domain: {
9503
+ name: "yahoo.com",
9504
+ disposable: false,
9505
+ spam: false,
9506
+ free: true,
9507
+ validDomain: true,
9508
+ catchAll: true
9509
+ },
9510
+ account: {
9511
+ role: false,
9512
+ fullMailBox: false
9513
+ },
9514
+ dns: {
9515
+ mxRecord: [
9516
+ "mta5.am0.yahoodns.net.",
9517
+ "mta6.am0.yahoodns.net.",
9518
+ "mta7.am0.yahoodns.net."
9519
+ ]
9520
+ }
9521
+ },
9522
+ {
9523
+ success: true,
9524
+ email: "test@example.com",
9525
+ validEmail: "invalid",
9526
+ validSyntax: true,
9527
+ reason: "domain does not accept mail.",
9528
+ domain: {
9529
+ name: "example.com",
9530
+ disposable: true,
9531
+ spam: false,
9532
+ free: false,
9533
+ validDomain: true,
9534
+ catchAll: false
9535
+ },
9536
+ account: {
9537
+ role: false
9538
+ },
9539
+ dns: {
9540
+ mxRecord: ["."]
9541
+ }
9542
+ },
9543
+ {
9544
+ success: true,
9545
+ email: "test@neverssl.com",
9546
+ validEmail: "unknown",
9547
+ validSyntax: true,
9548
+ reason: "We are unable to determine if email is valid or invalid.",
9549
+ domain: {
9550
+ name: "neverssl.com",
9551
+ disposable: false,
9552
+ spam: false,
9553
+ free: false,
9554
+ validDomain: true,
9555
+ catchAll: false
9556
+ },
9557
+ account: {
9558
+ role: false
9559
+ },
9560
+ dns: {
9561
+ aRecord: ["34.223.124.45"]
9562
+ }
8033
9563
  }
8034
9564
  ]
8035
9565
  }
@@ -8234,19 +9764,20 @@ var bulk_email_validation_default = {
8234
9764
  },
8235
9765
  reason: {
8236
9766
  type: "string",
8237
- description: "Detailed explanation returned when validEmail is not valid."
9767
+ description: "Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid."
8238
9768
  },
8239
9769
  validEmail: {
8240
9770
  type: "string",
8241
9771
  enum: [
8242
9772
  "valid",
9773
+ "accept_all",
8243
9774
  "invalid",
8244
9775
  "INVALID_EMAIL",
8245
9776
  "unknown",
8246
9777
  "risky",
8247
9778
  "app_server_blocked"
8248
9779
  ],
8249
- description: "Comprehensive deliverability assessment. Casing is inconsistent in the live API: syntactically invalid addresses return INVALID_EMAIL, while semantically invalid (undeliverable) addresses return lowercase invalid. risky is a documented possibility not observed during testing. app_server_blocked is returned when the recipient mail server blocked the live verification attempt (reason explains that retrying later may succeed)."
9780
+ description: "Comprehensive deliverability assessment. valid: recipient confirmed deliverable, reason omitted. accept_all: the domain is catch-all and accepted the recipient, so this specific mailbox is unconfirmed \u2014 see domain.catchAll, reason 'domain accepts all addresses.'. invalid: rejected mailbox, syntax failure, or the domain accepts no mail at all (a null MX). unknown: no conclusive answer, most common for domains with no MX record that only get a probe against their address record. risky: mailbox exists but over quota, or the server deferred with a greylist response. app_server_blocked: our verifier IP was blocked by the receiving server. Casing is inconsistent in the live API: syntactically invalid addresses can return the raw enum name INVALID_EMAIL instead of lowercase invalid \u2014 this is a known API bug, handle it defensively as equivalent to invalid."
8250
9781
  },
8251
9782
  validSyntax: {
8252
9783
  type: "boolean",
@@ -8298,7 +9829,7 @@ var bulk_email_validation_default = {
8298
9829
  },
8299
9830
  catchAll: {
8300
9831
  type: "boolean",
8301
- description: "Detection flag for domains configured to accept mail for any recipient address."
9832
+ description: "Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all."
8302
9833
  }
8303
9834
  },
8304
9835
  description: "Domain validation details for the email address."
@@ -8320,24 +9851,24 @@ var bulk_email_validation_default = {
8320
9851
  },
8321
9852
  DnsObject: {
8322
9853
  type: "object",
8323
- required: ["mxRecord"],
9854
+ required: [],
8324
9855
  properties: {
8325
9856
  mxRecord: {
8326
9857
  type: "array",
8327
9858
  items: {
8328
9859
  type: "string"
8329
9860
  },
8330
- description: "Collection of MX (Mail Exchange) hostname records from DNS queries."
9861
+ description: `Every MX hostname at the domain's lowest preference (not just one). ["."] means the domain publishes a null MX and accepts no mail at all. Absent entirely when the domain has no MX record of any kind \u2014 check aRecord in that case.`
8331
9862
  },
8332
9863
  aRecord: {
8333
9864
  type: "array",
8334
9865
  items: {
8335
9866
  type: "string"
8336
9867
  },
8337
- description: "Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated."
9868
+ description: "Collection of A (Address) records for the domain. Present when the domain has no MX record but does resolve to a web server or other host."
8338
9869
  }
8339
9870
  },
8340
- description: "DNS records for the email domain."
9871
+ description: "DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record."
8341
9872
  },
8342
9873
  AddressObject: {
8343
9874
  type: "object",
@@ -8580,7 +10111,7 @@ var email_checker_default = {
8580
10111
  info: {
8581
10112
  title: "Email Checker API - Real-Time Validation, Deliverability & Risk Signals",
8582
10113
  version: "1.0.0",
8583
- description: "Validate a single email address and receive comprehensive results including syntax validation, domain verification, account detection, DNS records (MX and A records), and optional IP-based geolocation and security enrichment. Returns deliverability assessment with valid/invalid/unknown/risky/app_server_blocked status.",
10114
+ description: "Validate a single email address and receive comprehensive results including syntax validation, domain verification, account detection, DNS records (MX and A records), and optional IP-based geolocation and security enrichment. Returns deliverability assessment with valid/accept_all/invalid/unknown/risky/app_server_blocked status.",
8584
10115
  contact: {
8585
10116
  name: "APIFreaks Support",
8586
10117
  url: "https://apifreaks.com/contact",
@@ -8673,8 +10204,8 @@ var email_checker_default = {
8673
10204
  }
8674
10205
  }
8675
10206
  },
8676
- noMxRecord: {
8677
- summary: "Valid syntax, domain has no MX record",
10207
+ nonexistentDomain: {
10208
+ summary: "Valid syntax, domain does not exist (NXDOMAIN)",
8678
10209
  value: {
8679
10210
  success: true,
8680
10211
  email: "test@nonexistentdomainxyz123abc.com",
@@ -8694,6 +10225,83 @@ var email_checker_default = {
8694
10225
  }
8695
10226
  }
8696
10227
  },
10228
+ acceptAll: {
10229
+ summary: "Catch-all domain accepted the recipient \u2014 mailbox unconfirmed",
10230
+ value: {
10231
+ success: true,
10232
+ email: "random12345@yahoo.com",
10233
+ validEmail: "accept_all",
10234
+ validSyntax: true,
10235
+ reason: "domain accepts all addresses.",
10236
+ domain: {
10237
+ name: "yahoo.com",
10238
+ disposable: false,
10239
+ spam: false,
10240
+ free: true,
10241
+ validDomain: true,
10242
+ catchAll: true
10243
+ },
10244
+ account: {
10245
+ role: false,
10246
+ fullMailBox: false
10247
+ },
10248
+ dns: {
10249
+ mxRecord: [
10250
+ "mta5.am0.yahoodns.net.",
10251
+ "mta6.am0.yahoodns.net.",
10252
+ "mta7.am0.yahoodns.net."
10253
+ ]
10254
+ }
10255
+ }
10256
+ },
10257
+ nullMxDomain: {
10258
+ summary: 'Domain publishes a null MX (single ".") \u2014 accepts no mail at all',
10259
+ value: {
10260
+ success: true,
10261
+ email: "test@example.com",
10262
+ validEmail: "invalid",
10263
+ validSyntax: true,
10264
+ reason: "domain does not accept mail.",
10265
+ domain: {
10266
+ name: "example.com",
10267
+ disposable: true,
10268
+ spam: false,
10269
+ free: false,
10270
+ validDomain: true,
10271
+ catchAll: false
10272
+ },
10273
+ account: {
10274
+ role: false
10275
+ },
10276
+ dns: {
10277
+ mxRecord: ["."]
10278
+ }
10279
+ }
10280
+ },
10281
+ noMxAddressOnly: {
10282
+ summary: "Domain has no MX record but a working A record \u2014 gets a real SMTP probe",
10283
+ value: {
10284
+ success: true,
10285
+ email: "test@neverssl.com",
10286
+ validEmail: "unknown",
10287
+ validSyntax: true,
10288
+ reason: "We are unable to determine if email is valid or invalid.",
10289
+ domain: {
10290
+ name: "neverssl.com",
10291
+ disposable: false,
10292
+ spam: false,
10293
+ free: false,
10294
+ validDomain: true,
10295
+ catchAll: false
10296
+ },
10297
+ account: {
10298
+ role: false
10299
+ },
10300
+ dns: {
10301
+ aRecord: ["34.223.124.45"]
10302
+ }
10303
+ }
10304
+ },
8697
10305
  withIp: {
8698
10306
  summary: "With ip \u2014 adds geolocation/security enrichment under address",
8699
10307
  value: {
@@ -8964,12 +10572,12 @@ var email_checker_default = {
8964
10572
  },
8965
10573
  reason: {
8966
10574
  type: "string",
8967
- description: "Detailed explanation returned when validEmail is not valid."
10575
+ description: "Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid."
8968
10576
  },
8969
10577
  validEmail: {
8970
10578
  type: "string",
8971
- enum: ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky", "app_server_blocked"],
8972
- description: "Comprehensive deliverability assessment. Casing is inconsistent in the live API: syntactically invalid addresses return INVALID_EMAIL, while semantically invalid (undeliverable) addresses return lowercase invalid. risky is a documented possibility not observed during testing. app_server_blocked is returned when the recipient mail server blocked the live verification attempt (reason explains that retrying later may succeed)."
10579
+ enum: ["valid", "accept_all", "invalid", "INVALID_EMAIL", "unknown", "risky", "app_server_blocked"],
10580
+ description: "Comprehensive deliverability assessment. valid: recipient confirmed deliverable, reason omitted. accept_all: the domain is catch-all and accepted the recipient, so this specific mailbox is unconfirmed \u2014 see domain.catchAll, reason 'domain accepts all addresses.'. invalid: rejected mailbox, syntax failure, or the domain accepts no mail at all (a null MX). unknown: no conclusive answer, most common for domains with no MX record that only get a probe against their address record. risky: mailbox exists but over quota, or the server deferred with a greylist response. app_server_blocked: our verifier IP was blocked by the receiving server. Casing is inconsistent in the live API: syntactically invalid addresses can return the raw enum name INVALID_EMAIL instead of lowercase invalid \u2014 this is a known API bug, handle it defensively as equivalent to invalid."
8973
10581
  },
8974
10582
  validSyntax: {
8975
10583
  type: "boolean",
@@ -9021,7 +10629,7 @@ var email_checker_default = {
9021
10629
  },
9022
10630
  catchAll: {
9023
10631
  type: "boolean",
9024
- description: "Detection flag for domains configured to accept mail for any recipient address."
10632
+ description: "Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all."
9025
10633
  }
9026
10634
  },
9027
10635
  description: "Domain validation details for the email address."
@@ -9043,24 +10651,24 @@ var email_checker_default = {
9043
10651
  },
9044
10652
  DnsObject: {
9045
10653
  type: "object",
9046
- required: ["mxRecord"],
10654
+ required: [],
9047
10655
  properties: {
9048
10656
  mxRecord: {
9049
10657
  type: "array",
9050
10658
  items: {
9051
10659
  type: "string"
9052
10660
  },
9053
- description: "Collection of MX (Mail Exchange) hostname records from DNS queries."
10661
+ description: `Every MX hostname at the domain's lowest preference (not just one). ["."] means the domain publishes a null MX and accepts no mail at all. Absent entirely when the domain has no MX record of any kind \u2014 check aRecord in that case.`
9054
10662
  },
9055
10663
  aRecord: {
9056
10664
  type: "array",
9057
10665
  items: {
9058
10666
  type: "string"
9059
10667
  },
9060
- description: "Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated."
10668
+ description: "Collection of A (Address) records for the domain. Present when the domain has no MX record but does resolve to a web server or other host."
9061
10669
  }
9062
10670
  },
9063
- description: "DNS records for the email domain."
10671
+ description: "DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record."
9064
10672
  },
9065
10673
  AddressObject: {
9066
10674
  type: "object",
@@ -47852,8 +49460,10 @@ var SPECS = {
47852
49460
  "dns-lookup": dns_lookup_default,
47853
49461
  "reverse-dns-lookup": reverse_dns_lookup_default,
47854
49462
  "bulk-domain-checker": bulk_domain_checker_default,
49463
+ "domain-reputation": domain_reputation_default,
47855
49464
  "domain-search-with-suggestions": domain_search_with_suggestions_default,
47856
49465
  "domain-search": domain_search_default,
49466
+ "domain-typosquatting": domain_typosquatting_default,
47857
49467
  "subdomain-lookup": subdomain_lookup_default,
47858
49468
  "bulk-email-validation": bulk_email_validation_default,
47859
49469
  "email-checker": email_checker_default,
@@ -47936,7 +49546,7 @@ var SPECS = {
47936
49546
  "zip-codes-by-region": zip_codes_by_region_default,
47937
49547
  "zip-codes-radius-search": zip_codes_radius_search_default
47938
49548
  };
47939
- var SPEC_SLUGS = ["usage-credits", "commodity-fluctuation", "commodity-prices", "commodity-symbols", "commodity-time-series", "historical-commodity-prices", "currency-converter", "currency-fluctuation", "currency-historical-data-limit", "currency-rate", "currency-supported", "currency-symbols", "currency-time-series", "geolocalized-currency-conversion", "historical-currency-converter", "historical-currency-rate", "bulk-dns-lookup", "dns-history-lookup", "dns-lookup", "reverse-dns-lookup", "bulk-domain-checker", "domain-search-with-suggestions", "domain-search", "subdomain-lookup", "bulk-email-validation", "email-checker", "bulk-vat-rates-country", "financial-apis-supported-countries", "iban-validation", "swift-code-finder", "swift-code-lookup", "vat-number-validation", "vat-rates-by-ip", "vat-rates-country", "forward-geocoding", "reverse-geocoding", "administrative-units-details", "administrative-units-levels", "administrative-units", "cities", "countries-details", "countries", "flags-supported", "flags", "regions", "subregions", "bulk-ip-lookup", "bulk-ip-threat-intelligence", "ip-locator", "ip-threat-intelligence", "delete-pdf-page", "linearize-pdf", "merge-pdf", "pdf-compress", "pdf-decrypt", "pdf-encrypt", "pdf-extract-pages", "pdf-file-status", "pdf-file", "pdf-files", "pdf-generator-bulk", "pdf-generator", "pdf-resource-download", "pdf-resource-upload-binary", "pdf-resource-upload", "pdf-restrict", "pdf-task-status", "pdf-to-image", "pdf-unrestrict", "rotate-pdf-pages", "split-pdf", "bulk-phone-number-validation", "phone-validation", "web-scraper", "bulk-screenshot", "website-screenshot", "ssl-certificate-chain-lookup", "ssl-certificate-lookup", "timezone-converter", "timezone-lookup", "bulk-user-agent-parser", "user-agent-parser", "air-quality", "astronomy-data", "bulk-live-weather", "flood-forecast", "historical-weather", "live-weather", "marine-weather", "time-series-weather", "weather-forecast", "asn-lookup", "bulk-whois-lookup", "domain-whois-history-lookup", "reverse-whois", "whois-domain-lookup", "whois-ip-lookup", "bulk-zip-code-lookup", "zip-code-api", "zip-code-distance-match", "zip-code-distance", "zip-codes-by-city", "zip-codes-by-region", "zip-codes-radius-search"];
49549
+ var SPEC_SLUGS = ["usage-credits", "commodity-fluctuation", "commodity-prices", "commodity-symbols", "commodity-time-series", "historical-commodity-prices", "currency-converter", "currency-fluctuation", "currency-historical-data-limit", "currency-rate", "currency-supported", "currency-symbols", "currency-time-series", "geolocalized-currency-conversion", "historical-currency-converter", "historical-currency-rate", "bulk-dns-lookup", "dns-history-lookup", "dns-lookup", "reverse-dns-lookup", "bulk-domain-checker", "domain-reputation", "domain-search-with-suggestions", "domain-search", "domain-typosquatting", "subdomain-lookup", "bulk-email-validation", "email-checker", "bulk-vat-rates-country", "financial-apis-supported-countries", "iban-validation", "swift-code-finder", "swift-code-lookup", "vat-number-validation", "vat-rates-by-ip", "vat-rates-country", "forward-geocoding", "reverse-geocoding", "administrative-units-details", "administrative-units-levels", "administrative-units", "cities", "countries-details", "countries", "flags-supported", "flags", "regions", "subregions", "bulk-ip-lookup", "bulk-ip-threat-intelligence", "ip-locator", "ip-threat-intelligence", "delete-pdf-page", "linearize-pdf", "merge-pdf", "pdf-compress", "pdf-decrypt", "pdf-encrypt", "pdf-extract-pages", "pdf-file-status", "pdf-file", "pdf-files", "pdf-generator-bulk", "pdf-generator", "pdf-resource-download", "pdf-resource-upload-binary", "pdf-resource-upload", "pdf-restrict", "pdf-task-status", "pdf-to-image", "pdf-unrestrict", "rotate-pdf-pages", "split-pdf", "bulk-phone-number-validation", "phone-validation", "web-scraper", "bulk-screenshot", "website-screenshot", "ssl-certificate-chain-lookup", "ssl-certificate-lookup", "timezone-converter", "timezone-lookup", "bulk-user-agent-parser", "user-agent-parser", "air-quality", "astronomy-data", "bulk-live-weather", "flood-forecast", "historical-weather", "live-weather", "marine-weather", "time-series-weather", "weather-forecast", "asn-lookup", "bulk-whois-lookup", "domain-whois-history-lookup", "reverse-whois", "whois-domain-lookup", "whois-ip-lookup", "bulk-zip-code-lookup", "zip-code-api", "zip-code-distance-match", "zip-code-distance", "zip-codes-by-city", "zip-codes-by-region", "zip-codes-radius-search"];
47940
49550
  var SPECS_YAML = {
47941
49551
  "usage-credits": "openapi: 3.1.1\ninfo:\n title: Credits Usage API\n version: 1.0.0\n description: Retrieve the remaining and consumed API credit balances for the authenticated organization. Returns subscription-plan credits, subscription surcharge (overage) credits, and one-off credit purchases as separate balances, each with allowed and used counts. Only an organization admin API key can call this endpoint; all other keys receive a 403. There are no optional data modules for this endpoint \u2014 the response always includes the full credit breakdown.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Credits Usage API Server\npaths:\n /credits/usage/info:\n get:\n tags:\n - General APIs\n summary: Get remaining and consumed API credit balances for the organization\n description: Returns subscription, subscription-surcharge, and one-off credit balances for the authenticated organization's account.\n operationId: getCreditsUsage\n parameters:\n - name: format\n in: query\n required: false\n description: 'Format of the response. Possible values: json, xml.'\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n responses:\n '200':\n description: Successful response with credit balances\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/CreditsUsageResponse'\n examples:\n success:\n summary: Typical response\n value:\n apiKey: demo\n userStatus: active\n subActive: true\n subStatus: active\n subAllowedCredits: 10000\n subUsedCredits: 2500\n subSurchargeStatus: none\n subSurchargeAllowedCredits: 0\n subSurchargeUsedCredits: 0\n subSurchargeAllowed: false\n oneOffCreditsActive: true\n oneOffAllowedCredits: 5000\n oneOffUsedCredits: 1000\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '403':\n description: Forbidden \u2014 Caller is not an organization admin\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n notOrgAdmin:\n summary: Not an organization admin\n value:\n timestamp: '2026-07-27T10:23:16.548Z'\n path: /v1.0/credits/usage/info\n status: 403\n error: API Access Exception\n message: You need to be organization admin to access this endpoint.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n CreditsUsageResponse:\n type: object\n description: Credit balances for the organization's subscription, subscription surcharge, and one-off purchases.\n required:\n - apiKey\n - userStatus\n - oneOffCreditsActive\n - oneOffAllowedCredits\n - oneOffUsedCredits\n properties:\n apiKey:\n type: string\n description: The API key the credit balances belong to.\n userStatus:\n type: string\n enum:\n - active\n - inactive\n - deleted\n description: Status of the user account.\n subActive:\n type:\n - boolean\n - 'null'\n description: Whether a subscription plan is currently active. Null if the account has no subscription.\n subStatus:\n type:\n - string\n - 'null'\n enum:\n - active\n - overdue\n - cancelled\n - deactivated\n - null\n description: Status of the subscription credits. Null if the account has no subscription.\n subAllowedCredits:\n type:\n - integer\n - 'null'\n description: Total credits allowed under the subscription plan. Null if the account has no subscription.\n subUsedCredits:\n type:\n - integer\n - 'null'\n description: Credits consumed under the subscription plan. Null if the account has no subscription.\n subSurchargeStatus:\n type:\n - string\n - 'null'\n enum:\n - none\n - payment_added\n - payment_cleared\n - null\n description: Status of the subscription surcharge (overage) credits. Null if the account has no subscription.\n subSurchargeAllowedCredits:\n type:\n - integer\n - 'null'\n description: Total surcharge credits allowed. Null if the account has no subscription.\n subSurchargeUsedCredits:\n type:\n - integer\n - 'null'\n description: Surcharge credits consumed. Null if the account has no subscription.\n subSurchargeAllowed:\n type:\n - boolean\n - 'null'\n description: Whether surcharge (overage) usage is allowed on the subscription. Null if the account has no subscription.\n oneOffCreditsActive:\n type: boolean\n description: Whether the account has active one-off (pay-as-you-go) credits.\n oneOffAllowedCredits:\n type: integer\n description: Total one-off credits purchased.\n oneOffUsedCredits:\n type: integer\n description: One-off credits consumed.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
47942
49552
  "commodity-fluctuation": "openapi: 3.1.1\ninfo:\n title: 'Commodity Fluctuation API '\n version: 1.0.0\n description: Calculate price change and percentage movement for any commodity over a custom date range. Returns the opening price, closing price, absolute change, and percentage change for each symbol. Accepts one or more comma-separated commodity symbols with a start and end date in YYYY-MM-DD format. Returns a 400 error for invalid dates or a date range where start is after end, and a 404 error for unsupported symbols or a date range with no available data.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Commodity Fluctuation API Server\npaths:\n /commodity/fluctuation:\n get:\n tags:\n - Commodity APIs\n summary: Get commodity price fluctuations\n description: Returns price fluctuation metrics (start, end, change, percent change) for the requested commodity symbols over a date range.\n operationId: getCommodityFluctuation\n parameters:\n - name: format\n in: query\n required: false\n description: Response format. Currently only `json` is supported.\n schema:\n type: string\n default: json\n enum:\n - json\n - name: symbols\n in: query\n required: true\n description: Comma-separated list of commodity symbols.\n schema:\n type: string\n - name: startDate\n in: query\n required: true\n description: Start date in `YYYY-MM-DD` format.\n schema:\n type: string\n - name: endDate\n in: query\n required: true\n description: End date in `YYYY-MM-DD` format.\n schema:\n type: string\n responses:\n '200':\n description: Successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/CommodityFluctuationResponse'\n examples:\n success:\n summary: Successful response\n value:\n success: true\n startDate: '2024-01-01'\n endDate: '2024-01-31'\n rates:\n WTIOIL-SPOT:\n startRate: 72.02\n endRate: 75.81\n change: 3.79\n changePercent: 5.26\n XAU:\n startRate: 2063.63\n endRate: 2039.83\n change: -23.8\n changePercent: -1.15\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '400':\n description: Bad Request \u2014 Missing parameters or invalid dates\n content:\n application/json:\n examples:\n missingSymbols:\n summary: Missing required symbols parameter\n value:\n error: Invalid Param Exception\n message: please pass correct parameters\n path: /v1.0/commodity/fluctuation\n status: 400\n timestamp: '2026-07-27T11:37:24.273Z'\n invalidDateFormat:\n summary: Date is not in YYYY-MM-DD format\n value:\n timestamp: '2026-07-27T11:37:22.687Z'\n path: /rates/fluctuation\n code: 400\n error: VALIDATION_ERROR\n message: Invalid Date Format (YYYY-MM-DD).\n dateNotExist:\n summary: Date does not exist on the calendar (e.g. Feb 30)\n value:\n timestamp: '2026-07-27T11:37:33.565Z'\n path: /rates/fluctuation\n code: 400\n error: VALIDATION_ERROR\n message: 'Invalid Date: The provided start date or end date does not exist.'\n startAfterEnd:\n summary: startDate is after endDate\n value:\n timestamp: '2026-07-27T11:37:23.206Z'\n path: /rates/fluctuation\n code: 400\n error: VALIDATION_ERROR\n message: Start date cannot be after end date\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '404':\n description: Not found - Symbol or data not available\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n symbolNotFound:\n summary: Symbol Not Found\n value:\n timestamp: '2026-07-27T11:37:23.759Z'\n path: /rates/fluctuation\n code: 404\n error: SYMBOL_NOT_FOUND\n message: The symbol is not supported, please visit the documentation for a list of supported symbols\n noData:\n summary: No data available for the given date range\n value:\n timestamp: '2026-07-27T11:37:34.167Z'\n path: /rates/fluctuation\n code: 404\n error: DATA_NOT_FOUND\n message: No data found for the given date range\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n CommodityFluctuationResponse:\n type: object\n required:\n - success\n - startDate\n - endDate\n - rates\n properties:\n success:\n type: boolean\n description: '`true` for successful requests.'\n startDate:\n type: string\n description: Start date of the interval (YYYY-MM-DD).\n endDate:\n type: string\n description: End date of the interval (YYYY-MM-DD).\n rates:\n $ref: '#/components/schemas/CommodityFluctuationRates'\n description: Commodity fluctuation response containing price change data per symbol over a date range.\n CommodityFluctuationRates:\n type: object\n description: Map of requested commodity symbols to their fluctuation metrics. Each key is a commodity symbol (e.g. XAU).\n additionalProperties:\n title: CommodityFluctuationItem\n type: object\n description: Fluctuation metrics for a single commodity over a date range.\n required:\n - startRate\n - endRate\n - change\n - changePercent\n properties:\n startRate:\n type: number\n format: float\n description: Price of the commodity on the start date.\n endRate:\n type: number\n format: float\n description: Price of the commodity on the end date.\n change:\n type: number\n format: float\n description: Absolute price difference between end and start dates. May be negative.\n changePercent:\n type: number\n format: float\n description: Percentage price change from start to end date. May be negative.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests. Gateway-level validation errors populate status; commodity-service errors (date/symbol/data validation) populate code instead \u2014 check whichever is present.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type (e.g., Invalid Param Exception, VALIDATION_ERROR, SYMBOL_NOT_FOUND, DATA_NOT_FOUND).\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path (gateway errors) or internal service path (commodity-service errors) that produced the error.\n status:\n type: integer\n description: HTTP status code. Present on gateway-level errors.\n code:\n type: integer\n description: HTTP status code. Present on commodity-service errors instead of status.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
@@ -49879,6 +51489,905 @@ components:
49879
51489
  security:
49880
51490
  - ApiKeyAuthHeader: []
49881
51491
  - ApiKeyAuthQuery: []
51492
+ `,
51493
+ "domain-reputation": `openapi: 3.1.1
51494
+ info:
51495
+ title: Domain Reputation API - Real-Time Risk Verdict, Trust Score, DGA Detection, and Threat Intelligence for Any Domain
51496
+ version: 1.0.0
51497
+ description: Assess any domain and get a synthesized risk verdict, a weighted trust score, DGA detection, threat intelligence matches, and a full email deliverability check in one call. Every score carries the evidence behind it, and partial data is called out in errors rather than silently dropped. Built for fraud screening, phishing triage, email vetting, brand protection, and threat intel enrichment.
51498
+ contact:
51499
+ name: APIFreaks Support
51500
+ url: https://apifreaks.com/contact
51501
+ email: support@apifreaks.com
51502
+ servers:
51503
+ - url: https://api.apifreaks.com/v1.0
51504
+ description: Domain Reputation API Server
51505
+ paths:
51506
+ /domain/reputation:
51507
+ get:
51508
+ tags:
51509
+ - Domain APIs
51510
+ summary: Get a real-time risk verdict, trust score, and threat intelligence for any domain.
51511
+ description: The Domain Reputation API assesses a domain and returns a risk verdict, trust score, DGA detection results, threat intelligence matches, email deliverability analysis, and evidence summary. Partial data is flagged in the errors array rather than silently dropped.
51512
+ parameters:
51513
+ - name: format
51514
+ in: query
51515
+ required: false
51516
+ schema:
51517
+ type: string
51518
+ enum:
51519
+ - json
51520
+ - xml
51521
+ default: json
51522
+ description: Format of the response.
51523
+ - name: domainName
51524
+ in: query
51525
+ required: true
51526
+ schema:
51527
+ type: string
51528
+ description: The domain name to assess (e.g. example.com). Must contain at least one dot and be at most 253 characters. Automatically lowercased.
51529
+ responses:
51530
+ '200':
51531
+ description: Success
51532
+ content:
51533
+ application/json:
51534
+ schema:
51535
+ $ref: '#/components/schemas/DomainReputationResponse'
51536
+ examples:
51537
+ success:
51538
+ summary: Safe domain (apple.com)
51539
+ value:
51540
+ input:
51541
+ domain: apple.com
51542
+ assessed_at: '2026-09-08T08:36:23.820181075Z'
51543
+ version: 1.0.0
51544
+ processing_time_ms: 1739
51545
+ risk_category:
51546
+ verdict: safe
51547
+ confidence: 0.8
51548
+ primary_threat: null
51549
+ severity: none
51550
+ threat_types: []
51551
+ sources: []
51552
+ pivot_matches: []
51553
+ dga_score:
51554
+ score: 0
51555
+ is_dga: false
51556
+ model: deterministic_features_v1
51557
+ features:
51558
+ domain_length: 5
51559
+ vowel_consonant_ratio: 0.6666666666666666
51560
+ ngram_perplexity: -8.83
51561
+ shannon_entropy: 1.9219280948873623
51562
+ digit_letter_ratio: 0
51563
+ consonant_streak_max: 3
51564
+ tld_in_known_dga_set: false
51565
+ interpretation: human_readable
51566
+ trust_signals:
51567
+ trust_score: 72
51568
+ trust_band: high
51569
+ signals:
51570
+ positive:
51571
+ - code: spf_configured
51572
+ weight: 5
51573
+ polarity: positive
51574
+ category: email_security
51575
+ evidence: SPF record found
51576
+ confidence: 1
51577
+ - code: dmarc_present
51578
+ weight: 5
51579
+ polarity: positive
51580
+ category: email_security
51581
+ evidence: DMARC record present
51582
+ confidence: 1
51583
+ - code: established_domain
51584
+ weight: 10
51585
+ polarity: positive
51586
+ category: domain_age
51587
+ evidence: Domain age > 2 years
51588
+ confidence: 1
51589
+ - code: mature_domain
51590
+ weight: 5
51591
+ polarity: positive
51592
+ category: domain_age
51593
+ evidence: Domain age > 5 years
51594
+ confidence: 1
51595
+ - code: paid_ssl
51596
+ weight: 5
51597
+ polarity: positive
51598
+ category: ssl_certificate
51599
+ evidence: Uses paid SSL certificate
51600
+ confidence: 0.9
51601
+ - code: valid_ssl
51602
+ weight: 3
51603
+ polarity: positive
51604
+ category: ssl_certificate
51605
+ evidence: Valid SSL certificate
51606
+ confidence: 1
51607
+ negative:
51608
+ - code: privacy_whois
51609
+ weight: 1
51610
+ polarity: negative
51611
+ category: whois_privacy
51612
+ evidence: WHOIS information is privacy-protected
51613
+ confidence: 0.9
51614
+ - code: external_redirect
51615
+ weight: 10
51616
+ polarity: negative
51617
+ category: content_analysis
51618
+ evidence: Site redirects visitors to an external domain
51619
+ confidence: 0.8
51620
+ neutral: []
51621
+ indicators:
51622
+ is_newly_registered: false
51623
+ uses_free_extension: false
51624
+ uses_free_ssl: false
51625
+ has_privacy_whois: true
51626
+ ssl_age_days: 26
51627
+ has_dmarc: true
51628
+ has_spf: true
51629
+ redirects_externally: true
51630
+ javascript_obfuscated: false
51631
+ domain_age_days: 14446
51632
+ registrar: NOM-IQ Ltd dba Com Laude
51633
+ email_deliverability:
51634
+ score: 95
51635
+ grade: excellent
51636
+ can_receive_email: true
51637
+ authentication:
51638
+ spf:
51639
+ present: true
51640
+ policy: ~all
51641
+ record: v=spf1 include:_spf.apple.com include:_spf-txn.apple.com ~all
51642
+ dkim:
51643
+ found: true
51644
+ selectors_found:
51645
+ - selector1
51646
+ - selector2
51647
+ providers_detected: []
51648
+ note: Only common selectors are probed; a domain may use a custom selector
51649
+ dmarc:
51650
+ present: true
51651
+ policy: quarantine
51652
+ reporting_configured: true
51653
+ infrastructure:
51654
+ mx_count: 6
51655
+ mx_records:
51656
+ - mx-in-ma.apple.com.
51657
+ - mx-in.g.apple.com.
51658
+ - mx-in-rn.apple.com.
51659
+ - mx-in-sg.apple.com.
51660
+ - mx-in-hfd.apple.com.
51661
+ - mx-in-vib.apple.com.
51662
+ mx_provider: self_hosted
51663
+ null_mx: false
51664
+ reputation:
51665
+ spam_blacklisted: false
51666
+ newly_registered: false
51667
+ domain_age_days: 14446
51668
+ issues:
51669
+ - code: spf_softfail
51670
+ severity: low
51671
+ message: The SPF policy '~all' only soft-fails unauthorized senders
51672
+ recommendation: Move to '-all' once all legitimate sending sources are listed
51673
+ intelligence:
51674
+ ioc_type: domain
51675
+ ioc_value: apple.com
51676
+ related_iocs:
51677
+ - type: ipv4
51678
+ value: 17.253.144.10
51679
+ confidence: 0.9
51680
+ - type: ipv6
51681
+ value: 2620:149:af0:0:0:0:0:10
51682
+ confidence: 0.9
51683
+ feed_tags:
51684
+ - verdict:safe
51685
+ - severity:none
51686
+ - ns:d.ns.apple.com.
51687
+ - ns:b.ns.apple.com.
51688
+ - ns:c.ns.apple.com.
51689
+ - ns:a.ns.apple.com.
51690
+ - mx:mx-in-ma.apple.com.
51691
+ - mx:mx-in.g.apple.com.
51692
+ - mx:mx-in-rn.apple.com.
51693
+ - mx:mx-in-sg.apple.com.
51694
+ - mx:mx-in-hfd.apple.com.
51695
+ - mx:mx-in-vib.apple.com.
51696
+ stix_pattern: '[domain-name:value = ''apple.com'' OR ipv4-addr:value = ''17.253.144.10'' OR ipv6-addr:value = ''2620:149:af0:0:0:0:0:10'']'
51697
+ recommended_action: allow
51698
+ first_seen: null
51699
+ last_seen: null
51700
+ evidence_summary:
51701
+ why_flagged: []
51702
+ errors: []
51703
+ partialData:
51704
+ summary: Partial data (WHOIS lookup failed)
51705
+ value:
51706
+ input:
51707
+ domain: apifreaks.com
51708
+ risk_category:
51709
+ verdict: safe
51710
+ confidence: 0.7
51711
+ severity: none
51712
+ trust_signals:
51713
+ trust_score: 70
51714
+ trust_band: high
51715
+ indicators:
51716
+ is_newly_registered: null
51717
+ has_privacy_whois: null
51718
+ domain_age_days: null
51719
+ registrar: null
51720
+ errors:
51721
+ - WHOIS lookup failed
51722
+ headers:
51723
+ X-AF-Credits-Cost:
51724
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51725
+ '400':
51726
+ description: Bad Request \u2013 Invalid or missing domainName parameter
51727
+ content:
51728
+ application/json:
51729
+ schema:
51730
+ $ref: '#/components/schemas/ErrorResponse'
51731
+ examples:
51732
+ invalidDomain:
51733
+ summary: Invalid domain parameter
51734
+ value:
51735
+ error: Invalid Domain Exception
51736
+ message: Please provide a valid domain name in the "domainName" parameter.
51737
+ path: /v1.0/domain/reputation
51738
+ status: 400
51739
+ timestamp: '2026-09-08T12:00:00.000Z'
51740
+ missingDomain:
51741
+ summary: Missing domainName parameter
51742
+ value:
51743
+ error: Invalid Param Exception
51744
+ message: Please provide a valid domain name in the "domainName" parameter.
51745
+ path: /v1.0/domain/reputation
51746
+ status: 400
51747
+ timestamp: '2026-09-08T12:00:00.000Z'
51748
+ headers:
51749
+ X-AF-Credits-Cost:
51750
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51751
+ '503':
51752
+ description: Service Unavailable \u2013 The assessment service is temporarily unavailable
51753
+ content:
51754
+ application/json:
51755
+ schema:
51756
+ $ref: '#/components/schemas/ErrorResponse'
51757
+ examples:
51758
+ serviceUnavailable:
51759
+ summary: Service Unavailable
51760
+ value:
51761
+ error: Service Unavailable
51762
+ message: 'Service is unavailable. Please try after some time. [For Technical Support email at: support@apifreaks.com]'
51763
+ path: /v1.0/domain/reputation
51764
+ status: 503
51765
+ timestamp: '2026-09-08T12:00:00.000Z'
51766
+ headers:
51767
+ X-AF-Credits-Cost:
51768
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51769
+ operationId: getDomainReputation
51770
+ components:
51771
+ securitySchemes:
51772
+ ApiKeyAuthHeader:
51773
+ type: apiKey
51774
+ in: header
51775
+ name: X-apiKey
51776
+ description: Pass your API key via the X-apiKey request header.
51777
+ ApiKeyAuthQuery:
51778
+ type: apiKey
51779
+ in: query
51780
+ name: apiKey
51781
+ description: Pass your API key via the apiKey query parameter.
51782
+ schemas:
51783
+ DomainReputationResponse:
51784
+ type: object
51785
+ required:
51786
+ - input
51787
+ - assessed_at
51788
+ - version
51789
+ - processing_time_ms
51790
+ - risk_category
51791
+ - dga_score
51792
+ - trust_signals
51793
+ - email_deliverability
51794
+ - intelligence
51795
+ - evidence_summary
51796
+ - errors
51797
+ properties:
51798
+ input:
51799
+ type: object
51800
+ required:
51801
+ - domain
51802
+ properties:
51803
+ domain:
51804
+ type: string
51805
+ description: Domain name being analyzed.
51806
+ description: Input object containing the analyzed domain.
51807
+ assessed_at:
51808
+ type: string
51809
+ description: Timestamp when the assessment was performed (YYYY-MM-DDTHH:mm:ssZ).
51810
+ version:
51811
+ type: string
51812
+ description: API / response schema version.
51813
+ processing_time_ms:
51814
+ type: integer
51815
+ description: Time taken to process the request, in milliseconds.
51816
+ risk_category:
51817
+ $ref: '#/components/schemas/RiskCategory'
51818
+ dga_score:
51819
+ $ref: '#/components/schemas/DgaScore'
51820
+ trust_signals:
51821
+ $ref: '#/components/schemas/TrustSignals'
51822
+ email_deliverability:
51823
+ $ref: '#/components/schemas/EmailDeliverability'
51824
+ intelligence:
51825
+ $ref: '#/components/schemas/Intelligence'
51826
+ evidence_summary:
51827
+ $ref: '#/components/schemas/EvidenceSummary'
51828
+ errors:
51829
+ type: array
51830
+ items:
51831
+ type: string
51832
+ description: List of errors encountered during processing, if any (e.g. "WHOIS lookup failed"). An empty array means every signal resolved.
51833
+ description: Full domain reputation assessment response.
51834
+ RiskCategory:
51835
+ type: object
51836
+ required:
51837
+ - verdict
51838
+ - confidence
51839
+ - primary_threat
51840
+ - severity
51841
+ - threat_types
51842
+ - sources
51843
+ - pivot_matches
51844
+ properties:
51845
+ verdict:
51846
+ type: string
51847
+ enum:
51848
+ - safe
51849
+ - suspicious
51850
+ description: Final verdict of the risk assessment.
51851
+ confidence:
51852
+ type: number
51853
+ format: float
51854
+ description: Confidence score for the verdict (0-1).
51855
+ primary_threat:
51856
+ type:
51857
+ - string
51858
+ - 'null'
51859
+ description: Main threat type identified (e.g. phishing). null when no threat was identified.
51860
+ severity:
51861
+ type: string
51862
+ enum:
51863
+ - none
51864
+ - low
51865
+ - medium
51866
+ - high
51867
+ description: Severity level of the risk.
51868
+ threat_types:
51869
+ type: array
51870
+ items:
51871
+ type: string
51872
+ description: List of threat types associated with the domain.
51873
+ sources:
51874
+ type: array
51875
+ items:
51876
+ $ref: '#/components/schemas/ThreatSource'
51877
+ description: Threat intelligence sources that flagged the domain. Empty when nothing flagged it.
51878
+ pivot_matches:
51879
+ type: array
51880
+ items:
51881
+ $ref: '#/components/schemas/PivotMatch'
51882
+ description: Related pivots (nameserver, email, etc.) linked to known threats.
51883
+ description: Overall risk assessment for the domain.
51884
+ ThreatSource:
51885
+ type: object
51886
+ required:
51887
+ - source
51888
+ - indicator
51889
+ - threat_type
51890
+ - confidence
51891
+ - first_seen
51892
+ - last_seen
51893
+ properties:
51894
+ source:
51895
+ type: string
51896
+ description: Name of the threat intelligence source (e.g. Spamhaus).
51897
+ indicator:
51898
+ type: string
51899
+ description: Indicator matched by this source.
51900
+ threat_type:
51901
+ type: string
51902
+ description: Threat type reported by this source.
51903
+ confidence:
51904
+ type: number
51905
+ format: float
51906
+ description: Confidence score from this source (0-1).
51907
+ first_seen:
51908
+ type: string
51909
+ description: First time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
51910
+ last_seen:
51911
+ type: string
51912
+ description: Last time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
51913
+ description: A threat intelligence source that flagged the domain.
51914
+ PivotMatch:
51915
+ type: object
51916
+ required:
51917
+ - pivot
51918
+ - pivot_type
51919
+ - total_related_threats
51920
+ - confidence
51921
+ properties:
51922
+ pivot:
51923
+ type: string
51924
+ description: Pivot value (e.g. a nameserver or email address).
51925
+ pivot_type:
51926
+ type: string
51927
+ description: Type of pivot.
51928
+ total_related_threats:
51929
+ type: integer
51930
+ description: Total number of threats related to this pivot.
51931
+ confidence:
51932
+ type: number
51933
+ format: float
51934
+ description: Confidence score for the pivot match (0-1).
51935
+ description: A related pivot linked to known threats.
51936
+ DgaScore:
51937
+ type: object
51938
+ required:
51939
+ - score
51940
+ - is_dga
51941
+ - model
51942
+ - features
51943
+ - interpretation
51944
+ properties:
51945
+ score:
51946
+ type: number
51947
+ format: float
51948
+ description: DGA likelihood score (0-1).
51949
+ is_dga:
51950
+ type: boolean
51951
+ description: Indicates whether the domain is likely DGA-generated.
51952
+ model:
51953
+ type: string
51954
+ description: Model used to compute the DGA score.
51955
+ features:
51956
+ $ref: '#/components/schemas/DgaFeatures'
51957
+ interpretation:
51958
+ type: string
51959
+ description: Human-readable interpretation of the DGA score.
51960
+ description: Domain Generation Algorithm (DGA) detection results.
51961
+ DgaFeatures:
51962
+ type: object
51963
+ required:
51964
+ - domain_length
51965
+ - vowel_consonant_ratio
51966
+ - ngram_perplexity
51967
+ - shannon_entropy
51968
+ - digit_letter_ratio
51969
+ - consonant_streak_max
51970
+ - tld_in_known_dga_set
51971
+ properties:
51972
+ domain_length:
51973
+ type: integer
51974
+ description: Length of the domain name.
51975
+ vowel_consonant_ratio:
51976
+ type: number
51977
+ format: float
51978
+ description: Ratio of vowels to consonants in the domain.
51979
+ ngram_perplexity:
51980
+ type: number
51981
+ format: float
51982
+ description: N-gram perplexity score of the domain string.
51983
+ shannon_entropy:
51984
+ type: number
51985
+ format: float
51986
+ description: Shannon entropy of the domain string.
51987
+ digit_letter_ratio:
51988
+ type: number
51989
+ format: float
51990
+ description: Ratio of digits to letters in the domain.
51991
+ consonant_streak_max:
51992
+ type: integer
51993
+ description: Maximum consecutive consonant streak in the domain.
51994
+ tld_in_known_dga_set:
51995
+ type: boolean
51996
+ description: Indicates if the TLD belongs to a known DGA set.
51997
+ description: Underlying lexical / statistical features used in DGA detection.
51998
+ TrustSignals:
51999
+ type: object
52000
+ required:
52001
+ - trust_score
52002
+ - trust_band
52003
+ - signals
52004
+ - indicators
52005
+ properties:
52006
+ trust_score:
52007
+ type: integer
52008
+ description: Overall trust score (0-100).
52009
+ trust_band:
52010
+ type: string
52011
+ description: Trust score band / category (e.g. low, medium, high).
52012
+ signals:
52013
+ $ref: '#/components/schemas/TrustScoreSignals'
52014
+ indicators:
52015
+ $ref: '#/components/schemas/TrustIndicators'
52016
+ description: Trust scoring and supporting signals for the domain.
52017
+ TrustScoreSignals:
52018
+ type: object
52019
+ required:
52020
+ - positive
52021
+ - negative
52022
+ - neutral
52023
+ properties:
52024
+ positive:
52025
+ type: array
52026
+ items:
52027
+ $ref: '#/components/schemas/TrustSignalItem'
52028
+ description: Signals that positively affect the trust score.
52029
+ negative:
52030
+ type: array
52031
+ items:
52032
+ $ref: '#/components/schemas/TrustSignalItem'
52033
+ description: Signals that negatively affect the trust score.
52034
+ neutral:
52035
+ type: array
52036
+ items:
52037
+ $ref: '#/components/schemas/TrustSignalItem'
52038
+ description: Signals that are neutral to the trust score.
52039
+ description: Signals contributing to the trust score.
52040
+ TrustSignalItem:
52041
+ type: object
52042
+ required:
52043
+ - code
52044
+ - weight
52045
+ - polarity
52046
+ - category
52047
+ - evidence
52048
+ - confidence
52049
+ properties:
52050
+ code:
52051
+ type: string
52052
+ description: Signal code identifier (e.g. valid_ssl, dmarc_missing).
52053
+ weight:
52054
+ type: integer
52055
+ description: Weight assigned to the signal.
52056
+ polarity:
52057
+ type: string
52058
+ enum:
52059
+ - positive
52060
+ - negative
52061
+ - neutral
52062
+ description: Polarity of the signal.
52063
+ category:
52064
+ type: string
52065
+ description: Category the signal belongs to (e.g. ssl_certificate).
52066
+ evidence:
52067
+ type: string
52068
+ description: Evidence supporting the signal.
52069
+ confidence:
52070
+ type: number
52071
+ format: float
52072
+ description: Confidence score for the signal (0-1).
52073
+ description: A single trust signal contributing to the trust score.
52074
+ TrustIndicators:
52075
+ type: object
52076
+ properties:
52077
+ is_newly_registered:
52078
+ type:
52079
+ - boolean
52080
+ - 'null'
52081
+ description: Indicates whether the domain was recently registered. null when WHOIS data is unavailable.
52082
+ uses_free_extension:
52083
+ type: boolean
52084
+ description: Indicates whether the domain uses a free TLD extension.
52085
+ uses_free_ssl:
52086
+ type: boolean
52087
+ description: Indicates whether the domain uses a free SSL certificate.
52088
+ has_privacy_whois:
52089
+ type:
52090
+ - boolean
52091
+ - 'null'
52092
+ description: Indicates whether WHOIS privacy protection is enabled. null when WHOIS data is unavailable.
52093
+ ssl_age_days:
52094
+ type:
52095
+ - integer
52096
+ - 'null'
52097
+ description: Age of the SSL certificate in days.
52098
+ has_dmarc:
52099
+ type: boolean
52100
+ description: Indicates whether a DMARC record exists.
52101
+ has_spf:
52102
+ type: boolean
52103
+ description: Indicates whether an SPF record exists.
52104
+ redirects_externally:
52105
+ type: boolean
52106
+ description: Indicates whether the domain redirects to an external site.
52107
+ javascript_obfuscated:
52108
+ type: boolean
52109
+ description: Indicates whether obfuscated JavaScript was detected.
52110
+ domain_age_days:
52111
+ type:
52112
+ - integer
52113
+ - 'null'
52114
+ description: Age of the domain in days. null when WHOIS data is unavailable.
52115
+ registrar:
52116
+ type:
52117
+ - string
52118
+ - 'null'
52119
+ description: Domain registrar name. null when WHOIS data is unavailable.
52120
+ description: Individual trust / risk indicators for the domain.
52121
+ EmailDeliverability:
52122
+ type: object
52123
+ required:
52124
+ - score
52125
+ - grade
52126
+ - can_receive_email
52127
+ - authentication
52128
+ - infrastructure
52129
+ - reputation
52130
+ - issues
52131
+ properties:
52132
+ score:
52133
+ type: integer
52134
+ description: Overall email deliverability score out of 100.
52135
+ grade:
52136
+ type: string
52137
+ description: Letter / word grade summarizing the deliverability score.
52138
+ can_receive_email:
52139
+ type: boolean
52140
+ description: Indicates whether the domain is configured to receive email.
52141
+ authentication:
52142
+ $ref: '#/components/schemas/EmailAuthentication'
52143
+ infrastructure:
52144
+ $ref: '#/components/schemas/EmailInfrastructure'
52145
+ reputation:
52146
+ $ref: '#/components/schemas/EmailReputation'
52147
+ issues:
52148
+ type: array
52149
+ items:
52150
+ $ref: '#/components/schemas/EmailIssue'
52151
+ description: List of detected email deliverability issues or misconfigurations.
52152
+ description: Assessment of the domain's ability to send and receive email reliably.
52153
+ EmailAuthentication:
52154
+ type: object
52155
+ required:
52156
+ - spf
52157
+ - dkim
52158
+ - dmarc
52159
+ properties:
52160
+ spf:
52161
+ $ref: '#/components/schemas/SpfRecord'
52162
+ dkim:
52163
+ $ref: '#/components/schemas/DkimRecord'
52164
+ dmarc:
52165
+ $ref: '#/components/schemas/DmarcRecord'
52166
+ description: Email authentication mechanisms configured for the domain.
52167
+ SpfRecord:
52168
+ type: object
52169
+ required:
52170
+ - present
52171
+ - policy
52172
+ - record
52173
+ properties:
52174
+ present:
52175
+ type: boolean
52176
+ description: Indicates whether an SPF record was found.
52177
+ policy:
52178
+ type: string
52179
+ description: SPF enforcement policy qualifier found in the record (e.g. ~all, -all).
52180
+ record:
52181
+ type: string
52182
+ description: Raw SPF DNS TXT record string.
52183
+ description: Sender Policy Framework configuration.
52184
+ DkimRecord:
52185
+ type: object
52186
+ required:
52187
+ - found
52188
+ - selectors_found
52189
+ - providers_detected
52190
+ - note
52191
+ properties:
52192
+ found:
52193
+ type: boolean
52194
+ description: Indicates whether a DKIM record was found for any probed selector.
52195
+ selectors_found:
52196
+ type: array
52197
+ items:
52198
+ type: string
52199
+ description: List of DKIM selectors for which a record was found.
52200
+ providers_detected:
52201
+ type: array
52202
+ items:
52203
+ type: string
52204
+ description: Email service providers inferred from the matched DKIM selectors.
52205
+ note:
52206
+ type: string
52207
+ description: Clarifying note about the limitations of DKIM selector probing.
52208
+ description: DomainKeys Identified Mail configuration.
52209
+ DmarcRecord:
52210
+ type: object
52211
+ required:
52212
+ - present
52213
+ - policy
52214
+ - reporting_configured
52215
+ properties:
52216
+ present:
52217
+ type: boolean
52218
+ description: Indicates whether a DMARC record was found.
52219
+ policy:
52220
+ type: string
52221
+ description: DMARC enforcement policy applied to failing messages (e.g. none, quarantine, reject).
52222
+ reporting_configured:
52223
+ type: boolean
52224
+ description: Indicates whether DMARC aggregate / forensic reporting addresses are configured.
52225
+ description: Domain-based Message Authentication, Reporting and Conformance configuration.
52226
+ EmailInfrastructure:
52227
+ type: object
52228
+ required:
52229
+ - mx_count
52230
+ - mx_records
52231
+ - mx_provider
52232
+ - null_mx
52233
+ properties:
52234
+ mx_count:
52235
+ type: integer
52236
+ description: Number of MX records found for the domain.
52237
+ mx_records:
52238
+ type: array
52239
+ items:
52240
+ type: string
52241
+ description: List of mail exchange server hostnames for the domain.
52242
+ mx_provider:
52243
+ type: string
52244
+ description: Email hosting provider inferred from the MX records.
52245
+ null_mx:
52246
+ type: boolean
52247
+ description: Indicates whether the domain explicitly declines email via a null MX record.
52248
+ description: Mail server infrastructure backing the domain.
52249
+ EmailReputation:
52250
+ type: object
52251
+ required:
52252
+ - spam_blacklisted
52253
+ - newly_registered
52254
+ properties:
52255
+ spam_blacklisted:
52256
+ type: boolean
52257
+ description: Indicates whether the domain appears on known spam blacklists.
52258
+ newly_registered:
52259
+ type: boolean
52260
+ description: Indicates whether the domain was registered recently.
52261
+ domain_age_days:
52262
+ type:
52263
+ - integer
52264
+ - 'null'
52265
+ description: Age of the domain in days since registration.
52266
+ description: Reputation and trust signals related to the domain's email sending history.
52267
+ EmailIssue:
52268
+ type: object
52269
+ properties:
52270
+ code:
52271
+ type: string
52272
+ description: Machine-readable code identifying the specific deliverability issue.
52273
+ severity:
52274
+ type: string
52275
+ description: Severity level assigned to the detected issue.
52276
+ message:
52277
+ type: string
52278
+ description: Human-readable explanation of the issue.
52279
+ recommendation:
52280
+ type: string
52281
+ description: Plain-language description of the exact fix to apply.
52282
+ description: A detected email deliverability issue or misconfiguration.
52283
+ Intelligence:
52284
+ type: object
52285
+ required:
52286
+ - ioc_type
52287
+ - ioc_value
52288
+ - related_iocs
52289
+ - feed_tags
52290
+ - stix_pattern
52291
+ - recommended_action
52292
+ - first_seen
52293
+ - last_seen
52294
+ properties:
52295
+ ioc_type:
52296
+ type: string
52297
+ description: Type of the indicator of compromise (e.g. domain).
52298
+ ioc_value:
52299
+ type: string
52300
+ description: Value of the indicator of compromise.
52301
+ related_iocs:
52302
+ type: array
52303
+ items:
52304
+ $ref: '#/components/schemas/RelatedIoc'
52305
+ description: Other IOCs related to this domain.
52306
+ feed_tags:
52307
+ type: array
52308
+ items:
52309
+ type: string
52310
+ description: Tags associated with this IOC from threat feeds.
52311
+ stix_pattern:
52312
+ type: string
52313
+ description: STIX 2.1 pattern representation of the IOC, ready to wrap into an Indicator object.
52314
+ recommended_action:
52315
+ type: string
52316
+ enum:
52317
+ - allow
52318
+ - monitor
52319
+ - block
52320
+ description: Recommended action based on the assessment.
52321
+ first_seen:
52322
+ type:
52323
+ - string
52324
+ - 'null'
52325
+ description: First time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
52326
+ last_seen:
52327
+ type:
52328
+ - string
52329
+ - 'null'
52330
+ description: Last time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
52331
+ description: Threat intelligence details for the indicator of compromise (IOC).
52332
+ RelatedIoc:
52333
+ type: object
52334
+ required:
52335
+ - type
52336
+ - value
52337
+ - confidence
52338
+ properties:
52339
+ type:
52340
+ type: string
52341
+ description: Type of the related IOC (e.g. ipv4, ipv6).
52342
+ value:
52343
+ type: string
52344
+ description: Value of the related IOC.
52345
+ confidence:
52346
+ type: number
52347
+ format: float
52348
+ description: Confidence score for the related IOC (0-1).
52349
+ description: A related indicator of compromise.
52350
+ EvidenceSummary:
52351
+ type: object
52352
+ required:
52353
+ - why_flagged
52354
+ properties:
52355
+ why_flagged:
52356
+ type: array
52357
+ items:
52358
+ type: string
52359
+ description: List of reasons why the domain was flagged. Empty for a clean domain.
52360
+ description: Summary of reasons behind the risk assessment.
52361
+ ErrorResponse:
52362
+ type: object
52363
+ description: Standard error envelope returned by the API on failed requests.
52364
+ required:
52365
+ - message
52366
+ properties:
52367
+ error:
52368
+ type: string
52369
+ description: Short error category or exception type.
52370
+ message:
52371
+ type: string
52372
+ description: Human-readable error message describing the failure.
52373
+ path:
52374
+ type: string
52375
+ description: API endpoint path that produced the error.
52376
+ status:
52377
+ type: integer
52378
+ description: HTTP status code returned with the error.
52379
+ timestamp:
52380
+ type: string
52381
+ format: date-time
52382
+ description: Timestamp when the error occurred (ISO 8601).
52383
+ headers:
52384
+ X-AF-Credits-Cost:
52385
+ description: Specifies the number of credits consumed by the current request.
52386
+ schema:
52387
+ type: integer
52388
+ security:
52389
+ - ApiKeyAuthHeader: []
52390
+ - ApiKeyAuthQuery: []
49882
52391
  `,
49883
52392
  "domain-search-with-suggestions": `openapi: 3.1.1
49884
52393
  info:
@@ -50254,10 +52763,861 @@ components:
50254
52763
  security:
50255
52764
  - ApiKeyAuthHeader: []
50256
52765
  - ApiKeyAuthQuery: []
52766
+ `,
52767
+ "domain-typosquatting": `openapi: 3.1.1
52768
+ info:
52769
+ title: Domain Typosquatting API - Find Typo and Look-Alike Domains for Brand Protection and Phishing Discovery
52770
+ version: 1.0.0
52771
+ description: Search for registered domains that read like typo variants of a brand keyword, or that match a wildcard pattern, across the full TLD set. Each match returns what is available of its registration date, expiry date, last-seen date, and drop status, paginated at 100 domains per page. Built for brand and trademark protection, phishing discovery, scheduled monitoring, and domain reclaim.
52772
+ contact:
52773
+ name: APIFreaks Support
52774
+ url: https://apifreaks.com/contact
52775
+ email: support@apifreaks.com
52776
+ servers:
52777
+ - url: https://api.apifreaks.com/v1.0
52778
+ description: Domain Typosquatting API Server
52779
+ paths:
52780
+ /domain/typosquatting:
52781
+ get:
52782
+ tags:
52783
+ - Domain APIs
52784
+ summary: Find registered typo-variant or wildcard-pattern domains for a brand keyword.
52785
+ description: The Domain Typosquatting API searches for registered domains that are typo or look-alike variants of a brand keyword, or that match a wildcard pattern. Results include registration lifecycle data and drop status across 1529+ TLDs, paginated at 100 domains per page.
52786
+ parameters:
52787
+ - name: format
52788
+ in: query
52789
+ required: false
52790
+ schema:
52791
+ type: string
52792
+ enum:
52793
+ - json
52794
+ - xml
52795
+ default: json
52796
+ description: Format of the response.
52797
+ - name: keyword
52798
+ in: query
52799
+ required: false
52800
+ schema:
52801
+ type: string
52802
+ minLength: 3
52803
+ maxLength: 63
52804
+ description: Brand or label to find typo variants for. 3-63 characters, letters, digits, or hyphens, a single label with no dots. Case-insensitive. Use either keyword or pattern, never both.
52805
+ - name: pattern
52806
+ in: query
52807
+ required: false
52808
+ schema:
52809
+ type: string
52810
+ minLength: 3
52811
+ maxLength: 63
52812
+ description: Wildcard search string that combines fuzzy matching with * wildcards. 3-63 characters total, * is the only supported wildcard and each one matches zero or more characters, maximum 3 asterisks per request. Use either keyword or pattern, never both.
52813
+ - name: pageToken
52814
+ in: query
52815
+ required: false
52816
+ schema:
52817
+ type: string
52818
+ description: Token from nextPageToken in the previous response. Required to retrieve page 2 and onward. The original keyword or pattern must be passed alongside the token on every page request. Results page at 100 domains per page.
52819
+ responses:
52820
+ '200':
52821
+ description: Success
52822
+ content:
52823
+ application/json:
52824
+ schema:
52825
+ $ref: '#/components/schemas/DomainTyposquattingResponse'
52826
+ examples:
52827
+ keywordSuccess:
52828
+ summary: Keyword search (paypal)
52829
+ value:
52830
+ status: true
52831
+ totalRecords: 1284
52832
+ currentPage: 1
52833
+ hasNextPage: true
52834
+ totalPages: 13
52835
+ nextPageToken: <opaque_token>
52836
+ domains:
52837
+ - domainName: p-aypal.com
52838
+ createDate: '2025-04-17'
52839
+ expiryDate: '2026-04-17'
52840
+ lastSeen: '2026-05-29'
52841
+ isDropped: true
52842
+ - domainName: p-aypal.de
52843
+ lastSeen: '2024-07-11'
52844
+ isDropped: true
52845
+ - domainName: p0aypal.com
52846
+ createDate: '2017-12-29'
52847
+ expiryDate: '2026-12-29'
52848
+ lastSeen: '2026-08-18'
52849
+ isDropped: false
52850
+ - domainName: p7ypal.com
52851
+ isDropped: true
52852
+ - domainName: pa-pal.club
52853
+ createDate: '2019-10-25'
52854
+ expiryDate: '2020-10-25'
52855
+ isDropped: false
52856
+ patternSuccess:
52857
+ summary: Wildcard pattern search (*paypal*)
52858
+ value:
52859
+ status: true
52860
+ totalRecords: 5471
52861
+ currentPage: 1
52862
+ hasNextPage: true
52863
+ totalPages: 55
52864
+ nextPageToken: <opaque_token>
52865
+ domains:
52866
+ - domainName: paypal-support.com
52867
+ createDate: '2024-11-02'
52868
+ expiryDate: '2026-11-02'
52869
+ lastSeen: '2026-08-30'
52870
+ isDropped: false
52871
+ - domainName: login-paypal.net
52872
+ lastSeen: '2025-12-14'
52873
+ isDropped: true
52874
+ emptyResult:
52875
+ summary: No matches found
52876
+ value:
52877
+ status: true
52878
+ totalRecords: 0
52879
+ currentPage: 1
52880
+ hasNextPage: false
52881
+ totalPages: 0
52882
+ domains: []
52883
+ headers:
52884
+ X-AF-Credits-Cost:
52885
+ $ref: '#/components/headers/X-AF-Credits-Cost'
52886
+ '400':
52887
+ description: Bad Request \u2013 Invalid parameters
52888
+ content:
52889
+ application/json:
52890
+ schema:
52891
+ $ref: '#/components/schemas/ErrorResponse'
52892
+ examples:
52893
+ shortPattern:
52894
+ summary: Pattern has too few non-wildcard characters
52895
+ value:
52896
+ error: Invalid Pattern Exception
52897
+ message: The pattern must contain at least 5 non-wildcard characters and no more than 3 wildcards.
52898
+ path: /v1.0/domain/typosquatting
52899
+ status: 400
52900
+ timestamp: '2026-09-08T12:00:00.000Z'
52901
+ bothParams:
52902
+ summary: Both keyword and pattern supplied
52903
+ value:
52904
+ error: Invalid Param Exception
52905
+ message: Use either the "keyword" or the "pattern" parameter, never both.
52906
+ path: /v1.0/domain/typosquatting
52907
+ status: 400
52908
+ timestamp: '2026-09-08T12:00:00.000Z'
52909
+ missingParam:
52910
+ summary: Neither keyword nor pattern supplied
52911
+ value:
52912
+ error: Invalid Param Exception
52913
+ message: Please provide either a "keyword" or a "pattern" parameter.
52914
+ path: /v1.0/domain/typosquatting
52915
+ status: 400
52916
+ timestamp: '2026-09-08T12:00:00.000Z'
52917
+ headers:
52918
+ X-AF-Credits-Cost:
52919
+ $ref: '#/components/headers/X-AF-Credits-Cost'
52920
+ operationId: getDomainTyposquatting
52921
+ components:
52922
+ securitySchemes:
52923
+ ApiKeyAuthHeader:
52924
+ type: apiKey
52925
+ in: header
52926
+ name: X-apiKey
52927
+ description: Pass your API key via the X-apiKey request header.
52928
+ ApiKeyAuthQuery:
52929
+ type: apiKey
52930
+ in: query
52931
+ name: apiKey
52932
+ description: Pass your API key via the apiKey query parameter.
52933
+ schemas:
52934
+ DomainTyposquattingResponse:
52935
+ type: object
52936
+ required:
52937
+ - status
52938
+ - totalRecords
52939
+ - currentPage
52940
+ - hasNextPage
52941
+ - totalPages
52942
+ - domains
52943
+ properties:
52944
+ status:
52945
+ type: boolean
52946
+ description: Indicates if the request was successful.
52947
+ totalRecords:
52948
+ type: integer
52949
+ description: Total number of domains found.
52950
+ currentPage:
52951
+ type: integer
52952
+ description: Page number of the current response. Starts at 1.
52953
+ hasNextPage:
52954
+ type: boolean
52955
+ description: true if at least one additional page is available.
52956
+ totalPages:
52957
+ type: integer
52958
+ description: Total number of pages available.
52959
+ nextPageToken:
52960
+ type: string
52961
+ description: Opaque token to pass as pageToken on the next request. Present only when hasNextPage is true.
52962
+ domains:
52963
+ type: array
52964
+ items:
52965
+ $ref: '#/components/schemas/DomainItem'
52966
+ description: List of typo-variant or pattern-matched domains on the current page.
52967
+ description: Paginated response containing typo-variant or pattern-matched domains.
52968
+ DomainItem:
52969
+ type: object
52970
+ required:
52971
+ - domainName
52972
+ - isDropped
52973
+ properties:
52974
+ domainName:
52975
+ type: string
52976
+ description: Domain name.
52977
+ createDate:
52978
+ type: string
52979
+ description: Domain creation date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries.
52980
+ expiryDate:
52981
+ type: string
52982
+ description: Domain expiration date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries.
52983
+ lastSeen:
52984
+ type: string
52985
+ description: Last time the domain was observed (YYYY-MM-DD). One of the two fields reliably meaningful across a full result set.
52986
+ isDropped:
52987
+ type: boolean
52988
+ description: Indicates whether the domain has dropped out of the registry and become available to register again.
52989
+ description: A single typo-variant or pattern-matched domain with registration lifecycle data.
52990
+ ErrorResponse:
52991
+ type: object
52992
+ description: Standard error envelope returned by the API on failed requests.
52993
+ required:
52994
+ - message
52995
+ properties:
52996
+ error:
52997
+ type: string
52998
+ description: Short error category or exception type.
52999
+ message:
53000
+ type: string
53001
+ description: Human-readable error message describing the failure.
53002
+ path:
53003
+ type: string
53004
+ description: API endpoint path that produced the error.
53005
+ status:
53006
+ type: integer
53007
+ description: HTTP status code returned with the error.
53008
+ timestamp:
53009
+ type: string
53010
+ format: date-time
53011
+ description: Timestamp when the error occurred (ISO 8601).
53012
+ headers:
53013
+ X-AF-Credits-Cost:
53014
+ description: Specifies the number of credits consumed by the current request.
53015
+ schema:
53016
+ type: integer
53017
+ security:
53018
+ - ApiKeyAuthHeader: []
53019
+ - ApiKeyAuthQuery: []
50257
53020
  `,
50258
53021
  "subdomain-lookup": "openapi: 3.1.1\ninfo:\n title: Subdomain Finder API - Discover Active, Inactive & Historical Subdomains\n version: 1.0.0\n description: Retrieve subdomains related to a given domain name. Returns paginated results with subdomain details including first seen and last seen dates. Supports filtering by date range, status (active/inactive), and pagination with configurable page numbers.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Subdomain Lookup API Server\npaths:\n /subdomains/lookup:\n get:\n tags:\n - Domain APIs\n summary: Get subdomains related to the given domain name.\n description: The Subdomain Lookup API is designed to retrieve subdomains related to the given domain name. It helps you explore subdomains that are available for registration or usage.\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n description: Format of the response.\n - name: domain\n in: query\n required: true\n schema:\n type: string\n description: Domain name for availability and suggestions.\n - name: after\n in: query\n required: false\n schema:\n type: string\n format: date\n description: Filter subdomains seen after this date (format YYYY-MM-DD).\n - name: before\n in: query\n required: false\n schema:\n type: string\n format: date\n description: Filter subdomains seen before this date( format YYYY-MM-DD).\n - name: status\n in: query\n required: false\n schema:\n type: string\n enum:\n - active\n - inactive\n default: active\n description: Filter subdomains by status (active or inactive).\n - name: page\n in: query\n required: false\n schema:\n type: integer\n default: 1\n description: Page number for paginated results.\n responses:\n '200':\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/SubDomainResponse'\n examples:\n success:\n summary: Successful response\n value:\n domain: google.com\n status: true\n query_time: '2026-07-27T12:22:26.954268895'\n current_page: 1\n total_pages: 1543\n total_records: 154233\n subdomains:\n - subdomain: 49qq1sm.sites.google.com\n first_seen: '2024-03-03'\n last_seen: '2026-06-18'\n - subdomain: tvgkp5.feedproxy.ghs.google.com\n last_seen: '2026-07-04'\n - subdomain: www.reusablesec.sites.google.com\n first_seen: '2020-02-18'\n last_seen: '2026-06-20'\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '400':\n description: Bad Request \u2013 one or more parameters are invalid\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n missingDomain:\n summary: Missing required domain parameter\n value:\n error: Invalid Param Exception\n message: please pass correct parameters\n path: /v1.0/subdomains/lookup\n status: 400\n timestamp: '2026-07-27T12:22:27.587Z'\n invalidDomain:\n summary: domain is not a syntactically valid domain name\n value:\n timestamp: '2026-07-27T12:22:40.119716922Z'\n status: 400\n error: Invalid Param Exception\n message: 'Please pass domain param correct value[For Technical Support: support@whoisfreaks.com]'\n path: /v1.0/subdomains\n AfterDateError:\n summary: after is not earlier than before\n value:\n timestamp: '2026-07-27T12:22:28.233751455Z'\n status: 400\n error: Invalid Param Exception\n message: after date must be earlier than before date.\n path: /v1.0/subdomains\n AfterDateGreaterThanCurrent:\n summary: after is in the future\n value:\n timestamp: '2026-07-27T12:22:39.061042798Z'\n status: 400\n error: Invalid Param Exception\n message: after date cannot be greater than the current date.\n path: /v1.0/subdomains\n BeforeDateGreaterThanCurrent:\n summary: before is in the future\n value:\n timestamp: '2026-07-27T12:22:39.609545647Z'\n status: 400\n error: Invalid Param Exception\n message: before date cannot be greater than the current date.\n path: /v1.0/subdomains\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '408':\n description: Request Timeout \u2013 Unable to fetch WHOIS data\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n error:\n summary: Error response\n value:\n timestamp: '2025-08-14T10:37:21.871Z'\n status: 408\n error: Request Timeout\n message: 'Unable to fetch whois data. Please try again. [For Technical Support email at: support@apifreaks.com]'\n path: /v1.0/subdomains/lookup\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n operationId: lookupSubdomains\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n SubDomainResponse:\n type: object\n required:\n - domain\n - status\n - query_time\n - current_page\n - total_pages\n - total_records\n - subdomains\n properties:\n domain:\n type: string\n description: The domain name for which subdomains are retrieved.\n status:\n type: boolean\n description: Indicates whether the request was successfully processed or not.\n query_time:\n type: string\n description: Timestamp showing when the API request was executed.\n current_page:\n type: integer\n description: The current page number of the paginated response.\n total_pages:\n type: integer\n description: Total number of pages available for the given query. Each page has 100 subdomain entries.\n total_records:\n type: integer\n description: Total number of subdomains found for the domain.\n subdomains:\n type: array\n description: Returns an array of subdomain objects. Each object contains detailed information about an individual subdomain.\n items:\n $ref: '#/components/schemas/SubdomainItem'\n description: Subdomain lookup response containing paginated subdomain results.\n SubdomainItem:\n type: object\n description: A single subdomain record with discovery dates.\n required:\n - subdomain\n - last_seen\n properties:\n subdomain:\n type: string\n description: The discovered subdomain associated with the given domain.\n first_seen:\n type: string\n format: date\n description: The date when the subdomain was first discovered. Can be absent for some records.\n last_seen:\n type: string\n format: date\n description: The most recent date when the subdomain was observed.\n inactive_from:\n type: string\n format: date\n description: The date from which the subdomain is considered inactive. Appears only if inactive.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
50259
- "bulk-email-validation": "openapi: 3.1.1\ninfo:\n title: Bulk Email Validation API - Validate and Verify Emails in Bulk\n version: 1.0.0\n description: Validate up to 10 email addresses in a single POST request. Each email is processed independently. Returns an array of validation results with deliverability assessment per email, plus per-item error objects for failed validations. Maximum 10 email addresses per request.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Bulk Email Validation API Server\npaths:\n /email-validation/bulk:\n post:\n tags:\n - Email Validation APIs\n summary: Validate multiple email addresses\n description: Validates a bulk of email addresses and returns result for each. Maximum `10` email addresses per request.\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n description: Format of the response\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BulkEmailRequest'\n responses:\n '200':\n description: Successful response. Each item corresponds to one requested email, in the same order as the request; invalid emails are reflected via validEmail/validSyntax on that item, not as a separate error object \u2014 every item has success=true regardless of validation outcome.\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BulkEmailValidationResponse'\n examples:\n bulkEmailsValidated:\n summary: Mix of a valid and a syntactically invalid email\n value:\n emailResponse:\n - success: true\n email: abc.def@gmail.com\n validEmail: valid\n validSyntax: true\n domain:\n name: gmail.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: false\n account:\n role: false\n fullMailBox: false\n dns:\n mxRecord:\n - gmail-smtp-in.l.google.com.\n - alt1.gmail-smtp-in.l.google.com.\n - alt2.gmail-smtp-in.l.google.com.\n - alt3.gmail-smtp-in.l.google.com.\n - alt4.gmail-smtp-in.l.google.com.\n - success: true\n email: not-an-email\n validEmail: INVALID_EMAIL\n validSyntax: false\n domain:\n name: not-an-email\n validDomain: false\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '400':\n description: Bad Request \u2013 Invalid request body\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n invalidBody:\n summary: emailData field missing or malformed\n value:\n timestamp: '2026-07-27T12:53:14.628Z'\n path: /v1.0/email-validation/bulk\n status: 400\n error: Invalid request body Exception\n message: Please provide data in required format in request body\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '404':\n description: Not Found \u2013 The requested resource could not be found\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Resource Not Found:\n value:\n timestamp: '2026-09-02T11:57:55.592Z'\n path: /v1.0/email-validation/bulkx\n status: 404\n error: Resource Not Found\n message: The requested resource could not be found. Please verify the URL and try again.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '408':\n description: Request Timeout\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Request Timeout:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/bulk\n status: 408\n error: Request Timeout\n message: Timed out while connecting to the remote URL.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '413':\n description: Payload Too Large \u2013 emailData exceeds the maximum of 10 entries per request\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Payload Too Large:\n value:\n timestamp: '2026-09-02T11:57:34.223Z'\n path: /v2/email-validation/bulk\n status: 413\n error: Payload too large Exception\n message: Maximum request body size limit exceeded\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '429':\n description: Rate Limit Exceeded\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Rate Limit Exceeded:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/bulk\n status: 429\n error: Too Many Requests\n message: API rate limit exceeded.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n operationId: bulkCheckEmail\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n BulkEmailValidationResponse:\n type: object\n description: Wrapper containing the per-email results array.\n required:\n - emailResponse\n properties:\n emailResponse:\n type: array\n description: Array of per-email results, one entry per requested email, in the same order as the request. Invalid emails are reflected via validEmail/validSyntax, not a separate error shape.\n items:\n $ref: '#/components/schemas/SingleEmailValidationResponse'\n SingleEmailValidationResponse:\n type: object\n required:\n - success\n - email\n - validEmail\n - validSyntax\n - domain\n properties:\n success:\n type: boolean\n description: 'Indicates the processing status of the validation request. true: completed successfully.'\n email:\n type: string\n format: email\n description: The email address submitted for validation.\n name:\n type: string\n description: Optional identifier or label provided in the request for record tracking.\n reason:\n type: string\n description: Detailed explanation returned when validEmail is not valid.\n validEmail:\n type: string\n enum:\n - valid\n - invalid\n - INVALID_EMAIL\n - unknown\n - risky\n - app_server_blocked\n description: 'Comprehensive deliverability assessment. Casing is inconsistent in the live API: syntactically invalid addresses return INVALID_EMAIL, while semantically invalid (undeliverable) addresses return lowercase invalid. risky is a documented possibility not observed during testing. app_server_blocked is returned when the recipient mail server blocked the live verification attempt (reason explains that retrying later may succeed).'\n validSyntax:\n type: boolean\n description: Validates email address format compliance with RFC 5322 standards.\n domain:\n $ref: '#/components/schemas/DomainObject'\n account:\n $ref: '#/components/schemas/AccountObject'\n dns:\n $ref: '#/components/schemas/DnsObject'\n address:\n $ref: '#/components/schemas/AddressObject'\n ip:\n type: string\n format: ip\n description: IP address provided for geolocation and security enrichment.\n description: Email validation response containing deliverability assessment and metadata.\n DomainObject:\n type: object\n required:\n - name\n - validDomain\n properties:\n name:\n type: string\n description: Extracted domain component from the email address.\n validDomain:\n type: boolean\n description: Domain validation status confirming DNS resolution capability.\n disposable:\n type: boolean\n description: Classification flag identifying domains from temporary email service providers.\n spam:\n type: boolean\n description: Reputation indicator flagging domains on spam databases.\n free:\n type: boolean\n description: Classification indicating free or consumer-grade email service providers.\n catchAll:\n type: boolean\n description: Detection flag for domains configured to accept mail for any recipient address.\n description: Domain validation details for the email address.\n AccountObject:\n type: object\n required:\n - role\n properties:\n role:\n type: boolean\n description: Detection flag identifying role-based email addresses (e.g., admin@, support@).\n fullMailBox:\n type: boolean\n description: Storage capacity status indicator for the recipient mailbox.\n description: Account-level validation details.\n DnsObject:\n type: object\n required:\n - mxRecord\n properties:\n mxRecord:\n type: array\n items:\n type: string\n description: Collection of MX (Mail Exchange) hostname records from DNS queries.\n aRecord:\n type: array\n items:\n type: string\n description: Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated.\n description: DNS records for the email domain.\n AddressObject:\n type: object\n properties:\n validIpAddress:\n type: boolean\n description: IP recognized/reachable by the geolocation provider.\n location:\n $ref: '#/components/schemas/EmailLocation'\n security:\n $ref: '#/components/schemas/EmailSecurity'\n description: Geolocation and security enrichment data for the IP address.\n required: []\n EmailLocation:\n type: object\n description: Geolocation data derived from the IP address.\n properties:\n city:\n type: string\n description: Municipal or city name.\n district:\n type: string\n description: District or neighborhood.\n zipcode:\n type: string\n description: Postal or ZIP code.\n state_prov:\n type: string\n description: State or province.\n country_name:\n type: string\n description: Common country name.\n country_name_official:\n type: string\n description: Official country name.\n country_code2:\n type: string\n description: Two-character ISO country code.\n country_code3:\n type: string\n description: Three-character ISO country code.\n continent_name:\n type: string\n description: Continental region name.\n continent_code:\n type: string\n description: Continental region identifier.\n accuracy_radius:\n type: string\n description: Geolocation precision radius.\n confidence:\n type: string\n description: Confidence score for geolocation accuracy.\n is_eu:\n type: boolean\n description: European Union membership status.\n required: []\n EmailSecurity:\n type: object\n description: Threat and anonymity profile for the IP address.\n required:\n - threat_score\n - is_tor\n - is_proxy\n - proxy_type\n - proxy_provider\n - is_anonymous\n - is_known_attacker\n - is_spam\n - is_bot\n - is_cloud_provider\n - cloud_provider\n properties:\n threat_score:\n type: integer\n description: Quantitative risk assessment score. Higher values indicate elevated security risk.\n is_tor:\n type: boolean\n description: Detection flag for IP addresses routed through the Tor anonymity network.\n is_proxy:\n type: boolean\n description: Detection flag identifying IP addresses operating as proxy servers.\n proxy_type:\n type: string\n description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).\n proxy_provider:\n type: string\n description: Identified service provider operating the proxy infrastructure.\n is_anonymous:\n type: boolean\n description: Anonymization detection flag for IP addresses using identity obfuscation techniques.\n is_known_attacker:\n type: boolean\n description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.\n is_spam:\n type: boolean\n description: Reputation flag for IP addresses associated with spam transmission.\n is_bot:\n type: boolean\n description: Automated traffic detection flag for IP addresses from bot networks.\n is_cloud_provider:\n type: boolean\n description: Infrastructure classification flag for IP addresses from cloud computing providers.\n cloud_provider:\n type: string\n description: Identified cloud infrastructure or hosting service provider name.\n BulkEmailRequest:\n type: object\n description: Request body for bulk email validation.\n required:\n - emailData\n properties:\n emailData:\n type: array\n description: Array of email objects to validate. Maximum 10 per request.\n maxItems: 10\n items:\n $ref: '#/components/schemas/BulkEmailRequestItem'\n BulkEmailRequestItem:\n type: object\n description: A single email entry in a bulk validation request.\n required:\n - email\n properties:\n email:\n type: string\n format: email\n description: Email address to validate.\n name:\n type: string\n description: Optional name or label.\n ip:\n type: string\n format: ip\n description: Optional IP address for enrichment.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\n X-Concurrent-Threads:\n description: Specifies the maximum number of concurrent requests allowed.\n schema:\n type: integer\n X-Concurrent-Threads-Active:\n description: Indicates the number of active concurrent requests being processed.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
50260
- "email-checker": "openapi: 3.1.1\ninfo:\n title: Email Checker API - Real-Time Validation, Deliverability & Risk Signals\n version: 1.0.0\n description: Validate a single email address and receive comprehensive results including syntax validation, domain verification, account detection, DNS records (MX and A records), and optional IP-based geolocation and security enrichment. Returns deliverability assessment with valid/invalid/unknown/risky/app_server_blocked status.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Email Checker API Server\npaths:\n /email-validation/single:\n post:\n tags:\n - Email Validation APIs\n summary: Validate a single email\n description: Validates a single email address and returns result.\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n description: Format of the response\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/EmailCheckRequest'\n responses:\n '200':\n description: Successful response with Email Validation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/SingleEmailValidationResponse'\n examples:\n validEmail:\n summary: Valid, deliverable email\n value:\n success: true\n email: abc.def@gmail.com\n validEmail: valid\n validSyntax: true\n domain:\n name: gmail.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: false\n account:\n role: false\n fullMailBox: false\n dns:\n mxRecord:\n - gmail-smtp-in.l.google.com.\n - alt1.gmail-smtp-in.l.google.com.\n - alt2.gmail-smtp-in.l.google.com.\n - alt3.gmail-smtp-in.l.google.com.\n - alt4.gmail-smtp-in.l.google.com.\n invalidSyntax:\n summary: Syntactically invalid email \u2014 domain/account/dns are minimal or absent\n value:\n success: true\n email: not-an-email\n validEmail: INVALID_EMAIL\n validSyntax: false\n domain:\n name: not-an-email\n validDomain: false\n noMxRecord:\n summary: Valid syntax, domain has no MX record\n value:\n success: true\n email: test@nonexistentdomainxyz123abc.com\n validEmail: invalid\n validSyntax: true\n reason: mx record does not exist.\n domain:\n name: nonexistentdomainxyz123abc.com\n disposable: false\n spam: false\n free: false\n validDomain: false\n catchAll: false\n account:\n role: false\n withIp:\n summary: With ip \u2014 adds geolocation/security enrichment under address\n value:\n success: true\n email: abc.def@gmail.com\n validEmail: valid\n validSyntax: true\n domain:\n name: gmail.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: false\n account:\n role: false\n fullMailBox: false\n dns:\n mxRecord:\n - gmail-smtp-in.l.google.com.\n - alt1.gmail-smtp-in.l.google.com.\n - alt2.gmail-smtp-in.l.google.com.\n - alt3.gmail-smtp-in.l.google.com.\n - alt4.gmail-smtp-in.l.google.com.\n ip: 8.8.8.8\n address:\n validIpAddress: true\n location:\n city: Mountain View\n district: Santa Clara\n confidence: low\n zipcode: 94043-1351\n state_prov: California\n country_name: United States\n continent_name: North America\n continent_code: NA\n country_code2: US\n country_code3: USA\n country_name_official: United States of America\n accuracy_radius: '27.42'\n is_eu: false\n security:\n threat_score: 5\n is_tor: false\n is_proxy: false\n proxy_type: ''\n proxy_provider: ''\n is_anonymous: false\n is_known_attacker: false\n is_spam: false\n is_bot: false\n is_cloud_provider: true\n cloud_provider: Google LLC\n appServerBlocked:\n summary: Valid syntax, but the recipient mail server blocked the verification attempt\n value:\n success: true\n email: randomuser98765zzz@gmx.com\n validEmail: app_server_blocked\n validSyntax: true\n reason: We are unable to determine the validity of email at the moment. Please try later.\n domain:\n name: gmx.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: false\n account:\n role: false\n dns:\n mxRecord:\n - mx00.gmx.net.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '400':\n description: Bad Request \u2013 Invalid request body\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n missingEmail:\n summary: email field missing from request body\n value:\n timestamp: '2026-09-02T11:56:23.462Z'\n path: /v2/email-validation/single\n status: 400\n error: Missing or Invalid Parameters\n message: Please pass valid value for 'email' in body.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '404':\n description: Not Found \u2013 The requested resource could not be found\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Resource Not Found:\n value:\n timestamp: '2026-09-02T11:56:23.937Z'\n path: /v1.0/email-validation/singlex\n status: 404\n error: Resource Not Found\n message: The requested resource could not be found. Please verify the URL and try again.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '408':\n description: Request Timeout\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Request Timeout:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/single\n status: 408\n error: Request Timeout\n message: Timed out while connecting to the remote URL.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '429':\n description: Rate Limit Exceeded\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Rate Limit Exceeded:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/single\n status: 429\n error: Too Many Requests\n message: API rate limit exceeded.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n operationId: checkEmail\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n SingleEmailValidationResponse:\n type: object\n required:\n - success\n - email\n - validEmail\n - validSyntax\n - domain\n properties:\n success:\n type: boolean\n description: 'Indicates the processing status of the validation request. true: completed successfully.'\n email:\n type: string\n format: email\n description: The email address submitted for validation.\n name:\n type: string\n description: Optional identifier or label provided in the request for record tracking.\n reason:\n type: string\n description: Detailed explanation returned when validEmail is not valid.\n validEmail:\n type: string\n enum:\n - valid\n - invalid\n - INVALID_EMAIL\n - unknown\n - risky\n - app_server_blocked\n description: 'Comprehensive deliverability assessment. Casing is inconsistent in the live API: syntactically invalid addresses return INVALID_EMAIL, while semantically invalid (undeliverable) addresses return lowercase invalid. risky is a documented possibility not observed during testing. app_server_blocked is returned when the recipient mail server blocked the live verification attempt (reason explains that retrying later may succeed).'\n validSyntax:\n type: boolean\n description: Validates email address format compliance with RFC 5322 standards.\n domain:\n $ref: '#/components/schemas/DomainObject'\n account:\n $ref: '#/components/schemas/AccountObject'\n dns:\n $ref: '#/components/schemas/DnsObject'\n address:\n $ref: '#/components/schemas/AddressObject'\n ip:\n type: string\n format: ip\n description: IP address provided for geolocation and security enrichment.\n description: Email validation response containing deliverability assessment and metadata.\n DomainObject:\n type: object\n required:\n - name\n - validDomain\n properties:\n name:\n type: string\n description: Extracted domain component from the email address.\n validDomain:\n type: boolean\n description: Domain validation status confirming DNS resolution capability.\n disposable:\n type: boolean\n description: Classification flag identifying domains from temporary email service providers.\n spam:\n type: boolean\n description: Reputation indicator flagging domains on spam databases.\n free:\n type: boolean\n description: Classification indicating free or consumer-grade email service providers.\n catchAll:\n type: boolean\n description: Detection flag for domains configured to accept mail for any recipient address.\n description: Domain validation details for the email address.\n AccountObject:\n type: object\n required:\n - role\n properties:\n role:\n type: boolean\n description: Detection flag identifying role-based email addresses (e.g., admin@, support@).\n fullMailBox:\n type: boolean\n description: Storage capacity status indicator for the recipient mailbox.\n description: Account-level validation details.\n DnsObject:\n type: object\n required:\n - mxRecord\n properties:\n mxRecord:\n type: array\n items:\n type: string\n description: Collection of MX (Mail Exchange) hostname records from DNS queries.\n aRecord:\n type: array\n items:\n type: string\n description: Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated.\n description: DNS records for the email domain.\n AddressObject:\n type: object\n properties:\n validIpAddress:\n type: boolean\n description: IP recognized/reachable by the geolocation provider.\n location:\n $ref: '#/components/schemas/EmailLocation'\n security:\n $ref: '#/components/schemas/EmailSecurity'\n description: Geolocation and security enrichment data for the IP address.\n required: []\n EmailLocation:\n type: object\n description: Geolocation data derived from the IP address.\n properties:\n city:\n type: string\n description: Municipal or city name.\n district:\n type: string\n description: District or neighborhood.\n zipcode:\n type: string\n description: Postal or ZIP code.\n state_prov:\n type: string\n description: State or province.\n country_name:\n type: string\n description: Common country name.\n country_name_official:\n type: string\n description: Official country name.\n country_code2:\n type: string\n description: Two-character ISO country code.\n country_code3:\n type: string\n description: Three-character ISO country code.\n continent_name:\n type: string\n description: Continental region name.\n continent_code:\n type: string\n description: Continental region identifier.\n accuracy_radius:\n type: string\n description: Geolocation precision radius.\n confidence:\n type: string\n description: Confidence score for geolocation accuracy.\n is_eu:\n type: boolean\n description: European Union membership status.\n required: []\n EmailSecurity:\n type: object\n description: Threat and anonymity profile for the IP address.\n required:\n - threat_score\n - is_tor\n - is_proxy\n - proxy_type\n - proxy_provider\n - is_anonymous\n - is_known_attacker\n - is_spam\n - is_bot\n - is_cloud_provider\n - cloud_provider\n properties:\n threat_score:\n type: integer\n description: Quantitative risk assessment score. Higher values indicate elevated security risk.\n is_tor:\n type: boolean\n description: Detection flag for IP addresses routed through the Tor anonymity network.\n is_proxy:\n type: boolean\n description: Detection flag identifying IP addresses operating as proxy servers.\n proxy_type:\n type: string\n description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).\n proxy_provider:\n type: string\n description: Identified service provider operating the proxy infrastructure.\n is_anonymous:\n type: boolean\n description: Anonymization detection flag for IP addresses using identity obfuscation techniques.\n is_known_attacker:\n type: boolean\n description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.\n is_spam:\n type: boolean\n description: Reputation flag for IP addresses associated with spam transmission.\n is_bot:\n type: boolean\n description: Automated traffic detection flag for IP addresses from bot networks.\n is_cloud_provider:\n type: boolean\n description: Infrastructure classification flag for IP addresses from cloud computing providers.\n cloud_provider:\n type: string\n description: Identified cloud infrastructure or hosting service provider name.\n EmailCheckRequest:\n type: object\n description: Request body for email validation.\n required:\n - email\n properties:\n email:\n type: string\n format: email\n description: Email address to validate.\n name:\n type: string\n description: Optional name or label for record tracking.\n ip:\n type: string\n format: ip\n description: Optional IP address for geolocation and security enrichment.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\n X-Concurrent-Threads:\n description: Specifies the maximum number of concurrent requests allowed.\n schema:\n type: integer\n X-Concurrent-Threads-Active:\n description: Indicates the number of active concurrent requests being processed.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
53022
+ "bulk-email-validation": "openapi: 3.1.1\ninfo:\n title: Bulk Email Validation API - Validate and Verify Emails in Bulk\n version: 1.0.0\n description: Validate up to 10 email addresses in a single POST request. Each email is processed independently. Returns an array of validation results with deliverability assessment per email (valid/accept_all/invalid/unknown/risky/app_server_blocked), plus per-item error objects for failed validations. Maximum 10 email addresses per request.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Bulk Email Validation API Server\npaths:\n /email-validation/bulk:\n post:\n tags:\n - Email Validation APIs\n summary: Validate multiple email addresses\n description: Validates a bulk of email addresses and returns result for each. Maximum `10` email addresses per request.\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n description: Format of the response\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BulkEmailRequest'\n responses:\n '200':\n description: Successful response. Each item corresponds to one requested email, in the same order as the request; invalid emails are reflected via validEmail/validSyntax on that item, not as a separate error object \u2014 every item has success=true regardless of validation outcome.\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BulkEmailValidationResponse'\n examples:\n bulkEmailsValidated:\n summary: Mix of valid, syntactically invalid, accept_all, null-MX invalid, and unknown (no-MX probe) results\n value:\n emailResponse:\n - success: true\n email: abc.def@gmail.com\n validEmail: valid\n validSyntax: true\n domain:\n name: gmail.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: false\n account:\n role: false\n fullMailBox: false\n dns:\n mxRecord:\n - gmail-smtp-in.l.google.com.\n - alt1.gmail-smtp-in.l.google.com.\n - alt2.gmail-smtp-in.l.google.com.\n - alt3.gmail-smtp-in.l.google.com.\n - alt4.gmail-smtp-in.l.google.com.\n - success: true\n email: not-an-email\n validEmail: INVALID_EMAIL\n validSyntax: false\n domain:\n name: not-an-email\n validDomain: false\n - success: true\n email: random12345@yahoo.com\n validEmail: accept_all\n validSyntax: true\n reason: domain accepts all addresses.\n domain:\n name: yahoo.com\n disposable: false\n spam: false\n free: true\n validDomain: true\n catchAll: true\n account:\n role: false\n fullMailBox: false\n dns:\n mxRecord:\n - mta5.am0.yahoodns.net.\n - mta6.am0.yahoodns.net.\n - mta7.am0.yahoodns.net.\n - success: true\n email: test@example.com\n validEmail: invalid\n validSyntax: true\n reason: domain does not accept mail.\n domain:\n name: example.com\n disposable: true\n spam: false\n free: false\n validDomain: true\n catchAll: false\n account:\n role: false\n dns:\n mxRecord:\n - .\n - success: true\n email: test@neverssl.com\n validEmail: unknown\n validSyntax: true\n reason: We are unable to determine if email is valid or invalid.\n domain:\n name: neverssl.com\n disposable: false\n spam: false\n free: false\n validDomain: true\n catchAll: false\n account:\n role: false\n dns:\n aRecord:\n - 34.223.124.45\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n X-Concurrent-Threads:\n $ref: '#/components/headers/X-Concurrent-Threads'\n X-Concurrent-Threads-Active:\n $ref: '#/components/headers/X-Concurrent-Threads-Active'\n '400':\n description: Bad Request \u2013 Invalid request body\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n invalidBody:\n summary: emailData field missing or malformed\n value:\n timestamp: '2026-07-27T12:53:14.628Z'\n path: /v1.0/email-validation/bulk\n status: 400\n error: Invalid request body Exception\n message: Please provide data in required format in request body\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '404':\n description: Not Found \u2013 The requested resource could not be found\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Resource Not Found:\n value:\n timestamp: '2026-09-02T11:57:55.592Z'\n path: /v1.0/email-validation/bulkx\n status: 404\n error: Resource Not Found\n message: The requested resource could not be found. Please verify the URL and try again.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '408':\n description: Request Timeout\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Request Timeout:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/bulk\n status: 408\n error: Request Timeout\n message: Timed out while connecting to the remote URL.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '413':\n description: Payload Too Large \u2013 emailData exceeds the maximum of 10 entries per request\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Payload Too Large:\n value:\n timestamp: '2026-09-02T11:57:34.223Z'\n path: /v2/email-validation/bulk\n status: 413\n error: Payload too large Exception\n message: Maximum request body size limit exceeded\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '429':\n description: Rate Limit Exceeded\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n Rate Limit Exceeded:\n value:\n timestamp: '2026-06-06T13:00:00.000Z'\n path: /v1.0/email-validation/bulk\n status: 429\n error: Too Many Requests\n message: API rate limit exceeded.\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n operationId: bulkCheckEmail\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n BulkEmailValidationResponse:\n type: object\n description: Wrapper containing the per-email results array.\n required:\n - emailResponse\n properties:\n emailResponse:\n type: array\n description: Array of per-email results, one entry per requested email, in the same order as the request. Invalid emails are reflected via validEmail/validSyntax, not a separate error shape.\n items:\n $ref: '#/components/schemas/SingleEmailValidationResponse'\n SingleEmailValidationResponse:\n type: object\n required:\n - success\n - email\n - validEmail\n - validSyntax\n - domain\n properties:\n success:\n type: boolean\n description: 'Indicates the processing status of the validation request. true: completed successfully.'\n email:\n type: string\n format: email\n description: The email address submitted for validation.\n name:\n type: string\n description: Optional identifier or label provided in the request for record tracking.\n reason:\n type: string\n description: Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid.\n validEmail:\n type: string\n enum:\n - valid\n - accept_all\n - invalid\n - INVALID_EMAIL\n - unknown\n - risky\n - app_server_blocked\n description: 'Comprehensive deliverability assessment. valid: recipient confirmed deliverable, reason omitted. accept_all: the domain is catch-all and accepted the recipient, so this specific mailbox is unconfirmed \u2014 see domain.catchAll, reason ''domain accepts all addresses.''. invalid: rejected mailbox, syntax failure, or the domain accepts no mail at all (a null MX). unknown: no conclusive answer, most common for domains with no MX record that only get a probe against their address record. risky: mailbox exists but over quota, or the server deferred with a greylist response. app_server_blocked: our verifier IP was blocked by the receiving server. Casing is inconsistent in the live API: syntactically invalid addresses can return the raw enum name INVALID_EMAIL instead of lowercase invalid \u2014 this is a known API bug, handle it defensively as equivalent to invalid.'\n validSyntax:\n type: boolean\n description: Validates email address format compliance with RFC 5322 standards.\n domain:\n $ref: '#/components/schemas/DomainObject'\n account:\n $ref: '#/components/schemas/AccountObject'\n dns:\n $ref: '#/components/schemas/DnsObject'\n address:\n $ref: '#/components/schemas/AddressObject'\n ip:\n type: string\n format: ip\n description: IP address provided for geolocation and security enrichment.\n description: Email validation response containing deliverability assessment and metadata.\n DomainObject:\n type: object\n required:\n - name\n - validDomain\n properties:\n name:\n type: string\n description: Extracted domain component from the email address.\n validDomain:\n type: boolean\n description: Domain validation status confirming DNS resolution capability.\n disposable:\n type: boolean\n description: Classification flag identifying domains from temporary email service providers.\n spam:\n type: boolean\n description: Reputation indicator flagging domains on spam databases.\n free:\n type: boolean\n description: Classification indicating free or consumer-grade email service providers.\n catchAll:\n type: boolean\n description: Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all.\n description: Domain validation details for the email address.\n AccountObject:\n type: object\n required:\n - role\n properties:\n role:\n type: boolean\n description: Detection flag identifying role-based email addresses (e.g., admin@, support@).\n fullMailBox:\n type: boolean\n description: Storage capacity status indicator for the recipient mailbox.\n description: Account-level validation details.\n DnsObject:\n type: object\n required: []\n properties:\n mxRecord:\n type: array\n items:\n type: string\n description: Every MX hostname at the domain's lowest preference (not just one). [\".\"] means the domain publishes a null MX and accepts no mail at all. Absent entirely when the domain has no MX record of any kind \u2014 check aRecord in that case.\n aRecord:\n type: array\n items:\n type: string\n description: Collection of A (Address) records for the domain. Present when the domain has no MX record but does resolve to a web server or other host.\n description: DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record.\n AddressObject:\n type: object\n properties:\n validIpAddress:\n type: boolean\n description: IP recognized/reachable by the geolocation provider.\n location:\n $ref: '#/components/schemas/EmailLocation'\n security:\n $ref: '#/components/schemas/EmailSecurity'\n description: Geolocation and security enrichment data for the IP address.\n required: []\n EmailLocation:\n type: object\n description: Geolocation data derived from the IP address.\n properties:\n city:\n type: string\n description: Municipal or city name.\n district:\n type: string\n description: District or neighborhood.\n zipcode:\n type: string\n description: Postal or ZIP code.\n state_prov:\n type: string\n description: State or province.\n country_name:\n type: string\n description: Common country name.\n country_name_official:\n type: string\n description: Official country name.\n country_code2:\n type: string\n description: Two-character ISO country code.\n country_code3:\n type: string\n description: Three-character ISO country code.\n continent_name:\n type: string\n description: Continental region name.\n continent_code:\n type: string\n description: Continental region identifier.\n accuracy_radius:\n type: string\n description: Geolocation precision radius.\n confidence:\n type: string\n description: Confidence score for geolocation accuracy.\n is_eu:\n type: boolean\n description: European Union membership status.\n required: []\n EmailSecurity:\n type: object\n description: Threat and anonymity profile for the IP address.\n required:\n - threat_score\n - is_tor\n - is_proxy\n - proxy_type\n - proxy_provider\n - is_anonymous\n - is_known_attacker\n - is_spam\n - is_bot\n - is_cloud_provider\n - cloud_provider\n properties:\n threat_score:\n type: integer\n description: Quantitative risk assessment score. Higher values indicate elevated security risk.\n is_tor:\n type: boolean\n description: Detection flag for IP addresses routed through the Tor anonymity network.\n is_proxy:\n type: boolean\n description: Detection flag identifying IP addresses operating as proxy servers.\n proxy_type:\n type: string\n description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).\n proxy_provider:\n type: string\n description: Identified service provider operating the proxy infrastructure.\n is_anonymous:\n type: boolean\n description: Anonymization detection flag for IP addresses using identity obfuscation techniques.\n is_known_attacker:\n type: boolean\n description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.\n is_spam:\n type: boolean\n description: Reputation flag for IP addresses associated with spam transmission.\n is_bot:\n type: boolean\n description: Automated traffic detection flag for IP addresses from bot networks.\n is_cloud_provider:\n type: boolean\n description: Infrastructure classification flag for IP addresses from cloud computing providers.\n cloud_provider:\n type: string\n description: Identified cloud infrastructure or hosting service provider name.\n BulkEmailRequest:\n type: object\n description: Request body for bulk email validation.\n required:\n - emailData\n properties:\n emailData:\n type: array\n description: Array of email objects to validate. Maximum 10 per request.\n maxItems: 10\n items:\n $ref: '#/components/schemas/BulkEmailRequestItem'\n BulkEmailRequestItem:\n type: object\n description: A single email entry in a bulk validation request.\n required:\n - email\n properties:\n email:\n type: string\n format: email\n description: Email address to validate.\n name:\n type: string\n description: Optional name or label.\n ip:\n type: string\n format: ip\n description: Optional IP address for enrichment.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\n X-Concurrent-Threads:\n description: Specifies the maximum number of concurrent requests allowed.\n schema:\n type: integer\n X-Concurrent-Threads-Active:\n description: Indicates the number of active concurrent requests being processed.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
53023
+ "email-checker": `openapi: 3.1.1
53024
+ info:
53025
+ title: Email Checker API - Real-Time Validation, Deliverability & Risk Signals
53026
+ version: 1.0.0
53027
+ description: Validate a single email address and receive comprehensive results including syntax validation, domain verification, account detection, DNS records (MX and A records), and optional IP-based geolocation and security enrichment. Returns deliverability assessment with valid/accept_all/invalid/unknown/risky/app_server_blocked status.
53028
+ contact:
53029
+ name: APIFreaks Support
53030
+ url: https://apifreaks.com/contact
53031
+ email: support@apifreaks.com
53032
+ servers:
53033
+ - url: https://api.apifreaks.com/v1.0
53034
+ description: Email Checker API Server
53035
+ paths:
53036
+ /email-validation/single:
53037
+ post:
53038
+ tags:
53039
+ - Email Validation APIs
53040
+ summary: Validate a single email
53041
+ description: Validates a single email address and returns result.
53042
+ parameters:
53043
+ - name: format
53044
+ in: query
53045
+ required: false
53046
+ schema:
53047
+ type: string
53048
+ enum:
53049
+ - json
53050
+ - xml
53051
+ description: Format of the response
53052
+ requestBody:
53053
+ required: true
53054
+ content:
53055
+ application/json:
53056
+ schema:
53057
+ $ref: '#/components/schemas/EmailCheckRequest'
53058
+ responses:
53059
+ '200':
53060
+ description: Successful response with Email Validation
53061
+ content:
53062
+ application/json:
53063
+ schema:
53064
+ $ref: '#/components/schemas/SingleEmailValidationResponse'
53065
+ examples:
53066
+ validEmail:
53067
+ summary: Valid, deliverable email
53068
+ value:
53069
+ success: true
53070
+ email: abc.def@gmail.com
53071
+ validEmail: valid
53072
+ validSyntax: true
53073
+ domain:
53074
+ name: gmail.com
53075
+ disposable: false
53076
+ spam: false
53077
+ free: true
53078
+ validDomain: true
53079
+ catchAll: false
53080
+ account:
53081
+ role: false
53082
+ fullMailBox: false
53083
+ dns:
53084
+ mxRecord:
53085
+ - gmail-smtp-in.l.google.com.
53086
+ - alt1.gmail-smtp-in.l.google.com.
53087
+ - alt2.gmail-smtp-in.l.google.com.
53088
+ - alt3.gmail-smtp-in.l.google.com.
53089
+ - alt4.gmail-smtp-in.l.google.com.
53090
+ invalidSyntax:
53091
+ summary: Syntactically invalid email \u2014 domain/account/dns are minimal or absent
53092
+ value:
53093
+ success: true
53094
+ email: not-an-email
53095
+ validEmail: INVALID_EMAIL
53096
+ validSyntax: false
53097
+ domain:
53098
+ name: not-an-email
53099
+ validDomain: false
53100
+ nonexistentDomain:
53101
+ summary: Valid syntax, domain does not exist (NXDOMAIN)
53102
+ value:
53103
+ success: true
53104
+ email: test@nonexistentdomainxyz123abc.com
53105
+ validEmail: invalid
53106
+ validSyntax: true
53107
+ reason: mx record does not exist.
53108
+ domain:
53109
+ name: nonexistentdomainxyz123abc.com
53110
+ disposable: false
53111
+ spam: false
53112
+ free: false
53113
+ validDomain: false
53114
+ catchAll: false
53115
+ account:
53116
+ role: false
53117
+ acceptAll:
53118
+ summary: Catch-all domain accepted the recipient \u2014 mailbox unconfirmed
53119
+ value:
53120
+ success: true
53121
+ email: random12345@yahoo.com
53122
+ validEmail: accept_all
53123
+ validSyntax: true
53124
+ reason: domain accepts all addresses.
53125
+ domain:
53126
+ name: yahoo.com
53127
+ disposable: false
53128
+ spam: false
53129
+ free: true
53130
+ validDomain: true
53131
+ catchAll: true
53132
+ account:
53133
+ role: false
53134
+ fullMailBox: false
53135
+ dns:
53136
+ mxRecord:
53137
+ - mta5.am0.yahoodns.net.
53138
+ - mta6.am0.yahoodns.net.
53139
+ - mta7.am0.yahoodns.net.
53140
+ nullMxDomain:
53141
+ summary: Domain publishes a null MX (single ".") \u2014 accepts no mail at all
53142
+ value:
53143
+ success: true
53144
+ email: test@example.com
53145
+ validEmail: invalid
53146
+ validSyntax: true
53147
+ reason: domain does not accept mail.
53148
+ domain:
53149
+ name: example.com
53150
+ disposable: true
53151
+ spam: false
53152
+ free: false
53153
+ validDomain: true
53154
+ catchAll: false
53155
+ account:
53156
+ role: false
53157
+ dns:
53158
+ mxRecord:
53159
+ - .
53160
+ noMxAddressOnly:
53161
+ summary: Domain has no MX record but a working A record \u2014 gets a real SMTP probe
53162
+ value:
53163
+ success: true
53164
+ email: test@neverssl.com
53165
+ validEmail: unknown
53166
+ validSyntax: true
53167
+ reason: We are unable to determine if email is valid or invalid.
53168
+ domain:
53169
+ name: neverssl.com
53170
+ disposable: false
53171
+ spam: false
53172
+ free: false
53173
+ validDomain: true
53174
+ catchAll: false
53175
+ account:
53176
+ role: false
53177
+ dns:
53178
+ aRecord:
53179
+ - 34.223.124.45
53180
+ withIp:
53181
+ summary: With ip \u2014 adds geolocation/security enrichment under address
53182
+ value:
53183
+ success: true
53184
+ email: abc.def@gmail.com
53185
+ validEmail: valid
53186
+ validSyntax: true
53187
+ domain:
53188
+ name: gmail.com
53189
+ disposable: false
53190
+ spam: false
53191
+ free: true
53192
+ validDomain: true
53193
+ catchAll: false
53194
+ account:
53195
+ role: false
53196
+ fullMailBox: false
53197
+ dns:
53198
+ mxRecord:
53199
+ - gmail-smtp-in.l.google.com.
53200
+ - alt1.gmail-smtp-in.l.google.com.
53201
+ - alt2.gmail-smtp-in.l.google.com.
53202
+ - alt3.gmail-smtp-in.l.google.com.
53203
+ - alt4.gmail-smtp-in.l.google.com.
53204
+ ip: 8.8.8.8
53205
+ address:
53206
+ validIpAddress: true
53207
+ location:
53208
+ city: Mountain View
53209
+ district: Santa Clara
53210
+ confidence: low
53211
+ zipcode: 94043-1351
53212
+ state_prov: California
53213
+ country_name: United States
53214
+ continent_name: North America
53215
+ continent_code: NA
53216
+ country_code2: US
53217
+ country_code3: USA
53218
+ country_name_official: United States of America
53219
+ accuracy_radius: '27.42'
53220
+ is_eu: false
53221
+ security:
53222
+ threat_score: 5
53223
+ is_tor: false
53224
+ is_proxy: false
53225
+ proxy_type: ''
53226
+ proxy_provider: ''
53227
+ is_anonymous: false
53228
+ is_known_attacker: false
53229
+ is_spam: false
53230
+ is_bot: false
53231
+ is_cloud_provider: true
53232
+ cloud_provider: Google LLC
53233
+ appServerBlocked:
53234
+ summary: Valid syntax, but the recipient mail server blocked the verification attempt
53235
+ value:
53236
+ success: true
53237
+ email: randomuser98765zzz@gmx.com
53238
+ validEmail: app_server_blocked
53239
+ validSyntax: true
53240
+ reason: We are unable to determine the validity of email at the moment. Please try later.
53241
+ domain:
53242
+ name: gmx.com
53243
+ disposable: false
53244
+ spam: false
53245
+ free: true
53246
+ validDomain: true
53247
+ catchAll: false
53248
+ account:
53249
+ role: false
53250
+ dns:
53251
+ mxRecord:
53252
+ - mx00.gmx.net.
53253
+ headers:
53254
+ X-AF-Credits-Cost:
53255
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53256
+ X-Concurrent-Threads:
53257
+ $ref: '#/components/headers/X-Concurrent-Threads'
53258
+ X-Concurrent-Threads-Active:
53259
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53260
+ '400':
53261
+ description: Bad Request \u2013 Invalid request body
53262
+ content:
53263
+ application/json:
53264
+ schema:
53265
+ $ref: '#/components/schemas/ErrorResponse'
53266
+ examples:
53267
+ missingEmail:
53268
+ summary: email field missing from request body
53269
+ value:
53270
+ timestamp: '2026-09-02T11:56:23.462Z'
53271
+ path: /v2/email-validation/single
53272
+ status: 400
53273
+ error: Missing or Invalid Parameters
53274
+ message: Please pass valid value for 'email' in body.
53275
+ headers:
53276
+ X-AF-Credits-Cost:
53277
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53278
+ X-Concurrent-Threads:
53279
+ $ref: '#/components/headers/X-Concurrent-Threads'
53280
+ X-Concurrent-Threads-Active:
53281
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53282
+ '404':
53283
+ description: Not Found \u2013 The requested resource could not be found
53284
+ content:
53285
+ application/json:
53286
+ schema:
53287
+ $ref: '#/components/schemas/ErrorResponse'
53288
+ examples:
53289
+ Resource Not Found:
53290
+ value:
53291
+ timestamp: '2026-09-02T11:56:23.937Z'
53292
+ path: /v1.0/email-validation/singlex
53293
+ status: 404
53294
+ error: Resource Not Found
53295
+ message: The requested resource could not be found. Please verify the URL and try again.
53296
+ headers:
53297
+ X-AF-Credits-Cost:
53298
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53299
+ X-Concurrent-Threads:
53300
+ $ref: '#/components/headers/X-Concurrent-Threads'
53301
+ X-Concurrent-Threads-Active:
53302
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53303
+ '408':
53304
+ description: Request Timeout
53305
+ content:
53306
+ application/json:
53307
+ schema:
53308
+ $ref: '#/components/schemas/ErrorResponse'
53309
+ examples:
53310
+ Request Timeout:
53311
+ value:
53312
+ timestamp: '2026-06-06T13:00:00.000Z'
53313
+ path: /v1.0/email-validation/single
53314
+ status: 408
53315
+ error: Request Timeout
53316
+ message: Timed out while connecting to the remote URL.
53317
+ headers:
53318
+ X-AF-Credits-Cost:
53319
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53320
+ X-Concurrent-Threads:
53321
+ $ref: '#/components/headers/X-Concurrent-Threads'
53322
+ X-Concurrent-Threads-Active:
53323
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53324
+ '429':
53325
+ description: Rate Limit Exceeded
53326
+ content:
53327
+ application/json:
53328
+ schema:
53329
+ $ref: '#/components/schemas/ErrorResponse'
53330
+ examples:
53331
+ Rate Limit Exceeded:
53332
+ value:
53333
+ timestamp: '2026-06-06T13:00:00.000Z'
53334
+ path: /v1.0/email-validation/single
53335
+ status: 429
53336
+ error: Too Many Requests
53337
+ message: API rate limit exceeded.
53338
+ headers:
53339
+ X-AF-Credits-Cost:
53340
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53341
+ X-Concurrent-Threads:
53342
+ $ref: '#/components/headers/X-Concurrent-Threads'
53343
+ X-Concurrent-Threads-Active:
53344
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53345
+ operationId: checkEmail
53346
+ components:
53347
+ securitySchemes:
53348
+ ApiKeyAuthHeader:
53349
+ type: apiKey
53350
+ in: header
53351
+ name: X-apiKey
53352
+ description: Pass your API key via the X-apiKey request header.
53353
+ ApiKeyAuthQuery:
53354
+ type: apiKey
53355
+ in: query
53356
+ name: apiKey
53357
+ description: Pass your API key via the apiKey query parameter.
53358
+ schemas:
53359
+ SingleEmailValidationResponse:
53360
+ type: object
53361
+ required:
53362
+ - success
53363
+ - email
53364
+ - validEmail
53365
+ - validSyntax
53366
+ - domain
53367
+ properties:
53368
+ success:
53369
+ type: boolean
53370
+ description: 'Indicates the processing status of the validation request. true: completed successfully.'
53371
+ email:
53372
+ type: string
53373
+ format: email
53374
+ description: The email address submitted for validation.
53375
+ name:
53376
+ type: string
53377
+ description: Optional identifier or label provided in the request for record tracking.
53378
+ reason:
53379
+ type: string
53380
+ description: Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid.
53381
+ validEmail:
53382
+ type: string
53383
+ enum:
53384
+ - valid
53385
+ - accept_all
53386
+ - invalid
53387
+ - INVALID_EMAIL
53388
+ - unknown
53389
+ - risky
53390
+ - app_server_blocked
53391
+ description: 'Comprehensive deliverability assessment. valid: recipient confirmed deliverable, reason omitted. accept_all: the domain is catch-all and accepted the recipient, so this specific mailbox is unconfirmed \u2014 see domain.catchAll, reason ''domain accepts all addresses.''. invalid: rejected mailbox, syntax failure, or the domain accepts no mail at all (a null MX). unknown: no conclusive answer, most common for domains with no MX record that only get a probe against their address record. risky: mailbox exists but over quota, or the server deferred with a greylist response. app_server_blocked: our verifier IP was blocked by the receiving server. Casing is inconsistent in the live API: syntactically invalid addresses can return the raw enum name INVALID_EMAIL instead of lowercase invalid \u2014 this is a known API bug, handle it defensively as equivalent to invalid.'
53392
+ validSyntax:
53393
+ type: boolean
53394
+ description: Validates email address format compliance with RFC 5322 standards.
53395
+ domain:
53396
+ $ref: '#/components/schemas/DomainObject'
53397
+ account:
53398
+ $ref: '#/components/schemas/AccountObject'
53399
+ dns:
53400
+ $ref: '#/components/schemas/DnsObject'
53401
+ address:
53402
+ $ref: '#/components/schemas/AddressObject'
53403
+ ip:
53404
+ type: string
53405
+ format: ip
53406
+ description: IP address provided for geolocation and security enrichment.
53407
+ description: Email validation response containing deliverability assessment and metadata.
53408
+ DomainObject:
53409
+ type: object
53410
+ required:
53411
+ - name
53412
+ - validDomain
53413
+ properties:
53414
+ name:
53415
+ type: string
53416
+ description: Extracted domain component from the email address.
53417
+ validDomain:
53418
+ type: boolean
53419
+ description: Domain validation status confirming DNS resolution capability.
53420
+ disposable:
53421
+ type: boolean
53422
+ description: Classification flag identifying domains from temporary email service providers.
53423
+ spam:
53424
+ type: boolean
53425
+ description: Reputation indicator flagging domains on spam databases.
53426
+ free:
53427
+ type: boolean
53428
+ description: Classification indicating free or consumer-grade email service providers.
53429
+ catchAll:
53430
+ type: boolean
53431
+ description: Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all.
53432
+ description: Domain validation details for the email address.
53433
+ AccountObject:
53434
+ type: object
53435
+ required:
53436
+ - role
53437
+ properties:
53438
+ role:
53439
+ type: boolean
53440
+ description: Detection flag identifying role-based email addresses (e.g., admin@, support@).
53441
+ fullMailBox:
53442
+ type: boolean
53443
+ description: Storage capacity status indicator for the recipient mailbox.
53444
+ description: Account-level validation details.
53445
+ DnsObject:
53446
+ type: object
53447
+ required: []
53448
+ properties:
53449
+ mxRecord:
53450
+ type: array
53451
+ items:
53452
+ type: string
53453
+ description: Every MX hostname at the domain's lowest preference (not just one). ["."] means the domain publishes a null MX and accepts no mail at all. Absent entirely when the domain has no MX record of any kind \u2014 check aRecord in that case.
53454
+ aRecord:
53455
+ type: array
53456
+ items:
53457
+ type: string
53458
+ description: Collection of A (Address) records for the domain. Present when the domain has no MX record but does resolve to a web server or other host.
53459
+ description: DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record.
53460
+ AddressObject:
53461
+ type: object
53462
+ properties:
53463
+ validIpAddress:
53464
+ type: boolean
53465
+ description: IP recognized/reachable by the geolocation provider.
53466
+ location:
53467
+ $ref: '#/components/schemas/EmailLocation'
53468
+ security:
53469
+ $ref: '#/components/schemas/EmailSecurity'
53470
+ description: Geolocation and security enrichment data for the IP address.
53471
+ required: []
53472
+ EmailLocation:
53473
+ type: object
53474
+ description: Geolocation data derived from the IP address.
53475
+ properties:
53476
+ city:
53477
+ type: string
53478
+ description: Municipal or city name.
53479
+ district:
53480
+ type: string
53481
+ description: District or neighborhood.
53482
+ zipcode:
53483
+ type: string
53484
+ description: Postal or ZIP code.
53485
+ state_prov:
53486
+ type: string
53487
+ description: State or province.
53488
+ country_name:
53489
+ type: string
53490
+ description: Common country name.
53491
+ country_name_official:
53492
+ type: string
53493
+ description: Official country name.
53494
+ country_code2:
53495
+ type: string
53496
+ description: Two-character ISO country code.
53497
+ country_code3:
53498
+ type: string
53499
+ description: Three-character ISO country code.
53500
+ continent_name:
53501
+ type: string
53502
+ description: Continental region name.
53503
+ continent_code:
53504
+ type: string
53505
+ description: Continental region identifier.
53506
+ accuracy_radius:
53507
+ type: string
53508
+ description: Geolocation precision radius.
53509
+ confidence:
53510
+ type: string
53511
+ description: Confidence score for geolocation accuracy.
53512
+ is_eu:
53513
+ type: boolean
53514
+ description: European Union membership status.
53515
+ required: []
53516
+ EmailSecurity:
53517
+ type: object
53518
+ description: Threat and anonymity profile for the IP address.
53519
+ required:
53520
+ - threat_score
53521
+ - is_tor
53522
+ - is_proxy
53523
+ - proxy_type
53524
+ - proxy_provider
53525
+ - is_anonymous
53526
+ - is_known_attacker
53527
+ - is_spam
53528
+ - is_bot
53529
+ - is_cloud_provider
53530
+ - cloud_provider
53531
+ properties:
53532
+ threat_score:
53533
+ type: integer
53534
+ description: Quantitative risk assessment score. Higher values indicate elevated security risk.
53535
+ is_tor:
53536
+ type: boolean
53537
+ description: Detection flag for IP addresses routed through the Tor anonymity network.
53538
+ is_proxy:
53539
+ type: boolean
53540
+ description: Detection flag identifying IP addresses operating as proxy servers.
53541
+ proxy_type:
53542
+ type: string
53543
+ description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).
53544
+ proxy_provider:
53545
+ type: string
53546
+ description: Identified service provider operating the proxy infrastructure.
53547
+ is_anonymous:
53548
+ type: boolean
53549
+ description: Anonymization detection flag for IP addresses using identity obfuscation techniques.
53550
+ is_known_attacker:
53551
+ type: boolean
53552
+ description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.
53553
+ is_spam:
53554
+ type: boolean
53555
+ description: Reputation flag for IP addresses associated with spam transmission.
53556
+ is_bot:
53557
+ type: boolean
53558
+ description: Automated traffic detection flag for IP addresses from bot networks.
53559
+ is_cloud_provider:
53560
+ type: boolean
53561
+ description: Infrastructure classification flag for IP addresses from cloud computing providers.
53562
+ cloud_provider:
53563
+ type: string
53564
+ description: Identified cloud infrastructure or hosting service provider name.
53565
+ EmailCheckRequest:
53566
+ type: object
53567
+ description: Request body for email validation.
53568
+ required:
53569
+ - email
53570
+ properties:
53571
+ email:
53572
+ type: string
53573
+ format: email
53574
+ description: Email address to validate.
53575
+ name:
53576
+ type: string
53577
+ description: Optional name or label for record tracking.
53578
+ ip:
53579
+ type: string
53580
+ format: ip
53581
+ description: Optional IP address for geolocation and security enrichment.
53582
+ ErrorResponse:
53583
+ type: object
53584
+ description: Standard error envelope returned by the API on failed requests.
53585
+ required:
53586
+ - message
53587
+ properties:
53588
+ error:
53589
+ type: string
53590
+ description: Short error category or exception type.
53591
+ message:
53592
+ type: string
53593
+ description: Human-readable error message describing the failure.
53594
+ path:
53595
+ type: string
53596
+ description: API endpoint path that produced the error.
53597
+ status:
53598
+ type: integer
53599
+ description: HTTP status code returned with the error.
53600
+ timestamp:
53601
+ type: string
53602
+ format: date-time
53603
+ description: Timestamp when the error occurred (ISO 8601).
53604
+ headers:
53605
+ X-AF-Credits-Cost:
53606
+ description: Specifies the number of credits consumed by the current request.
53607
+ schema:
53608
+ type: integer
53609
+ X-Concurrent-Threads:
53610
+ description: Specifies the maximum number of concurrent requests allowed.
53611
+ schema:
53612
+ type: integer
53613
+ X-Concurrent-Threads-Active:
53614
+ description: Indicates the number of active concurrent requests being processed.
53615
+ schema:
53616
+ type: integer
53617
+ security:
53618
+ - ApiKeyAuthHeader: []
53619
+ - ApiKeyAuthQuery: []
53620
+ `,
50261
53621
  "bulk-vat-rates-country": "openapi: 3.1.1\ninfo:\n title: Bulk VAT Rates by Country API Reference\n version: 1.0.0\n description: Get VAT rates for up to 100 countries or country/state combinations in a single API call. Returns a JSON array of VAT rate results, one entry per country that resolves successfully \u2014 entries with an invalid country/state are silently omitted rather than returned as per-item errors, so the array can be shorter than the requested list. Returns a 400 for a missing/malformed request body and a 413 if the payload exceeds the size limit.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Bulk VAT Rates by Country API Server\npaths:\n /vat/rates/country:\n post:\n tags:\n - Financial APIs\n summary: Bulk VAT lookup by country\n description: Retrieves VAT details for multiple countries or country-state combinations in a single request. Maximum of `100` entries per request are allowed.\n operationId: bulkVatRatesByCountry\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n description: 'Specify the desired response format. Options: ''json'' (default) or ''xml''.'\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BulkVatRequest'\n examples:\n typicalRequest:\n summary: Typical bulk VAT lookup request\n value:\n countries:\n - country: DE\n - country: United_States\n state: New_York\n responses:\n '200':\n description: Successful response \u2014 a JSON array of VAT results, one entry per country that resolved successfully, in request order. Countries that fail to resolve are omitted rather than represented as error entries.\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/VatCountryBulkResponse'\n examples:\n typicalSuccess:\n summary: All requested countries resolved\n value:\n - country: DE\n type: vat\n currency: EUR\n standard_rate: 0.19\n reduced_rate:\n - 0.07\n - 0\n categories:\n books: 0.07\n newspapers: 0.07\n periodicals: 0.07\n broadcasting: 0\n - country: United_States\n state: New_York\n type: vat\n currency: ''\n standard_rate: 0.04\n partialMatch:\n summary: One of two requested countries resolved \u2014 the unresolved one is simply absent\n value:\n - country: DE\n type: vat\n currency: EUR\n standard_rate: 0.19\n reduced_rate:\n - 0.07\n - 0\n categories:\n books: 0.07\n newspapers: 0.07\n periodicals: 0.07\n broadcasting: 0\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '400':\n description: Bad Request \u2014 Missing or malformed request body\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n InvalidBody:\n summary: countries field missing or malformed\n value:\n error: Invalid request body Exception\n message: Please provide data in required format in request body\n path: /v1.0/vat/rates/country\n status: 400\n timestamp: '2026-07-27T11:46:29.315Z'\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\n '413':\n description: Payload Too Large \u2014 Request body exceeds the size limit\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n examples:\n PayloadTooLarge:\n summary: Too many entries / body too large\n value:\n error: Payload too large Exception\n message: Maximum request body size limit exceeded\n path: /v1.0/vat/rates/country\n status: 413\n timestamp: '2026-07-27T11:46:29.925Z'\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n VatCountryBulkResponse:\n type: array\n description: Array of VAT rate results, one entry per country that resolved successfully, in request order. Countries that fail to resolve are omitted, so this array can be shorter than the requested countries list.\n items:\n $ref: '#/components/schemas/VatBulkResponseItem'\n VatBulkResponseItem:\n type: object\n description: A VAT rate result for a single country or state in a bulk response.\n required:\n - country\n - type\n - currency\n - standard_rate\n properties:\n country:\n type: string\n description: Country identifier returned in the result item.\n state:\n type: string\n description: State or region returned for sub-national lookups. Only present when the request included a state.\n type:\n type: string\n description: Tax type applied for the country or state.\n currency:\n type: string\n description: ISO 4217 currency code for the returned location. Can be an empty string for some state-level entries.\n standard_rate:\n type: number\n format: float\n description: Standard VAT or sales tax rate for the returned location.\n reduced_rate:\n type: array\n description: Reduced VAT rates when defined for the location.\n items:\n $ref: '#/components/schemas/VatRateDecimal'\n super_reduced_rate:\n type: array\n description: Super-reduced VAT rates for specific categories, when defined.\n items:\n $ref: '#/components/schemas/VatRateDecimal'\n parking_rate:\n type: number\n format: float\n description: Parking rate, when applicable.\n categories:\n description: Category-specific VAT rates, where defined (EU/UK only).\n $ref: '#/components/schemas/VatCategories'\n VatRateDecimal:\n type: number\n format: float\n description: A VAT rate expressed as a decimal (e.g., 0.19 = 19%).\n VatCategories:\n type: object\n description: Category-specific VAT rates, where defined (EU/UK only). Keys vary by country.\n properties:\n books:\n type: number\n format: float\n description: VAT rate for books, as a decimal (e.g., 0.07 = 7%).\n newspapers:\n type: number\n format: float\n description: VAT rate for newspapers, as a decimal (e.g., 0.07 = 7%).\n periodicals:\n type: number\n format: float\n description: VAT rate for periodicals, as a decimal (e.g., 0.07 = 7%).\n broadcasting:\n type: number\n format: float\n description: VAT rate for broadcasting services, as a decimal (e.g., 0.19 = 19%).\n BulkVatRequest:\n type: object\n description: Request body for bulk VAT rate lookup by country.\n required:\n - countries\n properties:\n countries:\n type: array\n description: Array of country entries to look up. Maximum 100 entries.\n items:\n $ref: '#/components/schemas/BulkVatRequestItem'\n BulkVatRequestItem:\n type: object\n description: A single country entry in a bulk VAT request.\n required:\n - country\n properties:\n country:\n type: string\n description: Country identifier in Alpha-2, Alpha-3, or full name.\n state:\n type: string\n description: Optional state or region for sub-national VAT.\n ErrorResponse:\n type: object\n description: Standard error envelope returned by the API on failed requests.\n required:\n - message\n properties:\n error:\n type: string\n description: Short error category or exception type.\n message:\n type: string\n description: Human-readable error message describing the failure.\n path:\n type: string\n description: API endpoint path that produced the error.\n status:\n type: integer\n description: HTTP status code returned with the error.\n timestamp:\n type: string\n format: date-time\n description: Timestamp when the error occurred (ISO 8601).\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
50262
53622
  "financial-apis-supported-countries": "openapi: 3.1.1\ninfo:\n title: Financial APIs Supported Countries Reference\n version: 1.0.0\n description: Retrieve the countries and states supported by the VAT, IBAN, and SWIFT APIs. The response always includes all three categories \u2014 VAT_Supported_Countries_And_States, IBAN_Supported_Countries, and SWIFT_Supported_Countries \u2014 each with a different shape. VAT entries are keyed by lowercase country name and include an ISO code plus, for a handful of countries (US, Canada, Spain), a nested map of sub-national state/region codes. IBAN and SWIFT entries are flat arrays of {name, countryCode} objects.\n contact:\n name: APIFreaks Support\n url: https://apifreaks.com/contact\n email: support@apifreaks.com\nservers:\n - url: https://api.apifreaks.com/v1.0\n description: Financial APIs Supported Countries API Server\npaths:\n /vat/supported-countries:\n get:\n tags:\n - Financial APIs\n summary: Get supported countries\n description: Returns the countries and states supported by the VAT, IBAN, and SWIFT APIs.\n operationId: getSupportedCountries\n parameters:\n - name: format\n in: query\n required: false\n schema:\n type: string\n enum:\n - json\n - xml\n default: json\n description: Format of the response. Default is JSON.\n - name: type\n in: query\n required: false\n schema:\n type: string\n description: Accepted by the endpoint but currently has no effect \u2014 all three categories (VAT, IBAN, SWIFT) are always returned regardless of this value.\n responses:\n '200':\n description: Successful response \u2014 always returns all three categories\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/SupportedCountriesResponse'\n examples:\n typicalSuccess:\n summary: Typical successful response (truncated)\n value:\n VAT_Supported_Countries_And_States:\n - germany:\n code: de\n - united_states:\n code: us\n states:\n california: us:ca\n new_york: us:ny\n texas: us:tx\n IBAN_Supported_Countries:\n - countryCode: DE\n name: Germany\n - countryCode: GB\n name: United Kingdom\n SWIFT_Supported_Countries:\n - name: Germany\n countryCode: DE\n - name: United States\n countryCode: US\n headers:\n X-AF-Credits-Cost:\n $ref: '#/components/headers/X-AF-Credits-Cost'\ncomponents:\n securitySchemes:\n ApiKeyAuthHeader:\n type: apiKey\n in: header\n name: X-apiKey\n description: Pass your API key via the X-apiKey request header.\n ApiKeyAuthQuery:\n type: apiKey\n in: query\n name: apiKey\n description: Pass your API key via the apiKey query parameter.\n schemas:\n SupportedCountriesResponse:\n type: object\n description: Countries and states supported by the VAT, IBAN, and SWIFT APIs.\n required:\n - VAT_Supported_Countries_And_States\n - IBAN_Supported_Countries\n - SWIFT_Supported_Countries\n properties:\n VAT_Supported_Countries_And_States:\n type: array\n description: Array of single-key objects, one per supported VAT country. Each key is the lowercase, underscore-separated country name.\n items:\n type: object\n description: A single VAT-supported country, keyed by its lowercase name.\n additionalProperties:\n title: VatCountryEntry\n $ref: '#/components/schemas/VatCountryEntry'\n IBAN_Supported_Countries:\n type: array\n description: Array of countries supported by the IBAN Validation API.\n items:\n $ref: '#/components/schemas/IbanCountryEntry'\n SWIFT_Supported_Countries:\n type: array\n description: Array of countries supported by the SWIFT/BIC Code Lookup and Finder APIs.\n items:\n $ref: '#/components/schemas/SwiftCountryEntry'\n VatCountryEntry:\n type: object\n description: 'VAT country metadata: an ISO 3166-1 alpha-2 code, plus an optional map of sub-national states/regions for countries with state-level VAT (US, Canada, Spain).'\n required:\n - code\n properties:\n code:\n type: string\n description: ISO 3166-1 alpha-2 country code, lowercase.\n states:\n type: object\n description: Map of state/region name to its combined country:state code. Only present for countries with sub-national VAT rates.\n additionalProperties:\n title: StateCode\n type: string\n description: Combined country:state identifier (e.g. us:ca).\n IbanCountryEntry:\n type: object\n description: A single country supported by the IBAN Validation API.\n required:\n - countryCode\n - name\n properties:\n countryCode:\n type: string\n description: ISO 3166-1 alpha-2 country code.\n name:\n type: string\n description: Full country name.\n SwiftCountryEntry:\n type: object\n description: A single country supported by the SWIFT/BIC Code Lookup and Finder APIs.\n required:\n - name\n - countryCode\n properties:\n name:\n type: string\n description: Full country name.\n countryCode:\n type: string\n description: ISO 3166-1 alpha-2 country code.\n headers:\n X-AF-Credits-Cost:\n description: Specifies the number of credits consumed by the current request.\n schema:\n type: integer\nsecurity:\n - ApiKeyAuthHeader: []\n - ApiKeyAuthQuery: []\n",
50263
53623
  "iban-validation": `openapi: 3.1.1
@@ -53529,7 +56889,7 @@ var SPECS_BY_CATEGORY = {
53529
56889
  "commodity": ["commodity-fluctuation", "commodity-prices", "commodity-symbols", "commodity-time-series", "historical-commodity-prices"],
53530
56890
  "currency": ["currency-converter", "currency-fluctuation", "currency-historical-data-limit", "currency-rate", "currency-supported", "currency-symbols", "currency-time-series", "geolocalized-currency-conversion", "historical-currency-converter", "historical-currency-rate"],
53531
56891
  "dns": ["bulk-dns-lookup", "dns-history-lookup", "dns-lookup", "reverse-dns-lookup"],
53532
- "domain": ["bulk-domain-checker", "domain-search-with-suggestions", "domain-search", "subdomain-lookup"],
56892
+ "domain": ["bulk-domain-checker", "domain-reputation", "domain-search-with-suggestions", "domain-search", "domain-typosquatting", "subdomain-lookup"],
53533
56893
  "email-validation": ["bulk-email-validation", "email-checker"],
53534
56894
  "financial": ["bulk-vat-rates-country", "financial-apis-supported-countries", "iban-validation", "swift-code-finder", "swift-code-lookup", "vat-number-validation", "vat-rates-by-ip", "vat-rates-country"],
53535
56895
  "geocoding": ["forward-geocoding", "reverse-geocoding"],
@@ -53582,8 +56942,10 @@ var SpecSlug = {
53582
56942
  DELETE_PDF_PAGE: "delete-pdf-page",
53583
56943
  DNS_HISTORY_LOOKUP: "dns-history-lookup",
53584
56944
  DNS_LOOKUP: "dns-lookup",
56945
+ DOMAIN_REPUTATION: "domain-reputation",
53585
56946
  DOMAIN_SEARCH: "domain-search",
53586
56947
  DOMAIN_SEARCH_WITH_SUGGESTIONS: "domain-search-with-suggestions",
56948
+ DOMAIN_TYPOSQUATTING: "domain-typosquatting",
53587
56949
  DOMAIN_WHOIS_HISTORY_LOOKUP: "domain-whois-history-lookup",
53588
56950
  EMAIL_CHECKER: "email-checker",
53589
56951
  FINANCIAL_APIS_SUPPORTED_COUNTRIES: "financial-apis-supported-countries",
@@ -53682,9 +57044,6 @@ function getSpecJson(slug) {
53682
57044
  function getSpecYaml(slug) {
53683
57045
  return SPECS_YAML[slug];
53684
57046
  }
53685
- function getSpec(slug) {
53686
- return getSpecJson(slug);
53687
- }
53688
57047
  function getSpecsByCategory(category) {
53689
57048
  return SPECS_BY_CATEGORY[category] ?? [];
53690
57049
  }
@@ -53697,7 +57056,6 @@ function getSpecsByCategory(category) {
53697
57056
  SPEC_SLUGS,
53698
57057
  SpecCategory,
53699
57058
  SpecSlug,
53700
- getSpec,
53701
57059
  getSpecJson,
53702
57060
  getSpecYaml,
53703
57061
  getSpecsByCategory