@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.js CHANGED
@@ -6993,6 +6993,1123 @@ var bulk_domain_checker_default = {
6993
6993
  ]
6994
6994
  };
6995
6995
 
6996
+ // specs/domain/domain-reputation.json
6997
+ var domain_reputation_default = {
6998
+ openapi: "3.1.1",
6999
+ info: {
7000
+ title: "Domain Reputation API - Real-Time Risk Verdict, Trust Score, DGA Detection, and Threat Intelligence for Any Domain",
7001
+ version: "1.0.0",
7002
+ 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.",
7003
+ contact: {
7004
+ name: "APIFreaks Support",
7005
+ url: "https://apifreaks.com/contact",
7006
+ email: "support@apifreaks.com"
7007
+ }
7008
+ },
7009
+ servers: [
7010
+ {
7011
+ url: "https://api.apifreaks.com/v1.0",
7012
+ description: "Domain Reputation API Server"
7013
+ }
7014
+ ],
7015
+ paths: {
7016
+ "/domain/reputation": {
7017
+ get: {
7018
+ tags: ["Domain APIs"],
7019
+ summary: "Get a real-time risk verdict, trust score, and threat intelligence for any domain.",
7020
+ 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.",
7021
+ parameters: [
7022
+ {
7023
+ name: "format",
7024
+ in: "query",
7025
+ required: false,
7026
+ schema: {
7027
+ type: "string",
7028
+ enum: ["json", "xml"],
7029
+ default: "json"
7030
+ },
7031
+ description: "Format of the response."
7032
+ },
7033
+ {
7034
+ name: "domainName",
7035
+ in: "query",
7036
+ required: true,
7037
+ schema: {
7038
+ type: "string"
7039
+ },
7040
+ description: "The domain name to assess (e.g. example.com). Must contain at least one dot and be at most 253 characters. Automatically lowercased."
7041
+ }
7042
+ ],
7043
+ responses: {
7044
+ "200": {
7045
+ description: "Success",
7046
+ content: {
7047
+ "application/json": {
7048
+ schema: {
7049
+ $ref: "#/components/schemas/DomainReputationResponse"
7050
+ },
7051
+ examples: {
7052
+ success: {
7053
+ summary: "Safe domain (apple.com)",
7054
+ value: {
7055
+ input: {
7056
+ domain: "apple.com"
7057
+ },
7058
+ assessed_at: "2026-09-08T08:36:23.820181075Z",
7059
+ version: "1.0.0",
7060
+ processing_time_ms: 1739,
7061
+ risk_category: {
7062
+ verdict: "safe",
7063
+ confidence: 0.8,
7064
+ primary_threat: null,
7065
+ severity: "none",
7066
+ threat_types: [],
7067
+ sources: [],
7068
+ pivot_matches: []
7069
+ },
7070
+ dga_score: {
7071
+ score: 0,
7072
+ is_dga: false,
7073
+ model: "deterministic_features_v1",
7074
+ features: {
7075
+ domain_length: 5,
7076
+ vowel_consonant_ratio: 0.6666666666666666,
7077
+ ngram_perplexity: -8.83,
7078
+ shannon_entropy: 1.9219280948873623,
7079
+ digit_letter_ratio: 0,
7080
+ consonant_streak_max: 3,
7081
+ tld_in_known_dga_set: false
7082
+ },
7083
+ interpretation: "human_readable"
7084
+ },
7085
+ trust_signals: {
7086
+ trust_score: 72,
7087
+ trust_band: "high",
7088
+ signals: {
7089
+ positive: [
7090
+ {
7091
+ code: "spf_configured",
7092
+ weight: 5,
7093
+ polarity: "positive",
7094
+ category: "email_security",
7095
+ evidence: "SPF record found",
7096
+ confidence: 1
7097
+ },
7098
+ {
7099
+ code: "dmarc_present",
7100
+ weight: 5,
7101
+ polarity: "positive",
7102
+ category: "email_security",
7103
+ evidence: "DMARC record present",
7104
+ confidence: 1
7105
+ },
7106
+ {
7107
+ code: "established_domain",
7108
+ weight: 10,
7109
+ polarity: "positive",
7110
+ category: "domain_age",
7111
+ evidence: "Domain age > 2 years",
7112
+ confidence: 1
7113
+ },
7114
+ {
7115
+ code: "mature_domain",
7116
+ weight: 5,
7117
+ polarity: "positive",
7118
+ category: "domain_age",
7119
+ evidence: "Domain age > 5 years",
7120
+ confidence: 1
7121
+ },
7122
+ {
7123
+ code: "paid_ssl",
7124
+ weight: 5,
7125
+ polarity: "positive",
7126
+ category: "ssl_certificate",
7127
+ evidence: "Uses paid SSL certificate",
7128
+ confidence: 0.9
7129
+ },
7130
+ {
7131
+ code: "valid_ssl",
7132
+ weight: 3,
7133
+ polarity: "positive",
7134
+ category: "ssl_certificate",
7135
+ evidence: "Valid SSL certificate",
7136
+ confidence: 1
7137
+ }
7138
+ ],
7139
+ negative: [
7140
+ {
7141
+ code: "privacy_whois",
7142
+ weight: 1,
7143
+ polarity: "negative",
7144
+ category: "whois_privacy",
7145
+ evidence: "WHOIS information is privacy-protected",
7146
+ confidence: 0.9
7147
+ },
7148
+ {
7149
+ code: "external_redirect",
7150
+ weight: 10,
7151
+ polarity: "negative",
7152
+ category: "content_analysis",
7153
+ evidence: "Site redirects visitors to an external domain",
7154
+ confidence: 0.8
7155
+ }
7156
+ ],
7157
+ neutral: []
7158
+ },
7159
+ indicators: {
7160
+ is_newly_registered: false,
7161
+ uses_free_extension: false,
7162
+ uses_free_ssl: false,
7163
+ has_privacy_whois: true,
7164
+ ssl_age_days: 26,
7165
+ has_dmarc: true,
7166
+ has_spf: true,
7167
+ redirects_externally: true,
7168
+ javascript_obfuscated: false,
7169
+ domain_age_days: 14446,
7170
+ registrar: "NOM-IQ Ltd dba Com Laude"
7171
+ }
7172
+ },
7173
+ email_deliverability: {
7174
+ score: 95,
7175
+ grade: "excellent",
7176
+ can_receive_email: true,
7177
+ authentication: {
7178
+ spf: {
7179
+ present: true,
7180
+ policy: "~all",
7181
+ record: "v=spf1 include:_spf.apple.com include:_spf-txn.apple.com ~all"
7182
+ },
7183
+ dkim: {
7184
+ found: true,
7185
+ selectors_found: ["selector1", "selector2"],
7186
+ providers_detected: [],
7187
+ note: "Only common selectors are probed; a domain may use a custom selector"
7188
+ },
7189
+ dmarc: {
7190
+ present: true,
7191
+ policy: "quarantine",
7192
+ reporting_configured: true
7193
+ }
7194
+ },
7195
+ infrastructure: {
7196
+ mx_count: 6,
7197
+ mx_records: [
7198
+ "mx-in-ma.apple.com.",
7199
+ "mx-in.g.apple.com.",
7200
+ "mx-in-rn.apple.com.",
7201
+ "mx-in-sg.apple.com.",
7202
+ "mx-in-hfd.apple.com.",
7203
+ "mx-in-vib.apple.com."
7204
+ ],
7205
+ mx_provider: "self_hosted",
7206
+ null_mx: false
7207
+ },
7208
+ reputation: {
7209
+ spam_blacklisted: false,
7210
+ newly_registered: false,
7211
+ domain_age_days: 14446
7212
+ },
7213
+ issues: [
7214
+ {
7215
+ code: "spf_softfail",
7216
+ severity: "low",
7217
+ message: "The SPF policy '~all' only soft-fails unauthorized senders",
7218
+ recommendation: "Move to '-all' once all legitimate sending sources are listed"
7219
+ }
7220
+ ]
7221
+ },
7222
+ intelligence: {
7223
+ ioc_type: "domain",
7224
+ ioc_value: "apple.com",
7225
+ related_iocs: [
7226
+ {
7227
+ type: "ipv4",
7228
+ value: "17.253.144.10",
7229
+ confidence: 0.9
7230
+ },
7231
+ {
7232
+ type: "ipv6",
7233
+ value: "2620:149:af0:0:0:0:0:10",
7234
+ confidence: 0.9
7235
+ }
7236
+ ],
7237
+ feed_tags: [
7238
+ "verdict:safe",
7239
+ "severity:none",
7240
+ "ns:d.ns.apple.com.",
7241
+ "ns:b.ns.apple.com.",
7242
+ "ns:c.ns.apple.com.",
7243
+ "ns:a.ns.apple.com.",
7244
+ "mx:mx-in-ma.apple.com.",
7245
+ "mx:mx-in.g.apple.com.",
7246
+ "mx:mx-in-rn.apple.com.",
7247
+ "mx:mx-in-sg.apple.com.",
7248
+ "mx:mx-in-hfd.apple.com.",
7249
+ "mx:mx-in-vib.apple.com."
7250
+ ],
7251
+ 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']",
7252
+ recommended_action: "allow",
7253
+ first_seen: null,
7254
+ last_seen: null
7255
+ },
7256
+ evidence_summary: {
7257
+ why_flagged: []
7258
+ },
7259
+ errors: []
7260
+ }
7261
+ },
7262
+ partialData: {
7263
+ summary: "Partial data (WHOIS lookup failed)",
7264
+ value: {
7265
+ input: {
7266
+ domain: "apifreaks.com"
7267
+ },
7268
+ risk_category: {
7269
+ verdict: "safe",
7270
+ confidence: 0.7,
7271
+ severity: "none"
7272
+ },
7273
+ trust_signals: {
7274
+ trust_score: 70,
7275
+ trust_band: "high",
7276
+ indicators: {
7277
+ is_newly_registered: null,
7278
+ has_privacy_whois: null,
7279
+ domain_age_days: null,
7280
+ registrar: null
7281
+ }
7282
+ },
7283
+ errors: ["WHOIS lookup failed"]
7284
+ }
7285
+ }
7286
+ }
7287
+ }
7288
+ },
7289
+ headers: {
7290
+ "X-AF-Credits-Cost": {
7291
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7292
+ }
7293
+ }
7294
+ },
7295
+ "400": {
7296
+ description: "Bad Request \u2013 Invalid or missing domainName parameter",
7297
+ content: {
7298
+ "application/json": {
7299
+ schema: {
7300
+ $ref: "#/components/schemas/ErrorResponse"
7301
+ },
7302
+ examples: {
7303
+ invalidDomain: {
7304
+ summary: "Invalid domain parameter",
7305
+ value: {
7306
+ error: "Invalid Domain Exception",
7307
+ message: 'Please provide a valid domain name in the "domainName" parameter.',
7308
+ path: "/v1.0/domain/reputation",
7309
+ status: 400,
7310
+ timestamp: "2026-09-08T12:00:00.000Z"
7311
+ }
7312
+ },
7313
+ missingDomain: {
7314
+ summary: "Missing domainName parameter",
7315
+ value: {
7316
+ error: "Invalid Param Exception",
7317
+ message: 'Please provide a valid domain name in the "domainName" parameter.',
7318
+ path: "/v1.0/domain/reputation",
7319
+ status: 400,
7320
+ timestamp: "2026-09-08T12:00:00.000Z"
7321
+ }
7322
+ }
7323
+ }
7324
+ }
7325
+ },
7326
+ headers: {
7327
+ "X-AF-Credits-Cost": {
7328
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7329
+ }
7330
+ }
7331
+ },
7332
+ "503": {
7333
+ description: "Service Unavailable \u2013 The assessment service is temporarily unavailable",
7334
+ content: {
7335
+ "application/json": {
7336
+ schema: {
7337
+ $ref: "#/components/schemas/ErrorResponse"
7338
+ },
7339
+ examples: {
7340
+ serviceUnavailable: {
7341
+ summary: "Service Unavailable",
7342
+ value: {
7343
+ error: "Service Unavailable",
7344
+ message: "Service is unavailable. Please try after some time. [For Technical Support email at: support@apifreaks.com]",
7345
+ path: "/v1.0/domain/reputation",
7346
+ status: 503,
7347
+ timestamp: "2026-09-08T12:00:00.000Z"
7348
+ }
7349
+ }
7350
+ }
7351
+ }
7352
+ },
7353
+ headers: {
7354
+ "X-AF-Credits-Cost": {
7355
+ $ref: "#/components/headers/X-AF-Credits-Cost"
7356
+ }
7357
+ }
7358
+ }
7359
+ },
7360
+ operationId: "getDomainReputation"
7361
+ }
7362
+ }
7363
+ },
7364
+ components: {
7365
+ securitySchemes: {
7366
+ ApiKeyAuthHeader: {
7367
+ type: "apiKey",
7368
+ in: "header",
7369
+ name: "X-apiKey",
7370
+ description: "Pass your API key via the X-apiKey request header."
7371
+ },
7372
+ ApiKeyAuthQuery: {
7373
+ type: "apiKey",
7374
+ in: "query",
7375
+ name: "apiKey",
7376
+ description: "Pass your API key via the apiKey query parameter."
7377
+ }
7378
+ },
7379
+ schemas: {
7380
+ DomainReputationResponse: {
7381
+ type: "object",
7382
+ required: [
7383
+ "input",
7384
+ "assessed_at",
7385
+ "version",
7386
+ "processing_time_ms",
7387
+ "risk_category",
7388
+ "dga_score",
7389
+ "trust_signals",
7390
+ "email_deliverability",
7391
+ "intelligence",
7392
+ "evidence_summary",
7393
+ "errors"
7394
+ ],
7395
+ properties: {
7396
+ input: {
7397
+ type: "object",
7398
+ required: ["domain"],
7399
+ properties: {
7400
+ domain: {
7401
+ type: "string",
7402
+ description: "Domain name being analyzed."
7403
+ }
7404
+ },
7405
+ description: "Input object containing the analyzed domain."
7406
+ },
7407
+ assessed_at: {
7408
+ type: "string",
7409
+ description: "Timestamp when the assessment was performed (YYYY-MM-DDTHH:mm:ssZ)."
7410
+ },
7411
+ version: {
7412
+ type: "string",
7413
+ description: "API / response schema version."
7414
+ },
7415
+ processing_time_ms: {
7416
+ type: "integer",
7417
+ description: "Time taken to process the request, in milliseconds."
7418
+ },
7419
+ risk_category: {
7420
+ $ref: "#/components/schemas/RiskCategory"
7421
+ },
7422
+ dga_score: {
7423
+ $ref: "#/components/schemas/DgaScore"
7424
+ },
7425
+ trust_signals: {
7426
+ $ref: "#/components/schemas/TrustSignals"
7427
+ },
7428
+ email_deliverability: {
7429
+ $ref: "#/components/schemas/EmailDeliverability"
7430
+ },
7431
+ intelligence: {
7432
+ $ref: "#/components/schemas/Intelligence"
7433
+ },
7434
+ evidence_summary: {
7435
+ $ref: "#/components/schemas/EvidenceSummary"
7436
+ },
7437
+ errors: {
7438
+ type: "array",
7439
+ items: {
7440
+ type: "string"
7441
+ },
7442
+ description: 'List of errors encountered during processing, if any (e.g. "WHOIS lookup failed"). An empty array means every signal resolved.'
7443
+ }
7444
+ },
7445
+ description: "Full domain reputation assessment response."
7446
+ },
7447
+ RiskCategory: {
7448
+ type: "object",
7449
+ required: [
7450
+ "verdict",
7451
+ "confidence",
7452
+ "primary_threat",
7453
+ "severity",
7454
+ "threat_types",
7455
+ "sources",
7456
+ "pivot_matches"
7457
+ ],
7458
+ properties: {
7459
+ verdict: {
7460
+ type: "string",
7461
+ enum: ["safe", "suspicious"],
7462
+ description: "Final verdict of the risk assessment."
7463
+ },
7464
+ confidence: {
7465
+ type: "number",
7466
+ format: "float",
7467
+ description: "Confidence score for the verdict (0-1)."
7468
+ },
7469
+ primary_threat: {
7470
+ type: ["string", "null"],
7471
+ description: "Main threat type identified (e.g. phishing). null when no threat was identified."
7472
+ },
7473
+ severity: {
7474
+ type: "string",
7475
+ enum: ["none", "low", "medium", "high"],
7476
+ description: "Severity level of the risk."
7477
+ },
7478
+ threat_types: {
7479
+ type: "array",
7480
+ items: {
7481
+ type: "string"
7482
+ },
7483
+ description: "List of threat types associated with the domain."
7484
+ },
7485
+ sources: {
7486
+ type: "array",
7487
+ items: {
7488
+ $ref: "#/components/schemas/ThreatSource"
7489
+ },
7490
+ description: "Threat intelligence sources that flagged the domain. Empty when nothing flagged it."
7491
+ },
7492
+ pivot_matches: {
7493
+ type: "array",
7494
+ items: {
7495
+ $ref: "#/components/schemas/PivotMatch"
7496
+ },
7497
+ description: "Related pivots (nameserver, email, etc.) linked to known threats."
7498
+ }
7499
+ },
7500
+ description: "Overall risk assessment for the domain."
7501
+ },
7502
+ ThreatSource: {
7503
+ type: "object",
7504
+ required: [
7505
+ "source",
7506
+ "indicator",
7507
+ "threat_type",
7508
+ "confidence",
7509
+ "first_seen",
7510
+ "last_seen"
7511
+ ],
7512
+ properties: {
7513
+ source: {
7514
+ type: "string",
7515
+ description: "Name of the threat intelligence source (e.g. Spamhaus)."
7516
+ },
7517
+ indicator: {
7518
+ type: "string",
7519
+ description: "Indicator matched by this source."
7520
+ },
7521
+ threat_type: {
7522
+ type: "string",
7523
+ description: "Threat type reported by this source."
7524
+ },
7525
+ confidence: {
7526
+ type: "number",
7527
+ format: "float",
7528
+ description: "Confidence score from this source (0-1)."
7529
+ },
7530
+ first_seen: {
7531
+ type: "string",
7532
+ description: "First time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ)."
7533
+ },
7534
+ last_seen: {
7535
+ type: "string",
7536
+ description: "Last time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ)."
7537
+ }
7538
+ },
7539
+ description: "A threat intelligence source that flagged the domain."
7540
+ },
7541
+ PivotMatch: {
7542
+ type: "object",
7543
+ required: [
7544
+ "pivot",
7545
+ "pivot_type",
7546
+ "total_related_threats",
7547
+ "confidence"
7548
+ ],
7549
+ properties: {
7550
+ pivot: {
7551
+ type: "string",
7552
+ description: "Pivot value (e.g. a nameserver or email address)."
7553
+ },
7554
+ pivot_type: {
7555
+ type: "string",
7556
+ description: "Type of pivot."
7557
+ },
7558
+ total_related_threats: {
7559
+ type: "integer",
7560
+ description: "Total number of threats related to this pivot."
7561
+ },
7562
+ confidence: {
7563
+ type: "number",
7564
+ format: "float",
7565
+ description: "Confidence score for the pivot match (0-1)."
7566
+ }
7567
+ },
7568
+ description: "A related pivot linked to known threats."
7569
+ },
7570
+ DgaScore: {
7571
+ type: "object",
7572
+ required: ["score", "is_dga", "model", "features", "interpretation"],
7573
+ properties: {
7574
+ score: {
7575
+ type: "number",
7576
+ format: "float",
7577
+ description: "DGA likelihood score (0-1)."
7578
+ },
7579
+ is_dga: {
7580
+ type: "boolean",
7581
+ description: "Indicates whether the domain is likely DGA-generated."
7582
+ },
7583
+ model: {
7584
+ type: "string",
7585
+ description: "Model used to compute the DGA score."
7586
+ },
7587
+ features: {
7588
+ $ref: "#/components/schemas/DgaFeatures"
7589
+ },
7590
+ interpretation: {
7591
+ type: "string",
7592
+ description: "Human-readable interpretation of the DGA score."
7593
+ }
7594
+ },
7595
+ description: "Domain Generation Algorithm (DGA) detection results."
7596
+ },
7597
+ DgaFeatures: {
7598
+ type: "object",
7599
+ required: [
7600
+ "domain_length",
7601
+ "vowel_consonant_ratio",
7602
+ "ngram_perplexity",
7603
+ "shannon_entropy",
7604
+ "digit_letter_ratio",
7605
+ "consonant_streak_max",
7606
+ "tld_in_known_dga_set"
7607
+ ],
7608
+ properties: {
7609
+ domain_length: {
7610
+ type: "integer",
7611
+ description: "Length of the domain name."
7612
+ },
7613
+ vowel_consonant_ratio: {
7614
+ type: "number",
7615
+ format: "float",
7616
+ description: "Ratio of vowels to consonants in the domain."
7617
+ },
7618
+ ngram_perplexity: {
7619
+ type: "number",
7620
+ format: "float",
7621
+ description: "N-gram perplexity score of the domain string."
7622
+ },
7623
+ shannon_entropy: {
7624
+ type: "number",
7625
+ format: "float",
7626
+ description: "Shannon entropy of the domain string."
7627
+ },
7628
+ digit_letter_ratio: {
7629
+ type: "number",
7630
+ format: "float",
7631
+ description: "Ratio of digits to letters in the domain."
7632
+ },
7633
+ consonant_streak_max: {
7634
+ type: "integer",
7635
+ description: "Maximum consecutive consonant streak in the domain."
7636
+ },
7637
+ tld_in_known_dga_set: {
7638
+ type: "boolean",
7639
+ description: "Indicates if the TLD belongs to a known DGA set."
7640
+ }
7641
+ },
7642
+ description: "Underlying lexical / statistical features used in DGA detection."
7643
+ },
7644
+ TrustSignals: {
7645
+ type: "object",
7646
+ required: ["trust_score", "trust_band", "signals", "indicators"],
7647
+ properties: {
7648
+ trust_score: {
7649
+ type: "integer",
7650
+ description: "Overall trust score (0-100)."
7651
+ },
7652
+ trust_band: {
7653
+ type: "string",
7654
+ description: "Trust score band / category (e.g. low, medium, high)."
7655
+ },
7656
+ signals: {
7657
+ $ref: "#/components/schemas/TrustScoreSignals"
7658
+ },
7659
+ indicators: {
7660
+ $ref: "#/components/schemas/TrustIndicators"
7661
+ }
7662
+ },
7663
+ description: "Trust scoring and supporting signals for the domain."
7664
+ },
7665
+ TrustScoreSignals: {
7666
+ type: "object",
7667
+ required: ["positive", "negative", "neutral"],
7668
+ properties: {
7669
+ positive: {
7670
+ type: "array",
7671
+ items: {
7672
+ $ref: "#/components/schemas/TrustSignalItem"
7673
+ },
7674
+ description: "Signals that positively affect the trust score."
7675
+ },
7676
+ negative: {
7677
+ type: "array",
7678
+ items: {
7679
+ $ref: "#/components/schemas/TrustSignalItem"
7680
+ },
7681
+ description: "Signals that negatively affect the trust score."
7682
+ },
7683
+ neutral: {
7684
+ type: "array",
7685
+ items: {
7686
+ $ref: "#/components/schemas/TrustSignalItem"
7687
+ },
7688
+ description: "Signals that are neutral to the trust score."
7689
+ }
7690
+ },
7691
+ description: "Signals contributing to the trust score."
7692
+ },
7693
+ TrustSignalItem: {
7694
+ type: "object",
7695
+ required: [
7696
+ "code",
7697
+ "weight",
7698
+ "polarity",
7699
+ "category",
7700
+ "evidence",
7701
+ "confidence"
7702
+ ],
7703
+ properties: {
7704
+ code: {
7705
+ type: "string",
7706
+ description: "Signal code identifier (e.g. valid_ssl, dmarc_missing)."
7707
+ },
7708
+ weight: {
7709
+ type: "integer",
7710
+ description: "Weight assigned to the signal."
7711
+ },
7712
+ polarity: {
7713
+ type: "string",
7714
+ enum: ["positive", "negative", "neutral"],
7715
+ description: "Polarity of the signal."
7716
+ },
7717
+ category: {
7718
+ type: "string",
7719
+ description: "Category the signal belongs to (e.g. ssl_certificate)."
7720
+ },
7721
+ evidence: {
7722
+ type: "string",
7723
+ description: "Evidence supporting the signal."
7724
+ },
7725
+ confidence: {
7726
+ type: "number",
7727
+ format: "float",
7728
+ description: "Confidence score for the signal (0-1)."
7729
+ }
7730
+ },
7731
+ description: "A single trust signal contributing to the trust score."
7732
+ },
7733
+ TrustIndicators: {
7734
+ type: "object",
7735
+ properties: {
7736
+ is_newly_registered: {
7737
+ type: ["boolean", "null"],
7738
+ description: "Indicates whether the domain was recently registered. null when WHOIS data is unavailable."
7739
+ },
7740
+ uses_free_extension: {
7741
+ type: "boolean",
7742
+ description: "Indicates whether the domain uses a free TLD extension."
7743
+ },
7744
+ uses_free_ssl: {
7745
+ type: "boolean",
7746
+ description: "Indicates whether the domain uses a free SSL certificate."
7747
+ },
7748
+ has_privacy_whois: {
7749
+ type: ["boolean", "null"],
7750
+ description: "Indicates whether WHOIS privacy protection is enabled. null when WHOIS data is unavailable."
7751
+ },
7752
+ ssl_age_days: {
7753
+ type: ["integer", "null"],
7754
+ description: "Age of the SSL certificate in days."
7755
+ },
7756
+ has_dmarc: {
7757
+ type: "boolean",
7758
+ description: "Indicates whether a DMARC record exists."
7759
+ },
7760
+ has_spf: {
7761
+ type: "boolean",
7762
+ description: "Indicates whether an SPF record exists."
7763
+ },
7764
+ redirects_externally: {
7765
+ type: "boolean",
7766
+ description: "Indicates whether the domain redirects to an external site."
7767
+ },
7768
+ javascript_obfuscated: {
7769
+ type: "boolean",
7770
+ description: "Indicates whether obfuscated JavaScript was detected."
7771
+ },
7772
+ domain_age_days: {
7773
+ type: ["integer", "null"],
7774
+ description: "Age of the domain in days. null when WHOIS data is unavailable."
7775
+ },
7776
+ registrar: {
7777
+ type: ["string", "null"],
7778
+ description: "Domain registrar name. null when WHOIS data is unavailable."
7779
+ }
7780
+ },
7781
+ description: "Individual trust / risk indicators for the domain."
7782
+ },
7783
+ EmailDeliverability: {
7784
+ type: "object",
7785
+ required: [
7786
+ "score",
7787
+ "grade",
7788
+ "can_receive_email",
7789
+ "authentication",
7790
+ "infrastructure",
7791
+ "reputation",
7792
+ "issues"
7793
+ ],
7794
+ properties: {
7795
+ score: {
7796
+ type: "integer",
7797
+ description: "Overall email deliverability score out of 100."
7798
+ },
7799
+ grade: {
7800
+ type: "string",
7801
+ description: "Letter / word grade summarizing the deliverability score."
7802
+ },
7803
+ can_receive_email: {
7804
+ type: "boolean",
7805
+ description: "Indicates whether the domain is configured to receive email."
7806
+ },
7807
+ authentication: {
7808
+ $ref: "#/components/schemas/EmailAuthentication"
7809
+ },
7810
+ infrastructure: {
7811
+ $ref: "#/components/schemas/EmailInfrastructure"
7812
+ },
7813
+ reputation: {
7814
+ $ref: "#/components/schemas/EmailReputation"
7815
+ },
7816
+ issues: {
7817
+ type: "array",
7818
+ items: {
7819
+ $ref: "#/components/schemas/EmailIssue"
7820
+ },
7821
+ description: "List of detected email deliverability issues or misconfigurations."
7822
+ }
7823
+ },
7824
+ description: "Assessment of the domain's ability to send and receive email reliably."
7825
+ },
7826
+ EmailAuthentication: {
7827
+ type: "object",
7828
+ required: ["spf", "dkim", "dmarc"],
7829
+ properties: {
7830
+ spf: {
7831
+ $ref: "#/components/schemas/SpfRecord"
7832
+ },
7833
+ dkim: {
7834
+ $ref: "#/components/schemas/DkimRecord"
7835
+ },
7836
+ dmarc: {
7837
+ $ref: "#/components/schemas/DmarcRecord"
7838
+ }
7839
+ },
7840
+ description: "Email authentication mechanisms configured for the domain."
7841
+ },
7842
+ SpfRecord: {
7843
+ type: "object",
7844
+ required: ["present", "policy", "record"],
7845
+ properties: {
7846
+ present: {
7847
+ type: "boolean",
7848
+ description: "Indicates whether an SPF record was found."
7849
+ },
7850
+ policy: {
7851
+ type: "string",
7852
+ description: "SPF enforcement policy qualifier found in the record (e.g. ~all, -all)."
7853
+ },
7854
+ record: {
7855
+ type: "string",
7856
+ description: "Raw SPF DNS TXT record string."
7857
+ }
7858
+ },
7859
+ description: "Sender Policy Framework configuration."
7860
+ },
7861
+ DkimRecord: {
7862
+ type: "object",
7863
+ required: ["found", "selectors_found", "providers_detected", "note"],
7864
+ properties: {
7865
+ found: {
7866
+ type: "boolean",
7867
+ description: "Indicates whether a DKIM record was found for any probed selector."
7868
+ },
7869
+ selectors_found: {
7870
+ type: "array",
7871
+ items: {
7872
+ type: "string"
7873
+ },
7874
+ description: "List of DKIM selectors for which a record was found."
7875
+ },
7876
+ providers_detected: {
7877
+ type: "array",
7878
+ items: {
7879
+ type: "string"
7880
+ },
7881
+ description: "Email service providers inferred from the matched DKIM selectors."
7882
+ },
7883
+ note: {
7884
+ type: "string",
7885
+ description: "Clarifying note about the limitations of DKIM selector probing."
7886
+ }
7887
+ },
7888
+ description: "DomainKeys Identified Mail configuration."
7889
+ },
7890
+ DmarcRecord: {
7891
+ type: "object",
7892
+ required: ["present", "policy", "reporting_configured"],
7893
+ properties: {
7894
+ present: {
7895
+ type: "boolean",
7896
+ description: "Indicates whether a DMARC record was found."
7897
+ },
7898
+ policy: {
7899
+ type: "string",
7900
+ description: "DMARC enforcement policy applied to failing messages (e.g. none, quarantine, reject)."
7901
+ },
7902
+ reporting_configured: {
7903
+ type: "boolean",
7904
+ description: "Indicates whether DMARC aggregate / forensic reporting addresses are configured."
7905
+ }
7906
+ },
7907
+ description: "Domain-based Message Authentication, Reporting and Conformance configuration."
7908
+ },
7909
+ EmailInfrastructure: {
7910
+ type: "object",
7911
+ required: ["mx_count", "mx_records", "mx_provider", "null_mx"],
7912
+ properties: {
7913
+ mx_count: {
7914
+ type: "integer",
7915
+ description: "Number of MX records found for the domain."
7916
+ },
7917
+ mx_records: {
7918
+ type: "array",
7919
+ items: {
7920
+ type: "string"
7921
+ },
7922
+ description: "List of mail exchange server hostnames for the domain."
7923
+ },
7924
+ mx_provider: {
7925
+ type: "string",
7926
+ description: "Email hosting provider inferred from the MX records."
7927
+ },
7928
+ null_mx: {
7929
+ type: "boolean",
7930
+ description: "Indicates whether the domain explicitly declines email via a null MX record."
7931
+ }
7932
+ },
7933
+ description: "Mail server infrastructure backing the domain."
7934
+ },
7935
+ EmailReputation: {
7936
+ type: "object",
7937
+ required: ["spam_blacklisted", "newly_registered"],
7938
+ properties: {
7939
+ spam_blacklisted: {
7940
+ type: "boolean",
7941
+ description: "Indicates whether the domain appears on known spam blacklists."
7942
+ },
7943
+ newly_registered: {
7944
+ type: "boolean",
7945
+ description: "Indicates whether the domain was registered recently."
7946
+ },
7947
+ domain_age_days: {
7948
+ type: ["integer", "null"],
7949
+ description: "Age of the domain in days since registration."
7950
+ }
7951
+ },
7952
+ description: "Reputation and trust signals related to the domain's email sending history."
7953
+ },
7954
+ EmailIssue: {
7955
+ type: "object",
7956
+ properties: {
7957
+ code: {
7958
+ type: "string",
7959
+ description: "Machine-readable code identifying the specific deliverability issue."
7960
+ },
7961
+ severity: {
7962
+ type: "string",
7963
+ description: "Severity level assigned to the detected issue."
7964
+ },
7965
+ message: {
7966
+ type: "string",
7967
+ description: "Human-readable explanation of the issue."
7968
+ },
7969
+ recommendation: {
7970
+ type: "string",
7971
+ description: "Plain-language description of the exact fix to apply."
7972
+ }
7973
+ },
7974
+ description: "A detected email deliverability issue or misconfiguration."
7975
+ },
7976
+ Intelligence: {
7977
+ type: "object",
7978
+ required: [
7979
+ "ioc_type",
7980
+ "ioc_value",
7981
+ "related_iocs",
7982
+ "feed_tags",
7983
+ "stix_pattern",
7984
+ "recommended_action",
7985
+ "first_seen",
7986
+ "last_seen"
7987
+ ],
7988
+ properties: {
7989
+ ioc_type: {
7990
+ type: "string",
7991
+ description: "Type of the indicator of compromise (e.g. domain)."
7992
+ },
7993
+ ioc_value: {
7994
+ type: "string",
7995
+ description: "Value of the indicator of compromise."
7996
+ },
7997
+ related_iocs: {
7998
+ type: "array",
7999
+ items: {
8000
+ $ref: "#/components/schemas/RelatedIoc"
8001
+ },
8002
+ description: "Other IOCs related to this domain."
8003
+ },
8004
+ feed_tags: {
8005
+ type: "array",
8006
+ items: {
8007
+ type: "string"
8008
+ },
8009
+ description: "Tags associated with this IOC from threat feeds."
8010
+ },
8011
+ stix_pattern: {
8012
+ type: "string",
8013
+ description: "STIX 2.1 pattern representation of the IOC, ready to wrap into an Indicator object."
8014
+ },
8015
+ recommended_action: {
8016
+ type: "string",
8017
+ enum: ["allow", "monitor", "block"],
8018
+ description: "Recommended action based on the assessment."
8019
+ },
8020
+ first_seen: {
8021
+ type: ["string", "null"],
8022
+ description: "First time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed."
8023
+ },
8024
+ last_seen: {
8025
+ type: ["string", "null"],
8026
+ description: "Last time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed."
8027
+ }
8028
+ },
8029
+ description: "Threat intelligence details for the indicator of compromise (IOC)."
8030
+ },
8031
+ RelatedIoc: {
8032
+ type: "object",
8033
+ required: ["type", "value", "confidence"],
8034
+ properties: {
8035
+ type: {
8036
+ type: "string",
8037
+ description: "Type of the related IOC (e.g. ipv4, ipv6)."
8038
+ },
8039
+ value: {
8040
+ type: "string",
8041
+ description: "Value of the related IOC."
8042
+ },
8043
+ confidence: {
8044
+ type: "number",
8045
+ format: "float",
8046
+ description: "Confidence score for the related IOC (0-1)."
8047
+ }
8048
+ },
8049
+ description: "A related indicator of compromise."
8050
+ },
8051
+ EvidenceSummary: {
8052
+ type: "object",
8053
+ required: ["why_flagged"],
8054
+ properties: {
8055
+ why_flagged: {
8056
+ type: "array",
8057
+ items: {
8058
+ type: "string"
8059
+ },
8060
+ description: "List of reasons why the domain was flagged. Empty for a clean domain."
8061
+ }
8062
+ },
8063
+ description: "Summary of reasons behind the risk assessment."
8064
+ },
8065
+ ErrorResponse: {
8066
+ type: "object",
8067
+ description: "Standard error envelope returned by the API on failed requests.",
8068
+ required: ["message"],
8069
+ properties: {
8070
+ error: {
8071
+ type: "string",
8072
+ description: "Short error category or exception type."
8073
+ },
8074
+ message: {
8075
+ type: "string",
8076
+ description: "Human-readable error message describing the failure."
8077
+ },
8078
+ path: {
8079
+ type: "string",
8080
+ description: "API endpoint path that produced the error."
8081
+ },
8082
+ status: {
8083
+ type: "integer",
8084
+ description: "HTTP status code returned with the error."
8085
+ },
8086
+ timestamp: {
8087
+ type: "string",
8088
+ format: "date-time",
8089
+ description: "Timestamp when the error occurred (ISO 8601)."
8090
+ }
8091
+ }
8092
+ }
8093
+ },
8094
+ headers: {
8095
+ "X-AF-Credits-Cost": {
8096
+ description: "Specifies the number of credits consumed by the current request.",
8097
+ schema: {
8098
+ type: "integer"
8099
+ }
8100
+ }
8101
+ }
8102
+ },
8103
+ security: [
8104
+ {
8105
+ ApiKeyAuthHeader: []
8106
+ },
8107
+ {
8108
+ ApiKeyAuthQuery: []
8109
+ }
8110
+ ]
8111
+ };
8112
+
6996
8113
  // specs/domain/domain-search-with-suggestions.json
6997
8114
  var domain_search_with_suggestions_default = {
6998
8115
  openapi: "3.1.1",
@@ -7208,47 +8325,278 @@ var domain_search_with_suggestions_default = {
7208
8325
  schemas: {
7209
8326
  DomainAvailabilityResponse: {
7210
8327
  type: "object",
7211
- description: "Domain availability check response containing the domain name and availability status. Returned when sug=false.",
8328
+ description: "Domain availability check response containing the domain name and availability status. Returned when sug=false.",
8329
+ required: ["domain", "domainAvailability"],
8330
+ properties: {
8331
+ domain: {
8332
+ type: "string",
8333
+ description: "Name of the queried domain."
8334
+ },
8335
+ domainAvailability: {
8336
+ type: "boolean",
8337
+ description: "True if available, false if not available."
8338
+ }
8339
+ }
8340
+ },
8341
+ DomainSuggestionResponse: {
8342
+ type: "object",
8343
+ required: ["domain_available_response"],
8344
+ properties: {
8345
+ domain_available_response: {
8346
+ type: "array",
8347
+ description: "List of domain availability objects.",
8348
+ items: {
8349
+ $ref: "#/components/schemas/DomainSuggestionItem"
8350
+ }
8351
+ }
8352
+ },
8353
+ description: "Domain suggestion response containing a list of availability-suggestions."
8354
+ },
8355
+ DomainSuggestionItem: {
8356
+ type: "object",
8357
+ description: "A single domain suggestion with availability status.",
8358
+ required: ["domain", "domainAvailability"],
8359
+ properties: {
8360
+ domain: {
8361
+ type: "string",
8362
+ description: "Name of the suggested domain."
8363
+ },
8364
+ domainAvailability: {
8365
+ type: "boolean",
8366
+ description: "True if available, false if not available."
8367
+ }
8368
+ }
8369
+ },
8370
+ ErrorResponse: {
8371
+ type: "object",
8372
+ description: "Standard error envelope returned by the API on failed requests.",
8373
+ required: ["message"],
8374
+ properties: {
8375
+ error: {
8376
+ type: "string",
8377
+ description: "Short error category or exception type."
8378
+ },
8379
+ message: {
8380
+ type: "string",
8381
+ description: "Human-readable error message describing the failure."
8382
+ },
8383
+ path: {
8384
+ type: "string",
8385
+ description: "API endpoint path that produced the error."
8386
+ },
8387
+ status: {
8388
+ type: "integer",
8389
+ description: "HTTP status code returned with the error."
8390
+ },
8391
+ timestamp: {
8392
+ type: "string",
8393
+ format: "date-time",
8394
+ description: "Timestamp when the error occurred (ISO 8601)."
8395
+ }
8396
+ }
8397
+ }
8398
+ },
8399
+ headers: {
8400
+ "X-AF-Credits-Cost": {
8401
+ description: "Specifies the number of credits consumed by the current request.",
8402
+ schema: {
8403
+ type: "integer"
8404
+ }
8405
+ }
8406
+ }
8407
+ },
8408
+ security: [
8409
+ {
8410
+ ApiKeyAuthHeader: []
8411
+ },
8412
+ {
8413
+ ApiKeyAuthQuery: []
8414
+ }
8415
+ ]
8416
+ };
8417
+
8418
+ // specs/domain/domain-search.json
8419
+ var domain_search_default = {
8420
+ openapi: "3.1.1",
8421
+ info: {
8422
+ title: "Domain Availability API - Check Domain Names in Real Time and Get Suggestions",
8423
+ version: "1.0.0",
8424
+ 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.",
8425
+ contact: {
8426
+ name: "APIFreaks Support",
8427
+ url: "https://apifreaks.com/contact",
8428
+ email: "support@apifreaks.com"
8429
+ }
8430
+ },
8431
+ servers: [
8432
+ {
8433
+ url: "https://api.apifreaks.com/v1.0",
8434
+ description: "Domain Search API Server"
8435
+ }
8436
+ ],
8437
+ paths: {
8438
+ "/domain/availability": {
8439
+ get: {
8440
+ tags: ["Domain APIs"],
8441
+ summary: "Check whether a domain is available for registration or not.",
8442
+ 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).",
8443
+ parameters: [
8444
+ {
8445
+ name: "format",
8446
+ in: "query",
8447
+ required: false,
8448
+ schema: {
8449
+ type: "string",
8450
+ enum: ["json", "xml"],
8451
+ default: "json"
8452
+ },
8453
+ description: "Format of the response."
8454
+ },
8455
+ {
8456
+ name: "domain",
8457
+ in: "query",
8458
+ required: true,
8459
+ schema: {
8460
+ type: "string"
8461
+ },
8462
+ description: "Domain name whose availability is to be checked."
8463
+ },
8464
+ {
8465
+ name: "source",
8466
+ in: "query",
8467
+ required: false,
8468
+ schema: {
8469
+ type: "string",
8470
+ enum: ["dns", "whois"],
8471
+ default: "dns"
8472
+ },
8473
+ 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.'
8474
+ }
8475
+ ],
8476
+ responses: {
8477
+ "200": {
8478
+ description: "Success",
8479
+ content: {
8480
+ "application/json": {
8481
+ schema: {
8482
+ $ref: "#/components/schemas/DomainAvailabilityResponse"
8483
+ },
8484
+ examples: {
8485
+ success: {
8486
+ summary: "Domain available",
8487
+ value: {
8488
+ domain: "google.com",
8489
+ domainAvailability: false
8490
+ }
8491
+ }
8492
+ }
8493
+ }
8494
+ },
8495
+ headers: {
8496
+ "X-AF-Credits-Cost": {
8497
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8498
+ }
8499
+ }
8500
+ },
8501
+ "400": {
8502
+ description: "Bad Request \u2013 Missing domain, or domain has an unrecognized/unsupported TLD",
8503
+ content: {
8504
+ "application/json": {
8505
+ schema: {
8506
+ $ref: "#/components/schemas/ErrorResponse"
8507
+ },
8508
+ examples: {
8509
+ missingDomain: {
8510
+ summary: "Missing required domain parameter",
8511
+ value: {
8512
+ error: "Invalid Param Exception",
8513
+ message: "please pass correct parameters",
8514
+ path: "/v1.0/domain/availability",
8515
+ status: 400,
8516
+ timestamp: "2026-07-27T12:18:21.115Z"
8517
+ }
8518
+ },
8519
+ unsupportedTld: {
8520
+ summary: "Domain has an unrecognized or unsupported TLD",
8521
+ value: {
8522
+ timestamp: "2026-07-27T12:18:47.346748812Z",
8523
+ status: 400,
8524
+ error: "Invalid Param Exception",
8525
+ message: "Please pass domain param correct value [For Technical Support: support@whoisfreaks.com]",
8526
+ path: "/v1.0/domain/availability"
8527
+ }
8528
+ }
8529
+ }
8530
+ }
8531
+ },
8532
+ headers: {
8533
+ "X-AF-Credits-Cost": {
8534
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8535
+ }
8536
+ }
8537
+ },
8538
+ "408": {
8539
+ description: "Request Timeout \u2013 Unable to fetch WHOIS data",
8540
+ content: {
8541
+ "application/json": {
8542
+ schema: {
8543
+ $ref: "#/components/schemas/ErrorResponse"
8544
+ },
8545
+ examples: {
8546
+ error: {
8547
+ summary: "Error response",
8548
+ value: {
8549
+ timestamp: "2025-08-14T10:37:21.871Z",
8550
+ status: 408,
8551
+ error: "Request Timeout",
8552
+ message: "Unable to fetch whois data. Please try again. [For Technical Support email at: support@apifreaks.com]",
8553
+ path: "/v1.0/domain/availability"
8554
+ }
8555
+ }
8556
+ }
8557
+ }
8558
+ },
8559
+ headers: {
8560
+ "X-AF-Credits-Cost": {
8561
+ $ref: "#/components/headers/X-AF-Credits-Cost"
8562
+ }
8563
+ }
8564
+ }
8565
+ },
8566
+ operationId: "checkDomainAvailability"
8567
+ }
8568
+ }
8569
+ },
8570
+ components: {
8571
+ securitySchemes: {
8572
+ ApiKeyAuthHeader: {
8573
+ type: "apiKey",
8574
+ in: "header",
8575
+ name: "X-apiKey",
8576
+ description: "Pass your API key via the X-apiKey request header."
8577
+ },
8578
+ ApiKeyAuthQuery: {
8579
+ type: "apiKey",
8580
+ in: "query",
8581
+ name: "apiKey",
8582
+ description: "Pass your API key via the apiKey query parameter."
8583
+ }
8584
+ },
8585
+ schemas: {
8586
+ DomainAvailabilityResponse: {
8587
+ type: "object",
7212
8588
  required: ["domain", "domainAvailability"],
7213
8589
  properties: {
7214
8590
  domain: {
7215
8591
  type: "string",
7216
- description: "Name of the queried domain."
8592
+ description: "Name of the queried domain"
7217
8593
  },
7218
8594
  domainAvailability: {
7219
8595
  type: "boolean",
7220
- description: "True if available, false if not available."
7221
- }
7222
- }
7223
- },
7224
- DomainSuggestionResponse: {
7225
- type: "object",
7226
- required: ["domain_available_response"],
7227
- properties: {
7228
- domain_available_response: {
7229
- type: "array",
7230
- description: "List of domain availability objects.",
7231
- items: {
7232
- $ref: "#/components/schemas/DomainSuggestionItem"
7233
- }
8596
+ description: "True if available, false if not available"
7234
8597
  }
7235
8598
  },
7236
- description: "Domain suggestion response containing a list of availability-suggestions."
7237
- },
7238
- DomainSuggestionItem: {
7239
- type: "object",
7240
- description: "A single domain suggestion with availability status.",
7241
- required: ["domain", "domainAvailability"],
7242
- properties: {
7243
- domain: {
7244
- type: "string",
7245
- description: "Name of the suggested domain."
7246
- },
7247
- domainAvailability: {
7248
- type: "boolean",
7249
- description: "True if available, false if not available."
7250
- }
7251
- }
8599
+ description: "Domain availability check response containing the domain name and availability status."
7252
8600
  },
7253
8601
  ErrorResponse: {
7254
8602
  type: "object",
@@ -7298,13 +8646,13 @@ var domain_search_with_suggestions_default = {
7298
8646
  ]
7299
8647
  };
7300
8648
 
7301
- // specs/domain/domain-search.json
7302
- var domain_search_default = {
8649
+ // specs/domain/domain-typosquatting.json
8650
+ var domain_typosquatting_default = {
7303
8651
  openapi: "3.1.1",
7304
8652
  info: {
7305
- title: "Domain Availability API - Check Domain Names in Real Time and Get Suggestions",
8653
+ title: "Domain Typosquatting API - Find Typo and Look-Alike Domains for Brand Protection and Phishing Discovery",
7306
8654
  version: "1.0.0",
7307
- 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.",
8655
+ 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.",
7308
8656
  contact: {
7309
8657
  name: "APIFreaks Support",
7310
8658
  url: "https://apifreaks.com/contact",
@@ -7314,15 +8662,15 @@ var domain_search_default = {
7314
8662
  servers: [
7315
8663
  {
7316
8664
  url: "https://api.apifreaks.com/v1.0",
7317
- description: "Domain Search API Server"
8665
+ description: "Domain Typosquatting API Server"
7318
8666
  }
7319
8667
  ],
7320
8668
  paths: {
7321
- "/domain/availability": {
8669
+ "/domain/typosquatting": {
7322
8670
  get: {
7323
8671
  tags: ["Domain APIs"],
7324
- summary: "Check whether a domain is available for registration or not.",
7325
- 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).",
8672
+ summary: "Find registered typo-variant or wildcard-pattern domains for a brand keyword.",
8673
+ 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.",
7326
8674
  parameters: [
7327
8675
  {
7328
8676
  name: "format",
@@ -7336,24 +8684,35 @@ var domain_search_default = {
7336
8684
  description: "Format of the response."
7337
8685
  },
7338
8686
  {
7339
- name: "domain",
8687
+ name: "keyword",
7340
8688
  in: "query",
7341
- required: true,
8689
+ required: false,
7342
8690
  schema: {
7343
- type: "string"
8691
+ type: "string",
8692
+ minLength: 3,
8693
+ maxLength: 63
7344
8694
  },
7345
- description: "Domain name whose availability is to be checked."
8695
+ 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."
7346
8696
  },
7347
8697
  {
7348
- name: "source",
8698
+ name: "pattern",
7349
8699
  in: "query",
7350
8700
  required: false,
7351
8701
  schema: {
7352
8702
  type: "string",
7353
- enum: ["dns", "whois"],
7354
- default: "dns"
8703
+ minLength: 3,
8704
+ maxLength: 63
7355
8705
  },
7356
- 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.'
8706
+ 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."
8707
+ },
8708
+ {
8709
+ name: "pageToken",
8710
+ in: "query",
8711
+ required: false,
8712
+ schema: {
8713
+ type: "string"
8714
+ },
8715
+ 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."
7357
8716
  }
7358
8717
  ],
7359
8718
  responses: {
@@ -7362,14 +8721,85 @@ var domain_search_default = {
7362
8721
  content: {
7363
8722
  "application/json": {
7364
8723
  schema: {
7365
- $ref: "#/components/schemas/DomainAvailabilityResponse"
8724
+ $ref: "#/components/schemas/DomainTyposquattingResponse"
7366
8725
  },
7367
8726
  examples: {
7368
- success: {
7369
- summary: "Domain available",
8727
+ keywordSuccess: {
8728
+ summary: "Keyword search (paypal)",
7370
8729
  value: {
7371
- domain: "google.com",
7372
- domainAvailability: false
8730
+ status: true,
8731
+ totalRecords: 1284,
8732
+ currentPage: 1,
8733
+ hasNextPage: true,
8734
+ totalPages: 13,
8735
+ nextPageToken: "<opaque_token>",
8736
+ domains: [
8737
+ {
8738
+ domainName: "p-aypal.com",
8739
+ createDate: "2025-04-17",
8740
+ expiryDate: "2026-04-17",
8741
+ lastSeen: "2026-05-29",
8742
+ isDropped: true
8743
+ },
8744
+ {
8745
+ domainName: "p-aypal.de",
8746
+ lastSeen: "2024-07-11",
8747
+ isDropped: true
8748
+ },
8749
+ {
8750
+ domainName: "p0aypal.com",
8751
+ createDate: "2017-12-29",
8752
+ expiryDate: "2026-12-29",
8753
+ lastSeen: "2026-08-18",
8754
+ isDropped: false
8755
+ },
8756
+ {
8757
+ domainName: "p7ypal.com",
8758
+ isDropped: true
8759
+ },
8760
+ {
8761
+ domainName: "pa-pal.club",
8762
+ createDate: "2019-10-25",
8763
+ expiryDate: "2020-10-25",
8764
+ isDropped: false
8765
+ }
8766
+ ]
8767
+ }
8768
+ },
8769
+ patternSuccess: {
8770
+ summary: "Wildcard pattern search (*paypal*)",
8771
+ value: {
8772
+ status: true,
8773
+ totalRecords: 5471,
8774
+ currentPage: 1,
8775
+ hasNextPage: true,
8776
+ totalPages: 55,
8777
+ nextPageToken: "<opaque_token>",
8778
+ domains: [
8779
+ {
8780
+ domainName: "paypal-support.com",
8781
+ createDate: "2024-11-02",
8782
+ expiryDate: "2026-11-02",
8783
+ lastSeen: "2026-08-30",
8784
+ isDropped: false
8785
+ },
8786
+ {
8787
+ domainName: "login-paypal.net",
8788
+ lastSeen: "2025-12-14",
8789
+ isDropped: true
8790
+ }
8791
+ ]
8792
+ }
8793
+ },
8794
+ emptyResult: {
8795
+ summary: "No matches found",
8796
+ value: {
8797
+ status: true,
8798
+ totalRecords: 0,
8799
+ currentPage: 1,
8800
+ hasNextPage: false,
8801
+ totalPages: 0,
8802
+ domains: []
7373
8803
  }
7374
8804
  }
7375
8805
  }
@@ -7382,58 +8812,41 @@ var domain_search_default = {
7382
8812
  }
7383
8813
  },
7384
8814
  "400": {
7385
- description: "Bad Request \u2013 Missing domain, or domain has an unrecognized/unsupported TLD",
8815
+ description: "Bad Request \u2013 Invalid parameters",
7386
8816
  content: {
7387
8817
  "application/json": {
7388
8818
  schema: {
7389
8819
  $ref: "#/components/schemas/ErrorResponse"
7390
8820
  },
7391
8821
  examples: {
7392
- missingDomain: {
7393
- summary: "Missing required domain parameter",
8822
+ shortPattern: {
8823
+ summary: "Pattern has too few non-wildcard characters",
7394
8824
  value: {
7395
- error: "Invalid Param Exception",
7396
- message: "please pass correct parameters",
7397
- path: "/v1.0/domain/availability",
8825
+ error: "Invalid Pattern Exception",
8826
+ message: "The pattern must contain at least 5 non-wildcard characters and no more than 3 wildcards.",
8827
+ path: "/v1.0/domain/typosquatting",
7398
8828
  status: 400,
7399
- timestamp: "2026-07-27T12:18:21.115Z"
8829
+ timestamp: "2026-09-08T12:00:00.000Z"
7400
8830
  }
7401
8831
  },
7402
- unsupportedTld: {
7403
- summary: "Domain has an unrecognized or unsupported TLD",
8832
+ bothParams: {
8833
+ summary: "Both keyword and pattern supplied",
7404
8834
  value: {
7405
- timestamp: "2026-07-27T12:18:47.346748812Z",
7406
- status: 400,
7407
8835
  error: "Invalid Param Exception",
7408
- message: "Please pass domain param correct value [For Technical Support: support@whoisfreaks.com]",
7409
- path: "/v1.0/domain/availability"
8836
+ message: 'Use either the "keyword" or the "pattern" parameter, never both.',
8837
+ path: "/v1.0/domain/typosquatting",
8838
+ status: 400,
8839
+ timestamp: "2026-09-08T12:00:00.000Z"
7410
8840
  }
7411
- }
7412
- }
7413
- }
7414
- },
7415
- headers: {
7416
- "X-AF-Credits-Cost": {
7417
- $ref: "#/components/headers/X-AF-Credits-Cost"
7418
- }
7419
- }
7420
- },
7421
- "408": {
7422
- description: "Request Timeout \u2013 Unable to fetch WHOIS data",
7423
- content: {
7424
- "application/json": {
7425
- schema: {
7426
- $ref: "#/components/schemas/ErrorResponse"
7427
- },
7428
- examples: {
7429
- error: {
7430
- summary: "Error response",
8841
+ },
8842
+ missingParam: {
8843
+ summary: "Neither keyword nor pattern supplied",
7431
8844
  value: {
7432
- timestamp: "2025-08-14T10:37:21.871Z",
7433
- status: 408,
7434
- error: "Request Timeout",
7435
- message: "Unable to fetch whois data. Please try again. [For Technical Support email at: support@apifreaks.com]",
7436
- path: "/v1.0/domain/availability"
8845
+ error: "Invalid Param Exception",
8846
+ message: 'Please provide either a "keyword" or a "pattern" parameter.',
8847
+ path: "/v1.0/domain/typosquatting",
8848
+ status: 400,
8849
+ timestamp: "2026-09-08T12:00:00.000Z"
7437
8850
  }
7438
8851
  }
7439
8852
  }
@@ -7446,7 +8859,7 @@ var domain_search_default = {
7446
8859
  }
7447
8860
  }
7448
8861
  },
7449
- operationId: "checkDomainAvailability"
8862
+ operationId: "getDomainTyposquatting"
7450
8863
  }
7451
8864
  }
7452
8865
  },
@@ -7466,20 +8879,70 @@ var domain_search_default = {
7466
8879
  }
7467
8880
  },
7468
8881
  schemas: {
7469
- DomainAvailabilityResponse: {
8882
+ DomainTyposquattingResponse: {
7470
8883
  type: "object",
7471
- required: ["domain", "domainAvailability"],
8884
+ required: ["status", "totalRecords", "currentPage", "hasNextPage", "totalPages", "domains"],
7472
8885
  properties: {
7473
- domain: {
8886
+ status: {
8887
+ type: "boolean",
8888
+ description: "Indicates if the request was successful."
8889
+ },
8890
+ totalRecords: {
8891
+ type: "integer",
8892
+ description: "Total number of domains found."
8893
+ },
8894
+ currentPage: {
8895
+ type: "integer",
8896
+ description: "Page number of the current response. Starts at 1."
8897
+ },
8898
+ hasNextPage: {
8899
+ type: "boolean",
8900
+ description: "true if at least one additional page is available."
8901
+ },
8902
+ totalPages: {
8903
+ type: "integer",
8904
+ description: "Total number of pages available."
8905
+ },
8906
+ nextPageToken: {
7474
8907
  type: "string",
7475
- description: "Name of the queried domain"
8908
+ description: "Opaque token to pass as pageToken on the next request. Present only when hasNextPage is true."
7476
8909
  },
7477
- domainAvailability: {
8910
+ domains: {
8911
+ type: "array",
8912
+ items: {
8913
+ $ref: "#/components/schemas/DomainItem"
8914
+ },
8915
+ description: "List of typo-variant or pattern-matched domains on the current page."
8916
+ }
8917
+ },
8918
+ description: "Paginated response containing typo-variant or pattern-matched domains."
8919
+ },
8920
+ DomainItem: {
8921
+ type: "object",
8922
+ required: ["domainName", "isDropped"],
8923
+ properties: {
8924
+ domainName: {
8925
+ type: "string",
8926
+ description: "Domain name."
8927
+ },
8928
+ createDate: {
8929
+ type: "string",
8930
+ description: "Domain creation date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries."
8931
+ },
8932
+ expiryDate: {
8933
+ type: "string",
8934
+ description: "Domain expiration date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries."
8935
+ },
8936
+ lastSeen: {
8937
+ type: "string",
8938
+ description: "Last time the domain was observed (YYYY-MM-DD). One of the two fields reliably meaningful across a full result set."
8939
+ },
8940
+ isDropped: {
7478
8941
  type: "boolean",
7479
- description: "True if available, false if not available"
8942
+ description: "Indicates whether the domain has dropped out of the registry and become available to register again."
7480
8943
  }
7481
8944
  },
7482
- description: "Domain availability check response containing the domain name and availability status."
8945
+ description: "A single typo-variant or pattern-matched domain with registration lifecycle data."
7483
8946
  },
7484
8947
  ErrorResponse: {
7485
8948
  type: "object",
@@ -7903,7 +9366,7 @@ var bulk_email_validation_default = {
7903
9366
  info: {
7904
9367
  title: "Bulk Email Validation API - Validate and Verify Emails in Bulk",
7905
9368
  version: "1.0.0",
7906
- 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.",
9369
+ 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.",
7907
9370
  contact: {
7908
9371
  name: "APIFreaks Support",
7909
9372
  url: "https://apifreaks.com/contact",
@@ -7955,7 +9418,7 @@ var bulk_email_validation_default = {
7955
9418
  },
7956
9419
  examples: {
7957
9420
  bulkEmailsValidated: {
7958
- summary: "Mix of a valid and a syntactically invalid email",
9421
+ summary: "Mix of valid, syntactically invalid, accept_all, null-MX invalid, and unknown (no-MX probe) results",
7959
9422
  value: {
7960
9423
  emailResponse: [
7961
9424
  {
@@ -7994,6 +9457,74 @@ var bulk_email_validation_default = {
7994
9457
  name: "not-an-email",
7995
9458
  validDomain: false
7996
9459
  }
9460
+ },
9461
+ {
9462
+ success: true,
9463
+ email: "random12345@yahoo.com",
9464
+ validEmail: "accept_all",
9465
+ validSyntax: true,
9466
+ reason: "domain accepts all addresses.",
9467
+ domain: {
9468
+ name: "yahoo.com",
9469
+ disposable: false,
9470
+ spam: false,
9471
+ free: true,
9472
+ validDomain: true,
9473
+ catchAll: true
9474
+ },
9475
+ account: {
9476
+ role: false,
9477
+ fullMailBox: false
9478
+ },
9479
+ dns: {
9480
+ mxRecord: [
9481
+ "mta5.am0.yahoodns.net.",
9482
+ "mta6.am0.yahoodns.net.",
9483
+ "mta7.am0.yahoodns.net."
9484
+ ]
9485
+ }
9486
+ },
9487
+ {
9488
+ success: true,
9489
+ email: "test@example.com",
9490
+ validEmail: "invalid",
9491
+ validSyntax: true,
9492
+ reason: "domain does not accept mail.",
9493
+ domain: {
9494
+ name: "example.com",
9495
+ disposable: true,
9496
+ spam: false,
9497
+ free: false,
9498
+ validDomain: true,
9499
+ catchAll: false
9500
+ },
9501
+ account: {
9502
+ role: false
9503
+ },
9504
+ dns: {
9505
+ mxRecord: ["."]
9506
+ }
9507
+ },
9508
+ {
9509
+ success: true,
9510
+ email: "test@neverssl.com",
9511
+ validEmail: "unknown",
9512
+ validSyntax: true,
9513
+ reason: "We are unable to determine if email is valid or invalid.",
9514
+ domain: {
9515
+ name: "neverssl.com",
9516
+ disposable: false,
9517
+ spam: false,
9518
+ free: false,
9519
+ validDomain: true,
9520
+ catchAll: false
9521
+ },
9522
+ account: {
9523
+ role: false
9524
+ },
9525
+ dns: {
9526
+ aRecord: ["34.223.124.45"]
9527
+ }
7997
9528
  }
7998
9529
  ]
7999
9530
  }
@@ -8198,19 +9729,20 @@ var bulk_email_validation_default = {
8198
9729
  },
8199
9730
  reason: {
8200
9731
  type: "string",
8201
- description: "Detailed explanation returned when validEmail is not valid."
9732
+ description: "Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid."
8202
9733
  },
8203
9734
  validEmail: {
8204
9735
  type: "string",
8205
9736
  enum: [
8206
9737
  "valid",
9738
+ "accept_all",
8207
9739
  "invalid",
8208
9740
  "INVALID_EMAIL",
8209
9741
  "unknown",
8210
9742
  "risky",
8211
9743
  "app_server_blocked"
8212
9744
  ],
8213
- 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)."
9745
+ 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."
8214
9746
  },
8215
9747
  validSyntax: {
8216
9748
  type: "boolean",
@@ -8262,7 +9794,7 @@ var bulk_email_validation_default = {
8262
9794
  },
8263
9795
  catchAll: {
8264
9796
  type: "boolean",
8265
- description: "Detection flag for domains configured to accept mail for any recipient address."
9797
+ description: "Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all."
8266
9798
  }
8267
9799
  },
8268
9800
  description: "Domain validation details for the email address."
@@ -8284,24 +9816,24 @@ var bulk_email_validation_default = {
8284
9816
  },
8285
9817
  DnsObject: {
8286
9818
  type: "object",
8287
- required: ["mxRecord"],
9819
+ required: [],
8288
9820
  properties: {
8289
9821
  mxRecord: {
8290
9822
  type: "array",
8291
9823
  items: {
8292
9824
  type: "string"
8293
9825
  },
8294
- description: "Collection of MX (Mail Exchange) hostname records from DNS queries."
9826
+ 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.`
8295
9827
  },
8296
9828
  aRecord: {
8297
9829
  type: "array",
8298
9830
  items: {
8299
9831
  type: "string"
8300
9832
  },
8301
- description: "Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated."
9833
+ 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."
8302
9834
  }
8303
9835
  },
8304
- description: "DNS records for the email domain."
9836
+ description: "DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record."
8305
9837
  },
8306
9838
  AddressObject: {
8307
9839
  type: "object",
@@ -8544,7 +10076,7 @@ var email_checker_default = {
8544
10076
  info: {
8545
10077
  title: "Email Checker API - Real-Time Validation, Deliverability & Risk Signals",
8546
10078
  version: "1.0.0",
8547
- 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.",
10079
+ 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.",
8548
10080
  contact: {
8549
10081
  name: "APIFreaks Support",
8550
10082
  url: "https://apifreaks.com/contact",
@@ -8637,8 +10169,8 @@ var email_checker_default = {
8637
10169
  }
8638
10170
  }
8639
10171
  },
8640
- noMxRecord: {
8641
- summary: "Valid syntax, domain has no MX record",
10172
+ nonexistentDomain: {
10173
+ summary: "Valid syntax, domain does not exist (NXDOMAIN)",
8642
10174
  value: {
8643
10175
  success: true,
8644
10176
  email: "test@nonexistentdomainxyz123abc.com",
@@ -8658,6 +10190,83 @@ var email_checker_default = {
8658
10190
  }
8659
10191
  }
8660
10192
  },
10193
+ acceptAll: {
10194
+ summary: "Catch-all domain accepted the recipient \u2014 mailbox unconfirmed",
10195
+ value: {
10196
+ success: true,
10197
+ email: "random12345@yahoo.com",
10198
+ validEmail: "accept_all",
10199
+ validSyntax: true,
10200
+ reason: "domain accepts all addresses.",
10201
+ domain: {
10202
+ name: "yahoo.com",
10203
+ disposable: false,
10204
+ spam: false,
10205
+ free: true,
10206
+ validDomain: true,
10207
+ catchAll: true
10208
+ },
10209
+ account: {
10210
+ role: false,
10211
+ fullMailBox: false
10212
+ },
10213
+ dns: {
10214
+ mxRecord: [
10215
+ "mta5.am0.yahoodns.net.",
10216
+ "mta6.am0.yahoodns.net.",
10217
+ "mta7.am0.yahoodns.net."
10218
+ ]
10219
+ }
10220
+ }
10221
+ },
10222
+ nullMxDomain: {
10223
+ summary: 'Domain publishes a null MX (single ".") \u2014 accepts no mail at all',
10224
+ value: {
10225
+ success: true,
10226
+ email: "test@example.com",
10227
+ validEmail: "invalid",
10228
+ validSyntax: true,
10229
+ reason: "domain does not accept mail.",
10230
+ domain: {
10231
+ name: "example.com",
10232
+ disposable: true,
10233
+ spam: false,
10234
+ free: false,
10235
+ validDomain: true,
10236
+ catchAll: false
10237
+ },
10238
+ account: {
10239
+ role: false
10240
+ },
10241
+ dns: {
10242
+ mxRecord: ["."]
10243
+ }
10244
+ }
10245
+ },
10246
+ noMxAddressOnly: {
10247
+ summary: "Domain has no MX record but a working A record \u2014 gets a real SMTP probe",
10248
+ value: {
10249
+ success: true,
10250
+ email: "test@neverssl.com",
10251
+ validEmail: "unknown",
10252
+ validSyntax: true,
10253
+ reason: "We are unable to determine if email is valid or invalid.",
10254
+ domain: {
10255
+ name: "neverssl.com",
10256
+ disposable: false,
10257
+ spam: false,
10258
+ free: false,
10259
+ validDomain: true,
10260
+ catchAll: false
10261
+ },
10262
+ account: {
10263
+ role: false
10264
+ },
10265
+ dns: {
10266
+ aRecord: ["34.223.124.45"]
10267
+ }
10268
+ }
10269
+ },
8661
10270
  withIp: {
8662
10271
  summary: "With ip \u2014 adds geolocation/security enrichment under address",
8663
10272
  value: {
@@ -8928,12 +10537,12 @@ var email_checker_default = {
8928
10537
  },
8929
10538
  reason: {
8930
10539
  type: "string",
8931
- description: "Detailed explanation returned when validEmail is not valid."
10540
+ description: "Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid."
8932
10541
  },
8933
10542
  validEmail: {
8934
10543
  type: "string",
8935
- enum: ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky", "app_server_blocked"],
8936
- 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)."
10544
+ enum: ["valid", "accept_all", "invalid", "INVALID_EMAIL", "unknown", "risky", "app_server_blocked"],
10545
+ 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."
8937
10546
  },
8938
10547
  validSyntax: {
8939
10548
  type: "boolean",
@@ -8985,7 +10594,7 @@ var email_checker_default = {
8985
10594
  },
8986
10595
  catchAll: {
8987
10596
  type: "boolean",
8988
- description: "Detection flag for domains configured to accept mail for any recipient address."
10597
+ description: "Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all."
8989
10598
  }
8990
10599
  },
8991
10600
  description: "Domain validation details for the email address."
@@ -9007,24 +10616,24 @@ var email_checker_default = {
9007
10616
  },
9008
10617
  DnsObject: {
9009
10618
  type: "object",
9010
- required: ["mxRecord"],
10619
+ required: [],
9011
10620
  properties: {
9012
10621
  mxRecord: {
9013
10622
  type: "array",
9014
10623
  items: {
9015
10624
  type: "string"
9016
10625
  },
9017
- description: "Collection of MX (Mail Exchange) hostname records from DNS queries."
10626
+ 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.`
9018
10627
  },
9019
10628
  aRecord: {
9020
10629
  type: "array",
9021
10630
  items: {
9022
10631
  type: "string"
9023
10632
  },
9024
- description: "Collection of A (Address) records for the domain. Not observed in testing \u2014 may be rarely or never populated."
10633
+ 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."
9025
10634
  }
9026
10635
  },
9027
- description: "DNS records for the email domain."
10636
+ description: "DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record."
9028
10637
  },
9029
10638
  AddressObject: {
9030
10639
  type: "object",
@@ -47816,8 +49425,10 @@ var SPECS = {
47816
49425
  "dns-lookup": dns_lookup_default,
47817
49426
  "reverse-dns-lookup": reverse_dns_lookup_default,
47818
49427
  "bulk-domain-checker": bulk_domain_checker_default,
49428
+ "domain-reputation": domain_reputation_default,
47819
49429
  "domain-search-with-suggestions": domain_search_with_suggestions_default,
47820
49430
  "domain-search": domain_search_default,
49431
+ "domain-typosquatting": domain_typosquatting_default,
47821
49432
  "subdomain-lookup": subdomain_lookup_default,
47822
49433
  "bulk-email-validation": bulk_email_validation_default,
47823
49434
  "email-checker": email_checker_default,
@@ -47900,7 +49511,7 @@ var SPECS = {
47900
49511
  "zip-codes-by-region": zip_codes_by_region_default,
47901
49512
  "zip-codes-radius-search": zip_codes_radius_search_default
47902
49513
  };
47903
- 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"];
49514
+ 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"];
47904
49515
  var SPECS_YAML = {
47905
49516
  "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",
47906
49517
  "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",
@@ -49843,6 +51454,905 @@ components:
49843
51454
  security:
49844
51455
  - ApiKeyAuthHeader: []
49845
51456
  - ApiKeyAuthQuery: []
51457
+ `,
51458
+ "domain-reputation": `openapi: 3.1.1
51459
+ info:
51460
+ title: Domain Reputation API - Real-Time Risk Verdict, Trust Score, DGA Detection, and Threat Intelligence for Any Domain
51461
+ version: 1.0.0
51462
+ 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.
51463
+ contact:
51464
+ name: APIFreaks Support
51465
+ url: https://apifreaks.com/contact
51466
+ email: support@apifreaks.com
51467
+ servers:
51468
+ - url: https://api.apifreaks.com/v1.0
51469
+ description: Domain Reputation API Server
51470
+ paths:
51471
+ /domain/reputation:
51472
+ get:
51473
+ tags:
51474
+ - Domain APIs
51475
+ summary: Get a real-time risk verdict, trust score, and threat intelligence for any domain.
51476
+ 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.
51477
+ parameters:
51478
+ - name: format
51479
+ in: query
51480
+ required: false
51481
+ schema:
51482
+ type: string
51483
+ enum:
51484
+ - json
51485
+ - xml
51486
+ default: json
51487
+ description: Format of the response.
51488
+ - name: domainName
51489
+ in: query
51490
+ required: true
51491
+ schema:
51492
+ type: string
51493
+ description: The domain name to assess (e.g. example.com). Must contain at least one dot and be at most 253 characters. Automatically lowercased.
51494
+ responses:
51495
+ '200':
51496
+ description: Success
51497
+ content:
51498
+ application/json:
51499
+ schema:
51500
+ $ref: '#/components/schemas/DomainReputationResponse'
51501
+ examples:
51502
+ success:
51503
+ summary: Safe domain (apple.com)
51504
+ value:
51505
+ input:
51506
+ domain: apple.com
51507
+ assessed_at: '2026-09-08T08:36:23.820181075Z'
51508
+ version: 1.0.0
51509
+ processing_time_ms: 1739
51510
+ risk_category:
51511
+ verdict: safe
51512
+ confidence: 0.8
51513
+ primary_threat: null
51514
+ severity: none
51515
+ threat_types: []
51516
+ sources: []
51517
+ pivot_matches: []
51518
+ dga_score:
51519
+ score: 0
51520
+ is_dga: false
51521
+ model: deterministic_features_v1
51522
+ features:
51523
+ domain_length: 5
51524
+ vowel_consonant_ratio: 0.6666666666666666
51525
+ ngram_perplexity: -8.83
51526
+ shannon_entropy: 1.9219280948873623
51527
+ digit_letter_ratio: 0
51528
+ consonant_streak_max: 3
51529
+ tld_in_known_dga_set: false
51530
+ interpretation: human_readable
51531
+ trust_signals:
51532
+ trust_score: 72
51533
+ trust_band: high
51534
+ signals:
51535
+ positive:
51536
+ - code: spf_configured
51537
+ weight: 5
51538
+ polarity: positive
51539
+ category: email_security
51540
+ evidence: SPF record found
51541
+ confidence: 1
51542
+ - code: dmarc_present
51543
+ weight: 5
51544
+ polarity: positive
51545
+ category: email_security
51546
+ evidence: DMARC record present
51547
+ confidence: 1
51548
+ - code: established_domain
51549
+ weight: 10
51550
+ polarity: positive
51551
+ category: domain_age
51552
+ evidence: Domain age > 2 years
51553
+ confidence: 1
51554
+ - code: mature_domain
51555
+ weight: 5
51556
+ polarity: positive
51557
+ category: domain_age
51558
+ evidence: Domain age > 5 years
51559
+ confidence: 1
51560
+ - code: paid_ssl
51561
+ weight: 5
51562
+ polarity: positive
51563
+ category: ssl_certificate
51564
+ evidence: Uses paid SSL certificate
51565
+ confidence: 0.9
51566
+ - code: valid_ssl
51567
+ weight: 3
51568
+ polarity: positive
51569
+ category: ssl_certificate
51570
+ evidence: Valid SSL certificate
51571
+ confidence: 1
51572
+ negative:
51573
+ - code: privacy_whois
51574
+ weight: 1
51575
+ polarity: negative
51576
+ category: whois_privacy
51577
+ evidence: WHOIS information is privacy-protected
51578
+ confidence: 0.9
51579
+ - code: external_redirect
51580
+ weight: 10
51581
+ polarity: negative
51582
+ category: content_analysis
51583
+ evidence: Site redirects visitors to an external domain
51584
+ confidence: 0.8
51585
+ neutral: []
51586
+ indicators:
51587
+ is_newly_registered: false
51588
+ uses_free_extension: false
51589
+ uses_free_ssl: false
51590
+ has_privacy_whois: true
51591
+ ssl_age_days: 26
51592
+ has_dmarc: true
51593
+ has_spf: true
51594
+ redirects_externally: true
51595
+ javascript_obfuscated: false
51596
+ domain_age_days: 14446
51597
+ registrar: NOM-IQ Ltd dba Com Laude
51598
+ email_deliverability:
51599
+ score: 95
51600
+ grade: excellent
51601
+ can_receive_email: true
51602
+ authentication:
51603
+ spf:
51604
+ present: true
51605
+ policy: ~all
51606
+ record: v=spf1 include:_spf.apple.com include:_spf-txn.apple.com ~all
51607
+ dkim:
51608
+ found: true
51609
+ selectors_found:
51610
+ - selector1
51611
+ - selector2
51612
+ providers_detected: []
51613
+ note: Only common selectors are probed; a domain may use a custom selector
51614
+ dmarc:
51615
+ present: true
51616
+ policy: quarantine
51617
+ reporting_configured: true
51618
+ infrastructure:
51619
+ mx_count: 6
51620
+ mx_records:
51621
+ - mx-in-ma.apple.com.
51622
+ - mx-in.g.apple.com.
51623
+ - mx-in-rn.apple.com.
51624
+ - mx-in-sg.apple.com.
51625
+ - mx-in-hfd.apple.com.
51626
+ - mx-in-vib.apple.com.
51627
+ mx_provider: self_hosted
51628
+ null_mx: false
51629
+ reputation:
51630
+ spam_blacklisted: false
51631
+ newly_registered: false
51632
+ domain_age_days: 14446
51633
+ issues:
51634
+ - code: spf_softfail
51635
+ severity: low
51636
+ message: The SPF policy '~all' only soft-fails unauthorized senders
51637
+ recommendation: Move to '-all' once all legitimate sending sources are listed
51638
+ intelligence:
51639
+ ioc_type: domain
51640
+ ioc_value: apple.com
51641
+ related_iocs:
51642
+ - type: ipv4
51643
+ value: 17.253.144.10
51644
+ confidence: 0.9
51645
+ - type: ipv6
51646
+ value: 2620:149:af0:0:0:0:0:10
51647
+ confidence: 0.9
51648
+ feed_tags:
51649
+ - verdict:safe
51650
+ - severity:none
51651
+ - ns:d.ns.apple.com.
51652
+ - ns:b.ns.apple.com.
51653
+ - ns:c.ns.apple.com.
51654
+ - ns:a.ns.apple.com.
51655
+ - mx:mx-in-ma.apple.com.
51656
+ - mx:mx-in.g.apple.com.
51657
+ - mx:mx-in-rn.apple.com.
51658
+ - mx:mx-in-sg.apple.com.
51659
+ - mx:mx-in-hfd.apple.com.
51660
+ - mx:mx-in-vib.apple.com.
51661
+ 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'']'
51662
+ recommended_action: allow
51663
+ first_seen: null
51664
+ last_seen: null
51665
+ evidence_summary:
51666
+ why_flagged: []
51667
+ errors: []
51668
+ partialData:
51669
+ summary: Partial data (WHOIS lookup failed)
51670
+ value:
51671
+ input:
51672
+ domain: apifreaks.com
51673
+ risk_category:
51674
+ verdict: safe
51675
+ confidence: 0.7
51676
+ severity: none
51677
+ trust_signals:
51678
+ trust_score: 70
51679
+ trust_band: high
51680
+ indicators:
51681
+ is_newly_registered: null
51682
+ has_privacy_whois: null
51683
+ domain_age_days: null
51684
+ registrar: null
51685
+ errors:
51686
+ - WHOIS lookup failed
51687
+ headers:
51688
+ X-AF-Credits-Cost:
51689
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51690
+ '400':
51691
+ description: Bad Request \u2013 Invalid or missing domainName parameter
51692
+ content:
51693
+ application/json:
51694
+ schema:
51695
+ $ref: '#/components/schemas/ErrorResponse'
51696
+ examples:
51697
+ invalidDomain:
51698
+ summary: Invalid domain parameter
51699
+ value:
51700
+ error: Invalid Domain Exception
51701
+ message: Please provide a valid domain name in the "domainName" parameter.
51702
+ path: /v1.0/domain/reputation
51703
+ status: 400
51704
+ timestamp: '2026-09-08T12:00:00.000Z'
51705
+ missingDomain:
51706
+ summary: Missing domainName parameter
51707
+ value:
51708
+ error: Invalid Param Exception
51709
+ message: Please provide a valid domain name in the "domainName" parameter.
51710
+ path: /v1.0/domain/reputation
51711
+ status: 400
51712
+ timestamp: '2026-09-08T12:00:00.000Z'
51713
+ headers:
51714
+ X-AF-Credits-Cost:
51715
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51716
+ '503':
51717
+ description: Service Unavailable \u2013 The assessment service is temporarily unavailable
51718
+ content:
51719
+ application/json:
51720
+ schema:
51721
+ $ref: '#/components/schemas/ErrorResponse'
51722
+ examples:
51723
+ serviceUnavailable:
51724
+ summary: Service Unavailable
51725
+ value:
51726
+ error: Service Unavailable
51727
+ message: 'Service is unavailable. Please try after some time. [For Technical Support email at: support@apifreaks.com]'
51728
+ path: /v1.0/domain/reputation
51729
+ status: 503
51730
+ timestamp: '2026-09-08T12:00:00.000Z'
51731
+ headers:
51732
+ X-AF-Credits-Cost:
51733
+ $ref: '#/components/headers/X-AF-Credits-Cost'
51734
+ operationId: getDomainReputation
51735
+ components:
51736
+ securitySchemes:
51737
+ ApiKeyAuthHeader:
51738
+ type: apiKey
51739
+ in: header
51740
+ name: X-apiKey
51741
+ description: Pass your API key via the X-apiKey request header.
51742
+ ApiKeyAuthQuery:
51743
+ type: apiKey
51744
+ in: query
51745
+ name: apiKey
51746
+ description: Pass your API key via the apiKey query parameter.
51747
+ schemas:
51748
+ DomainReputationResponse:
51749
+ type: object
51750
+ required:
51751
+ - input
51752
+ - assessed_at
51753
+ - version
51754
+ - processing_time_ms
51755
+ - risk_category
51756
+ - dga_score
51757
+ - trust_signals
51758
+ - email_deliverability
51759
+ - intelligence
51760
+ - evidence_summary
51761
+ - errors
51762
+ properties:
51763
+ input:
51764
+ type: object
51765
+ required:
51766
+ - domain
51767
+ properties:
51768
+ domain:
51769
+ type: string
51770
+ description: Domain name being analyzed.
51771
+ description: Input object containing the analyzed domain.
51772
+ assessed_at:
51773
+ type: string
51774
+ description: Timestamp when the assessment was performed (YYYY-MM-DDTHH:mm:ssZ).
51775
+ version:
51776
+ type: string
51777
+ description: API / response schema version.
51778
+ processing_time_ms:
51779
+ type: integer
51780
+ description: Time taken to process the request, in milliseconds.
51781
+ risk_category:
51782
+ $ref: '#/components/schemas/RiskCategory'
51783
+ dga_score:
51784
+ $ref: '#/components/schemas/DgaScore'
51785
+ trust_signals:
51786
+ $ref: '#/components/schemas/TrustSignals'
51787
+ email_deliverability:
51788
+ $ref: '#/components/schemas/EmailDeliverability'
51789
+ intelligence:
51790
+ $ref: '#/components/schemas/Intelligence'
51791
+ evidence_summary:
51792
+ $ref: '#/components/schemas/EvidenceSummary'
51793
+ errors:
51794
+ type: array
51795
+ items:
51796
+ type: string
51797
+ description: List of errors encountered during processing, if any (e.g. "WHOIS lookup failed"). An empty array means every signal resolved.
51798
+ description: Full domain reputation assessment response.
51799
+ RiskCategory:
51800
+ type: object
51801
+ required:
51802
+ - verdict
51803
+ - confidence
51804
+ - primary_threat
51805
+ - severity
51806
+ - threat_types
51807
+ - sources
51808
+ - pivot_matches
51809
+ properties:
51810
+ verdict:
51811
+ type: string
51812
+ enum:
51813
+ - safe
51814
+ - suspicious
51815
+ description: Final verdict of the risk assessment.
51816
+ confidence:
51817
+ type: number
51818
+ format: float
51819
+ description: Confidence score for the verdict (0-1).
51820
+ primary_threat:
51821
+ type:
51822
+ - string
51823
+ - 'null'
51824
+ description: Main threat type identified (e.g. phishing). null when no threat was identified.
51825
+ severity:
51826
+ type: string
51827
+ enum:
51828
+ - none
51829
+ - low
51830
+ - medium
51831
+ - high
51832
+ description: Severity level of the risk.
51833
+ threat_types:
51834
+ type: array
51835
+ items:
51836
+ type: string
51837
+ description: List of threat types associated with the domain.
51838
+ sources:
51839
+ type: array
51840
+ items:
51841
+ $ref: '#/components/schemas/ThreatSource'
51842
+ description: Threat intelligence sources that flagged the domain. Empty when nothing flagged it.
51843
+ pivot_matches:
51844
+ type: array
51845
+ items:
51846
+ $ref: '#/components/schemas/PivotMatch'
51847
+ description: Related pivots (nameserver, email, etc.) linked to known threats.
51848
+ description: Overall risk assessment for the domain.
51849
+ ThreatSource:
51850
+ type: object
51851
+ required:
51852
+ - source
51853
+ - indicator
51854
+ - threat_type
51855
+ - confidence
51856
+ - first_seen
51857
+ - last_seen
51858
+ properties:
51859
+ source:
51860
+ type: string
51861
+ description: Name of the threat intelligence source (e.g. Spamhaus).
51862
+ indicator:
51863
+ type: string
51864
+ description: Indicator matched by this source.
51865
+ threat_type:
51866
+ type: string
51867
+ description: Threat type reported by this source.
51868
+ confidence:
51869
+ type: number
51870
+ format: float
51871
+ description: Confidence score from this source (0-1).
51872
+ first_seen:
51873
+ type: string
51874
+ description: First time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
51875
+ last_seen:
51876
+ type: string
51877
+ description: Last time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
51878
+ description: A threat intelligence source that flagged the domain.
51879
+ PivotMatch:
51880
+ type: object
51881
+ required:
51882
+ - pivot
51883
+ - pivot_type
51884
+ - total_related_threats
51885
+ - confidence
51886
+ properties:
51887
+ pivot:
51888
+ type: string
51889
+ description: Pivot value (e.g. a nameserver or email address).
51890
+ pivot_type:
51891
+ type: string
51892
+ description: Type of pivot.
51893
+ total_related_threats:
51894
+ type: integer
51895
+ description: Total number of threats related to this pivot.
51896
+ confidence:
51897
+ type: number
51898
+ format: float
51899
+ description: Confidence score for the pivot match (0-1).
51900
+ description: A related pivot linked to known threats.
51901
+ DgaScore:
51902
+ type: object
51903
+ required:
51904
+ - score
51905
+ - is_dga
51906
+ - model
51907
+ - features
51908
+ - interpretation
51909
+ properties:
51910
+ score:
51911
+ type: number
51912
+ format: float
51913
+ description: DGA likelihood score (0-1).
51914
+ is_dga:
51915
+ type: boolean
51916
+ description: Indicates whether the domain is likely DGA-generated.
51917
+ model:
51918
+ type: string
51919
+ description: Model used to compute the DGA score.
51920
+ features:
51921
+ $ref: '#/components/schemas/DgaFeatures'
51922
+ interpretation:
51923
+ type: string
51924
+ description: Human-readable interpretation of the DGA score.
51925
+ description: Domain Generation Algorithm (DGA) detection results.
51926
+ DgaFeatures:
51927
+ type: object
51928
+ required:
51929
+ - domain_length
51930
+ - vowel_consonant_ratio
51931
+ - ngram_perplexity
51932
+ - shannon_entropy
51933
+ - digit_letter_ratio
51934
+ - consonant_streak_max
51935
+ - tld_in_known_dga_set
51936
+ properties:
51937
+ domain_length:
51938
+ type: integer
51939
+ description: Length of the domain name.
51940
+ vowel_consonant_ratio:
51941
+ type: number
51942
+ format: float
51943
+ description: Ratio of vowels to consonants in the domain.
51944
+ ngram_perplexity:
51945
+ type: number
51946
+ format: float
51947
+ description: N-gram perplexity score of the domain string.
51948
+ shannon_entropy:
51949
+ type: number
51950
+ format: float
51951
+ description: Shannon entropy of the domain string.
51952
+ digit_letter_ratio:
51953
+ type: number
51954
+ format: float
51955
+ description: Ratio of digits to letters in the domain.
51956
+ consonant_streak_max:
51957
+ type: integer
51958
+ description: Maximum consecutive consonant streak in the domain.
51959
+ tld_in_known_dga_set:
51960
+ type: boolean
51961
+ description: Indicates if the TLD belongs to a known DGA set.
51962
+ description: Underlying lexical / statistical features used in DGA detection.
51963
+ TrustSignals:
51964
+ type: object
51965
+ required:
51966
+ - trust_score
51967
+ - trust_band
51968
+ - signals
51969
+ - indicators
51970
+ properties:
51971
+ trust_score:
51972
+ type: integer
51973
+ description: Overall trust score (0-100).
51974
+ trust_band:
51975
+ type: string
51976
+ description: Trust score band / category (e.g. low, medium, high).
51977
+ signals:
51978
+ $ref: '#/components/schemas/TrustScoreSignals'
51979
+ indicators:
51980
+ $ref: '#/components/schemas/TrustIndicators'
51981
+ description: Trust scoring and supporting signals for the domain.
51982
+ TrustScoreSignals:
51983
+ type: object
51984
+ required:
51985
+ - positive
51986
+ - negative
51987
+ - neutral
51988
+ properties:
51989
+ positive:
51990
+ type: array
51991
+ items:
51992
+ $ref: '#/components/schemas/TrustSignalItem'
51993
+ description: Signals that positively affect the trust score.
51994
+ negative:
51995
+ type: array
51996
+ items:
51997
+ $ref: '#/components/schemas/TrustSignalItem'
51998
+ description: Signals that negatively affect the trust score.
51999
+ neutral:
52000
+ type: array
52001
+ items:
52002
+ $ref: '#/components/schemas/TrustSignalItem'
52003
+ description: Signals that are neutral to the trust score.
52004
+ description: Signals contributing to the trust score.
52005
+ TrustSignalItem:
52006
+ type: object
52007
+ required:
52008
+ - code
52009
+ - weight
52010
+ - polarity
52011
+ - category
52012
+ - evidence
52013
+ - confidence
52014
+ properties:
52015
+ code:
52016
+ type: string
52017
+ description: Signal code identifier (e.g. valid_ssl, dmarc_missing).
52018
+ weight:
52019
+ type: integer
52020
+ description: Weight assigned to the signal.
52021
+ polarity:
52022
+ type: string
52023
+ enum:
52024
+ - positive
52025
+ - negative
52026
+ - neutral
52027
+ description: Polarity of the signal.
52028
+ category:
52029
+ type: string
52030
+ description: Category the signal belongs to (e.g. ssl_certificate).
52031
+ evidence:
52032
+ type: string
52033
+ description: Evidence supporting the signal.
52034
+ confidence:
52035
+ type: number
52036
+ format: float
52037
+ description: Confidence score for the signal (0-1).
52038
+ description: A single trust signal contributing to the trust score.
52039
+ TrustIndicators:
52040
+ type: object
52041
+ properties:
52042
+ is_newly_registered:
52043
+ type:
52044
+ - boolean
52045
+ - 'null'
52046
+ description: Indicates whether the domain was recently registered. null when WHOIS data is unavailable.
52047
+ uses_free_extension:
52048
+ type: boolean
52049
+ description: Indicates whether the domain uses a free TLD extension.
52050
+ uses_free_ssl:
52051
+ type: boolean
52052
+ description: Indicates whether the domain uses a free SSL certificate.
52053
+ has_privacy_whois:
52054
+ type:
52055
+ - boolean
52056
+ - 'null'
52057
+ description: Indicates whether WHOIS privacy protection is enabled. null when WHOIS data is unavailable.
52058
+ ssl_age_days:
52059
+ type:
52060
+ - integer
52061
+ - 'null'
52062
+ description: Age of the SSL certificate in days.
52063
+ has_dmarc:
52064
+ type: boolean
52065
+ description: Indicates whether a DMARC record exists.
52066
+ has_spf:
52067
+ type: boolean
52068
+ description: Indicates whether an SPF record exists.
52069
+ redirects_externally:
52070
+ type: boolean
52071
+ description: Indicates whether the domain redirects to an external site.
52072
+ javascript_obfuscated:
52073
+ type: boolean
52074
+ description: Indicates whether obfuscated JavaScript was detected.
52075
+ domain_age_days:
52076
+ type:
52077
+ - integer
52078
+ - 'null'
52079
+ description: Age of the domain in days. null when WHOIS data is unavailable.
52080
+ registrar:
52081
+ type:
52082
+ - string
52083
+ - 'null'
52084
+ description: Domain registrar name. null when WHOIS data is unavailable.
52085
+ description: Individual trust / risk indicators for the domain.
52086
+ EmailDeliverability:
52087
+ type: object
52088
+ required:
52089
+ - score
52090
+ - grade
52091
+ - can_receive_email
52092
+ - authentication
52093
+ - infrastructure
52094
+ - reputation
52095
+ - issues
52096
+ properties:
52097
+ score:
52098
+ type: integer
52099
+ description: Overall email deliverability score out of 100.
52100
+ grade:
52101
+ type: string
52102
+ description: Letter / word grade summarizing the deliverability score.
52103
+ can_receive_email:
52104
+ type: boolean
52105
+ description: Indicates whether the domain is configured to receive email.
52106
+ authentication:
52107
+ $ref: '#/components/schemas/EmailAuthentication'
52108
+ infrastructure:
52109
+ $ref: '#/components/schemas/EmailInfrastructure'
52110
+ reputation:
52111
+ $ref: '#/components/schemas/EmailReputation'
52112
+ issues:
52113
+ type: array
52114
+ items:
52115
+ $ref: '#/components/schemas/EmailIssue'
52116
+ description: List of detected email deliverability issues or misconfigurations.
52117
+ description: Assessment of the domain's ability to send and receive email reliably.
52118
+ EmailAuthentication:
52119
+ type: object
52120
+ required:
52121
+ - spf
52122
+ - dkim
52123
+ - dmarc
52124
+ properties:
52125
+ spf:
52126
+ $ref: '#/components/schemas/SpfRecord'
52127
+ dkim:
52128
+ $ref: '#/components/schemas/DkimRecord'
52129
+ dmarc:
52130
+ $ref: '#/components/schemas/DmarcRecord'
52131
+ description: Email authentication mechanisms configured for the domain.
52132
+ SpfRecord:
52133
+ type: object
52134
+ required:
52135
+ - present
52136
+ - policy
52137
+ - record
52138
+ properties:
52139
+ present:
52140
+ type: boolean
52141
+ description: Indicates whether an SPF record was found.
52142
+ policy:
52143
+ type: string
52144
+ description: SPF enforcement policy qualifier found in the record (e.g. ~all, -all).
52145
+ record:
52146
+ type: string
52147
+ description: Raw SPF DNS TXT record string.
52148
+ description: Sender Policy Framework configuration.
52149
+ DkimRecord:
52150
+ type: object
52151
+ required:
52152
+ - found
52153
+ - selectors_found
52154
+ - providers_detected
52155
+ - note
52156
+ properties:
52157
+ found:
52158
+ type: boolean
52159
+ description: Indicates whether a DKIM record was found for any probed selector.
52160
+ selectors_found:
52161
+ type: array
52162
+ items:
52163
+ type: string
52164
+ description: List of DKIM selectors for which a record was found.
52165
+ providers_detected:
52166
+ type: array
52167
+ items:
52168
+ type: string
52169
+ description: Email service providers inferred from the matched DKIM selectors.
52170
+ note:
52171
+ type: string
52172
+ description: Clarifying note about the limitations of DKIM selector probing.
52173
+ description: DomainKeys Identified Mail configuration.
52174
+ DmarcRecord:
52175
+ type: object
52176
+ required:
52177
+ - present
52178
+ - policy
52179
+ - reporting_configured
52180
+ properties:
52181
+ present:
52182
+ type: boolean
52183
+ description: Indicates whether a DMARC record was found.
52184
+ policy:
52185
+ type: string
52186
+ description: DMARC enforcement policy applied to failing messages (e.g. none, quarantine, reject).
52187
+ reporting_configured:
52188
+ type: boolean
52189
+ description: Indicates whether DMARC aggregate / forensic reporting addresses are configured.
52190
+ description: Domain-based Message Authentication, Reporting and Conformance configuration.
52191
+ EmailInfrastructure:
52192
+ type: object
52193
+ required:
52194
+ - mx_count
52195
+ - mx_records
52196
+ - mx_provider
52197
+ - null_mx
52198
+ properties:
52199
+ mx_count:
52200
+ type: integer
52201
+ description: Number of MX records found for the domain.
52202
+ mx_records:
52203
+ type: array
52204
+ items:
52205
+ type: string
52206
+ description: List of mail exchange server hostnames for the domain.
52207
+ mx_provider:
52208
+ type: string
52209
+ description: Email hosting provider inferred from the MX records.
52210
+ null_mx:
52211
+ type: boolean
52212
+ description: Indicates whether the domain explicitly declines email via a null MX record.
52213
+ description: Mail server infrastructure backing the domain.
52214
+ EmailReputation:
52215
+ type: object
52216
+ required:
52217
+ - spam_blacklisted
52218
+ - newly_registered
52219
+ properties:
52220
+ spam_blacklisted:
52221
+ type: boolean
52222
+ description: Indicates whether the domain appears on known spam blacklists.
52223
+ newly_registered:
52224
+ type: boolean
52225
+ description: Indicates whether the domain was registered recently.
52226
+ domain_age_days:
52227
+ type:
52228
+ - integer
52229
+ - 'null'
52230
+ description: Age of the domain in days since registration.
52231
+ description: Reputation and trust signals related to the domain's email sending history.
52232
+ EmailIssue:
52233
+ type: object
52234
+ properties:
52235
+ code:
52236
+ type: string
52237
+ description: Machine-readable code identifying the specific deliverability issue.
52238
+ severity:
52239
+ type: string
52240
+ description: Severity level assigned to the detected issue.
52241
+ message:
52242
+ type: string
52243
+ description: Human-readable explanation of the issue.
52244
+ recommendation:
52245
+ type: string
52246
+ description: Plain-language description of the exact fix to apply.
52247
+ description: A detected email deliverability issue or misconfiguration.
52248
+ Intelligence:
52249
+ type: object
52250
+ required:
52251
+ - ioc_type
52252
+ - ioc_value
52253
+ - related_iocs
52254
+ - feed_tags
52255
+ - stix_pattern
52256
+ - recommended_action
52257
+ - first_seen
52258
+ - last_seen
52259
+ properties:
52260
+ ioc_type:
52261
+ type: string
52262
+ description: Type of the indicator of compromise (e.g. domain).
52263
+ ioc_value:
52264
+ type: string
52265
+ description: Value of the indicator of compromise.
52266
+ related_iocs:
52267
+ type: array
52268
+ items:
52269
+ $ref: '#/components/schemas/RelatedIoc'
52270
+ description: Other IOCs related to this domain.
52271
+ feed_tags:
52272
+ type: array
52273
+ items:
52274
+ type: string
52275
+ description: Tags associated with this IOC from threat feeds.
52276
+ stix_pattern:
52277
+ type: string
52278
+ description: STIX 2.1 pattern representation of the IOC, ready to wrap into an Indicator object.
52279
+ recommended_action:
52280
+ type: string
52281
+ enum:
52282
+ - allow
52283
+ - monitor
52284
+ - block
52285
+ description: Recommended action based on the assessment.
52286
+ first_seen:
52287
+ type:
52288
+ - string
52289
+ - 'null'
52290
+ description: First time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
52291
+ last_seen:
52292
+ type:
52293
+ - string
52294
+ - 'null'
52295
+ description: Last time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
52296
+ description: Threat intelligence details for the indicator of compromise (IOC).
52297
+ RelatedIoc:
52298
+ type: object
52299
+ required:
52300
+ - type
52301
+ - value
52302
+ - confidence
52303
+ properties:
52304
+ type:
52305
+ type: string
52306
+ description: Type of the related IOC (e.g. ipv4, ipv6).
52307
+ value:
52308
+ type: string
52309
+ description: Value of the related IOC.
52310
+ confidence:
52311
+ type: number
52312
+ format: float
52313
+ description: Confidence score for the related IOC (0-1).
52314
+ description: A related indicator of compromise.
52315
+ EvidenceSummary:
52316
+ type: object
52317
+ required:
52318
+ - why_flagged
52319
+ properties:
52320
+ why_flagged:
52321
+ type: array
52322
+ items:
52323
+ type: string
52324
+ description: List of reasons why the domain was flagged. Empty for a clean domain.
52325
+ description: Summary of reasons behind the risk assessment.
52326
+ ErrorResponse:
52327
+ type: object
52328
+ description: Standard error envelope returned by the API on failed requests.
52329
+ required:
52330
+ - message
52331
+ properties:
52332
+ error:
52333
+ type: string
52334
+ description: Short error category or exception type.
52335
+ message:
52336
+ type: string
52337
+ description: Human-readable error message describing the failure.
52338
+ path:
52339
+ type: string
52340
+ description: API endpoint path that produced the error.
52341
+ status:
52342
+ type: integer
52343
+ description: HTTP status code returned with the error.
52344
+ timestamp:
52345
+ type: string
52346
+ format: date-time
52347
+ description: Timestamp when the error occurred (ISO 8601).
52348
+ headers:
52349
+ X-AF-Credits-Cost:
52350
+ description: Specifies the number of credits consumed by the current request.
52351
+ schema:
52352
+ type: integer
52353
+ security:
52354
+ - ApiKeyAuthHeader: []
52355
+ - ApiKeyAuthQuery: []
49846
52356
  `,
49847
52357
  "domain-search-with-suggestions": `openapi: 3.1.1
49848
52358
  info:
@@ -50218,10 +52728,861 @@ components:
50218
52728
  security:
50219
52729
  - ApiKeyAuthHeader: []
50220
52730
  - ApiKeyAuthQuery: []
52731
+ `,
52732
+ "domain-typosquatting": `openapi: 3.1.1
52733
+ info:
52734
+ title: Domain Typosquatting API - Find Typo and Look-Alike Domains for Brand Protection and Phishing Discovery
52735
+ version: 1.0.0
52736
+ 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.
52737
+ contact:
52738
+ name: APIFreaks Support
52739
+ url: https://apifreaks.com/contact
52740
+ email: support@apifreaks.com
52741
+ servers:
52742
+ - url: https://api.apifreaks.com/v1.0
52743
+ description: Domain Typosquatting API Server
52744
+ paths:
52745
+ /domain/typosquatting:
52746
+ get:
52747
+ tags:
52748
+ - Domain APIs
52749
+ summary: Find registered typo-variant or wildcard-pattern domains for a brand keyword.
52750
+ 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.
52751
+ parameters:
52752
+ - name: format
52753
+ in: query
52754
+ required: false
52755
+ schema:
52756
+ type: string
52757
+ enum:
52758
+ - json
52759
+ - xml
52760
+ default: json
52761
+ description: Format of the response.
52762
+ - name: keyword
52763
+ in: query
52764
+ required: false
52765
+ schema:
52766
+ type: string
52767
+ minLength: 3
52768
+ maxLength: 63
52769
+ 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.
52770
+ - name: pattern
52771
+ in: query
52772
+ required: false
52773
+ schema:
52774
+ type: string
52775
+ minLength: 3
52776
+ maxLength: 63
52777
+ 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.
52778
+ - name: pageToken
52779
+ in: query
52780
+ required: false
52781
+ schema:
52782
+ type: string
52783
+ 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.
52784
+ responses:
52785
+ '200':
52786
+ description: Success
52787
+ content:
52788
+ application/json:
52789
+ schema:
52790
+ $ref: '#/components/schemas/DomainTyposquattingResponse'
52791
+ examples:
52792
+ keywordSuccess:
52793
+ summary: Keyword search (paypal)
52794
+ value:
52795
+ status: true
52796
+ totalRecords: 1284
52797
+ currentPage: 1
52798
+ hasNextPage: true
52799
+ totalPages: 13
52800
+ nextPageToken: <opaque_token>
52801
+ domains:
52802
+ - domainName: p-aypal.com
52803
+ createDate: '2025-04-17'
52804
+ expiryDate: '2026-04-17'
52805
+ lastSeen: '2026-05-29'
52806
+ isDropped: true
52807
+ - domainName: p-aypal.de
52808
+ lastSeen: '2024-07-11'
52809
+ isDropped: true
52810
+ - domainName: p0aypal.com
52811
+ createDate: '2017-12-29'
52812
+ expiryDate: '2026-12-29'
52813
+ lastSeen: '2026-08-18'
52814
+ isDropped: false
52815
+ - domainName: p7ypal.com
52816
+ isDropped: true
52817
+ - domainName: pa-pal.club
52818
+ createDate: '2019-10-25'
52819
+ expiryDate: '2020-10-25'
52820
+ isDropped: false
52821
+ patternSuccess:
52822
+ summary: Wildcard pattern search (*paypal*)
52823
+ value:
52824
+ status: true
52825
+ totalRecords: 5471
52826
+ currentPage: 1
52827
+ hasNextPage: true
52828
+ totalPages: 55
52829
+ nextPageToken: <opaque_token>
52830
+ domains:
52831
+ - domainName: paypal-support.com
52832
+ createDate: '2024-11-02'
52833
+ expiryDate: '2026-11-02'
52834
+ lastSeen: '2026-08-30'
52835
+ isDropped: false
52836
+ - domainName: login-paypal.net
52837
+ lastSeen: '2025-12-14'
52838
+ isDropped: true
52839
+ emptyResult:
52840
+ summary: No matches found
52841
+ value:
52842
+ status: true
52843
+ totalRecords: 0
52844
+ currentPage: 1
52845
+ hasNextPage: false
52846
+ totalPages: 0
52847
+ domains: []
52848
+ headers:
52849
+ X-AF-Credits-Cost:
52850
+ $ref: '#/components/headers/X-AF-Credits-Cost'
52851
+ '400':
52852
+ description: Bad Request \u2013 Invalid parameters
52853
+ content:
52854
+ application/json:
52855
+ schema:
52856
+ $ref: '#/components/schemas/ErrorResponse'
52857
+ examples:
52858
+ shortPattern:
52859
+ summary: Pattern has too few non-wildcard characters
52860
+ value:
52861
+ error: Invalid Pattern Exception
52862
+ message: The pattern must contain at least 5 non-wildcard characters and no more than 3 wildcards.
52863
+ path: /v1.0/domain/typosquatting
52864
+ status: 400
52865
+ timestamp: '2026-09-08T12:00:00.000Z'
52866
+ bothParams:
52867
+ summary: Both keyword and pattern supplied
52868
+ value:
52869
+ error: Invalid Param Exception
52870
+ message: Use either the "keyword" or the "pattern" parameter, never both.
52871
+ path: /v1.0/domain/typosquatting
52872
+ status: 400
52873
+ timestamp: '2026-09-08T12:00:00.000Z'
52874
+ missingParam:
52875
+ summary: Neither keyword nor pattern supplied
52876
+ value:
52877
+ error: Invalid Param Exception
52878
+ message: Please provide either a "keyword" or a "pattern" parameter.
52879
+ path: /v1.0/domain/typosquatting
52880
+ status: 400
52881
+ timestamp: '2026-09-08T12:00:00.000Z'
52882
+ headers:
52883
+ X-AF-Credits-Cost:
52884
+ $ref: '#/components/headers/X-AF-Credits-Cost'
52885
+ operationId: getDomainTyposquatting
52886
+ components:
52887
+ securitySchemes:
52888
+ ApiKeyAuthHeader:
52889
+ type: apiKey
52890
+ in: header
52891
+ name: X-apiKey
52892
+ description: Pass your API key via the X-apiKey request header.
52893
+ ApiKeyAuthQuery:
52894
+ type: apiKey
52895
+ in: query
52896
+ name: apiKey
52897
+ description: Pass your API key via the apiKey query parameter.
52898
+ schemas:
52899
+ DomainTyposquattingResponse:
52900
+ type: object
52901
+ required:
52902
+ - status
52903
+ - totalRecords
52904
+ - currentPage
52905
+ - hasNextPage
52906
+ - totalPages
52907
+ - domains
52908
+ properties:
52909
+ status:
52910
+ type: boolean
52911
+ description: Indicates if the request was successful.
52912
+ totalRecords:
52913
+ type: integer
52914
+ description: Total number of domains found.
52915
+ currentPage:
52916
+ type: integer
52917
+ description: Page number of the current response. Starts at 1.
52918
+ hasNextPage:
52919
+ type: boolean
52920
+ description: true if at least one additional page is available.
52921
+ totalPages:
52922
+ type: integer
52923
+ description: Total number of pages available.
52924
+ nextPageToken:
52925
+ type: string
52926
+ description: Opaque token to pass as pageToken on the next request. Present only when hasNextPage is true.
52927
+ domains:
52928
+ type: array
52929
+ items:
52930
+ $ref: '#/components/schemas/DomainItem'
52931
+ description: List of typo-variant or pattern-matched domains on the current page.
52932
+ description: Paginated response containing typo-variant or pattern-matched domains.
52933
+ DomainItem:
52934
+ type: object
52935
+ required:
52936
+ - domainName
52937
+ - isDropped
52938
+ properties:
52939
+ domainName:
52940
+ type: string
52941
+ description: Domain name.
52942
+ createDate:
52943
+ type: string
52944
+ description: Domain creation date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries.
52945
+ expiryDate:
52946
+ type: string
52947
+ description: Domain expiration date (YYYY-MM-DD). May be absent for older or less-actively-tracked entries.
52948
+ lastSeen:
52949
+ type: string
52950
+ description: Last time the domain was observed (YYYY-MM-DD). One of the two fields reliably meaningful across a full result set.
52951
+ isDropped:
52952
+ type: boolean
52953
+ description: Indicates whether the domain has dropped out of the registry and become available to register again.
52954
+ description: A single typo-variant or pattern-matched domain with registration lifecycle data.
52955
+ ErrorResponse:
52956
+ type: object
52957
+ description: Standard error envelope returned by the API on failed requests.
52958
+ required:
52959
+ - message
52960
+ properties:
52961
+ error:
52962
+ type: string
52963
+ description: Short error category or exception type.
52964
+ message:
52965
+ type: string
52966
+ description: Human-readable error message describing the failure.
52967
+ path:
52968
+ type: string
52969
+ description: API endpoint path that produced the error.
52970
+ status:
52971
+ type: integer
52972
+ description: HTTP status code returned with the error.
52973
+ timestamp:
52974
+ type: string
52975
+ format: date-time
52976
+ description: Timestamp when the error occurred (ISO 8601).
52977
+ headers:
52978
+ X-AF-Credits-Cost:
52979
+ description: Specifies the number of credits consumed by the current request.
52980
+ schema:
52981
+ type: integer
52982
+ security:
52983
+ - ApiKeyAuthHeader: []
52984
+ - ApiKeyAuthQuery: []
50221
52985
  `,
50222
52986
  "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",
50223
- "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",
50224
- "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",
52987
+ "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",
52988
+ "email-checker": `openapi: 3.1.1
52989
+ info:
52990
+ title: Email Checker API - Real-Time Validation, Deliverability & Risk Signals
52991
+ version: 1.0.0
52992
+ 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.
52993
+ contact:
52994
+ name: APIFreaks Support
52995
+ url: https://apifreaks.com/contact
52996
+ email: support@apifreaks.com
52997
+ servers:
52998
+ - url: https://api.apifreaks.com/v1.0
52999
+ description: Email Checker API Server
53000
+ paths:
53001
+ /email-validation/single:
53002
+ post:
53003
+ tags:
53004
+ - Email Validation APIs
53005
+ summary: Validate a single email
53006
+ description: Validates a single email address and returns result.
53007
+ parameters:
53008
+ - name: format
53009
+ in: query
53010
+ required: false
53011
+ schema:
53012
+ type: string
53013
+ enum:
53014
+ - json
53015
+ - xml
53016
+ description: Format of the response
53017
+ requestBody:
53018
+ required: true
53019
+ content:
53020
+ application/json:
53021
+ schema:
53022
+ $ref: '#/components/schemas/EmailCheckRequest'
53023
+ responses:
53024
+ '200':
53025
+ description: Successful response with Email Validation
53026
+ content:
53027
+ application/json:
53028
+ schema:
53029
+ $ref: '#/components/schemas/SingleEmailValidationResponse'
53030
+ examples:
53031
+ validEmail:
53032
+ summary: Valid, deliverable email
53033
+ value:
53034
+ success: true
53035
+ email: abc.def@gmail.com
53036
+ validEmail: valid
53037
+ validSyntax: true
53038
+ domain:
53039
+ name: gmail.com
53040
+ disposable: false
53041
+ spam: false
53042
+ free: true
53043
+ validDomain: true
53044
+ catchAll: false
53045
+ account:
53046
+ role: false
53047
+ fullMailBox: false
53048
+ dns:
53049
+ mxRecord:
53050
+ - gmail-smtp-in.l.google.com.
53051
+ - alt1.gmail-smtp-in.l.google.com.
53052
+ - alt2.gmail-smtp-in.l.google.com.
53053
+ - alt3.gmail-smtp-in.l.google.com.
53054
+ - alt4.gmail-smtp-in.l.google.com.
53055
+ invalidSyntax:
53056
+ summary: Syntactically invalid email \u2014 domain/account/dns are minimal or absent
53057
+ value:
53058
+ success: true
53059
+ email: not-an-email
53060
+ validEmail: INVALID_EMAIL
53061
+ validSyntax: false
53062
+ domain:
53063
+ name: not-an-email
53064
+ validDomain: false
53065
+ nonexistentDomain:
53066
+ summary: Valid syntax, domain does not exist (NXDOMAIN)
53067
+ value:
53068
+ success: true
53069
+ email: test@nonexistentdomainxyz123abc.com
53070
+ validEmail: invalid
53071
+ validSyntax: true
53072
+ reason: mx record does not exist.
53073
+ domain:
53074
+ name: nonexistentdomainxyz123abc.com
53075
+ disposable: false
53076
+ spam: false
53077
+ free: false
53078
+ validDomain: false
53079
+ catchAll: false
53080
+ account:
53081
+ role: false
53082
+ acceptAll:
53083
+ summary: Catch-all domain accepted the recipient \u2014 mailbox unconfirmed
53084
+ value:
53085
+ success: true
53086
+ email: random12345@yahoo.com
53087
+ validEmail: accept_all
53088
+ validSyntax: true
53089
+ reason: domain accepts all addresses.
53090
+ domain:
53091
+ name: yahoo.com
53092
+ disposable: false
53093
+ spam: false
53094
+ free: true
53095
+ validDomain: true
53096
+ catchAll: true
53097
+ account:
53098
+ role: false
53099
+ fullMailBox: false
53100
+ dns:
53101
+ mxRecord:
53102
+ - mta5.am0.yahoodns.net.
53103
+ - mta6.am0.yahoodns.net.
53104
+ - mta7.am0.yahoodns.net.
53105
+ nullMxDomain:
53106
+ summary: Domain publishes a null MX (single ".") \u2014 accepts no mail at all
53107
+ value:
53108
+ success: true
53109
+ email: test@example.com
53110
+ validEmail: invalid
53111
+ validSyntax: true
53112
+ reason: domain does not accept mail.
53113
+ domain:
53114
+ name: example.com
53115
+ disposable: true
53116
+ spam: false
53117
+ free: false
53118
+ validDomain: true
53119
+ catchAll: false
53120
+ account:
53121
+ role: false
53122
+ dns:
53123
+ mxRecord:
53124
+ - .
53125
+ noMxAddressOnly:
53126
+ summary: Domain has no MX record but a working A record \u2014 gets a real SMTP probe
53127
+ value:
53128
+ success: true
53129
+ email: test@neverssl.com
53130
+ validEmail: unknown
53131
+ validSyntax: true
53132
+ reason: We are unable to determine if email is valid or invalid.
53133
+ domain:
53134
+ name: neverssl.com
53135
+ disposable: false
53136
+ spam: false
53137
+ free: false
53138
+ validDomain: true
53139
+ catchAll: false
53140
+ account:
53141
+ role: false
53142
+ dns:
53143
+ aRecord:
53144
+ - 34.223.124.45
53145
+ withIp:
53146
+ summary: With ip \u2014 adds geolocation/security enrichment under address
53147
+ value:
53148
+ success: true
53149
+ email: abc.def@gmail.com
53150
+ validEmail: valid
53151
+ validSyntax: true
53152
+ domain:
53153
+ name: gmail.com
53154
+ disposable: false
53155
+ spam: false
53156
+ free: true
53157
+ validDomain: true
53158
+ catchAll: false
53159
+ account:
53160
+ role: false
53161
+ fullMailBox: false
53162
+ dns:
53163
+ mxRecord:
53164
+ - gmail-smtp-in.l.google.com.
53165
+ - alt1.gmail-smtp-in.l.google.com.
53166
+ - alt2.gmail-smtp-in.l.google.com.
53167
+ - alt3.gmail-smtp-in.l.google.com.
53168
+ - alt4.gmail-smtp-in.l.google.com.
53169
+ ip: 8.8.8.8
53170
+ address:
53171
+ validIpAddress: true
53172
+ location:
53173
+ city: Mountain View
53174
+ district: Santa Clara
53175
+ confidence: low
53176
+ zipcode: 94043-1351
53177
+ state_prov: California
53178
+ country_name: United States
53179
+ continent_name: North America
53180
+ continent_code: NA
53181
+ country_code2: US
53182
+ country_code3: USA
53183
+ country_name_official: United States of America
53184
+ accuracy_radius: '27.42'
53185
+ is_eu: false
53186
+ security:
53187
+ threat_score: 5
53188
+ is_tor: false
53189
+ is_proxy: false
53190
+ proxy_type: ''
53191
+ proxy_provider: ''
53192
+ is_anonymous: false
53193
+ is_known_attacker: false
53194
+ is_spam: false
53195
+ is_bot: false
53196
+ is_cloud_provider: true
53197
+ cloud_provider: Google LLC
53198
+ appServerBlocked:
53199
+ summary: Valid syntax, but the recipient mail server blocked the verification attempt
53200
+ value:
53201
+ success: true
53202
+ email: randomuser98765zzz@gmx.com
53203
+ validEmail: app_server_blocked
53204
+ validSyntax: true
53205
+ reason: We are unable to determine the validity of email at the moment. Please try later.
53206
+ domain:
53207
+ name: gmx.com
53208
+ disposable: false
53209
+ spam: false
53210
+ free: true
53211
+ validDomain: true
53212
+ catchAll: false
53213
+ account:
53214
+ role: false
53215
+ dns:
53216
+ mxRecord:
53217
+ - mx00.gmx.net.
53218
+ headers:
53219
+ X-AF-Credits-Cost:
53220
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53221
+ X-Concurrent-Threads:
53222
+ $ref: '#/components/headers/X-Concurrent-Threads'
53223
+ X-Concurrent-Threads-Active:
53224
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53225
+ '400':
53226
+ description: Bad Request \u2013 Invalid request body
53227
+ content:
53228
+ application/json:
53229
+ schema:
53230
+ $ref: '#/components/schemas/ErrorResponse'
53231
+ examples:
53232
+ missingEmail:
53233
+ summary: email field missing from request body
53234
+ value:
53235
+ timestamp: '2026-09-02T11:56:23.462Z'
53236
+ path: /v2/email-validation/single
53237
+ status: 400
53238
+ error: Missing or Invalid Parameters
53239
+ message: Please pass valid value for 'email' in body.
53240
+ headers:
53241
+ X-AF-Credits-Cost:
53242
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53243
+ X-Concurrent-Threads:
53244
+ $ref: '#/components/headers/X-Concurrent-Threads'
53245
+ X-Concurrent-Threads-Active:
53246
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53247
+ '404':
53248
+ description: Not Found \u2013 The requested resource could not be found
53249
+ content:
53250
+ application/json:
53251
+ schema:
53252
+ $ref: '#/components/schemas/ErrorResponse'
53253
+ examples:
53254
+ Resource Not Found:
53255
+ value:
53256
+ timestamp: '2026-09-02T11:56:23.937Z'
53257
+ path: /v1.0/email-validation/singlex
53258
+ status: 404
53259
+ error: Resource Not Found
53260
+ message: The requested resource could not be found. Please verify the URL and try again.
53261
+ headers:
53262
+ X-AF-Credits-Cost:
53263
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53264
+ X-Concurrent-Threads:
53265
+ $ref: '#/components/headers/X-Concurrent-Threads'
53266
+ X-Concurrent-Threads-Active:
53267
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53268
+ '408':
53269
+ description: Request Timeout
53270
+ content:
53271
+ application/json:
53272
+ schema:
53273
+ $ref: '#/components/schemas/ErrorResponse'
53274
+ examples:
53275
+ Request Timeout:
53276
+ value:
53277
+ timestamp: '2026-06-06T13:00:00.000Z'
53278
+ path: /v1.0/email-validation/single
53279
+ status: 408
53280
+ error: Request Timeout
53281
+ message: Timed out while connecting to the remote URL.
53282
+ headers:
53283
+ X-AF-Credits-Cost:
53284
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53285
+ X-Concurrent-Threads:
53286
+ $ref: '#/components/headers/X-Concurrent-Threads'
53287
+ X-Concurrent-Threads-Active:
53288
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53289
+ '429':
53290
+ description: Rate Limit Exceeded
53291
+ content:
53292
+ application/json:
53293
+ schema:
53294
+ $ref: '#/components/schemas/ErrorResponse'
53295
+ examples:
53296
+ Rate Limit Exceeded:
53297
+ value:
53298
+ timestamp: '2026-06-06T13:00:00.000Z'
53299
+ path: /v1.0/email-validation/single
53300
+ status: 429
53301
+ error: Too Many Requests
53302
+ message: API rate limit exceeded.
53303
+ headers:
53304
+ X-AF-Credits-Cost:
53305
+ $ref: '#/components/headers/X-AF-Credits-Cost'
53306
+ X-Concurrent-Threads:
53307
+ $ref: '#/components/headers/X-Concurrent-Threads'
53308
+ X-Concurrent-Threads-Active:
53309
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
53310
+ operationId: checkEmail
53311
+ components:
53312
+ securitySchemes:
53313
+ ApiKeyAuthHeader:
53314
+ type: apiKey
53315
+ in: header
53316
+ name: X-apiKey
53317
+ description: Pass your API key via the X-apiKey request header.
53318
+ ApiKeyAuthQuery:
53319
+ type: apiKey
53320
+ in: query
53321
+ name: apiKey
53322
+ description: Pass your API key via the apiKey query parameter.
53323
+ schemas:
53324
+ SingleEmailValidationResponse:
53325
+ type: object
53326
+ required:
53327
+ - success
53328
+ - email
53329
+ - validEmail
53330
+ - validSyntax
53331
+ - domain
53332
+ properties:
53333
+ success:
53334
+ type: boolean
53335
+ description: 'Indicates the processing status of the validation request. true: completed successfully.'
53336
+ email:
53337
+ type: string
53338
+ format: email
53339
+ description: The email address submitted for validation.
53340
+ name:
53341
+ type: string
53342
+ description: Optional identifier or label provided in the request for record tracking.
53343
+ reason:
53344
+ type: string
53345
+ description: Detailed explanation returned when validEmail is not valid. Omitted entirely when validEmail is valid.
53346
+ validEmail:
53347
+ type: string
53348
+ enum:
53349
+ - valid
53350
+ - accept_all
53351
+ - invalid
53352
+ - INVALID_EMAIL
53353
+ - unknown
53354
+ - risky
53355
+ - app_server_blocked
53356
+ 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.'
53357
+ validSyntax:
53358
+ type: boolean
53359
+ description: Validates email address format compliance with RFC 5322 standards.
53360
+ domain:
53361
+ $ref: '#/components/schemas/DomainObject'
53362
+ account:
53363
+ $ref: '#/components/schemas/AccountObject'
53364
+ dns:
53365
+ $ref: '#/components/schemas/DnsObject'
53366
+ address:
53367
+ $ref: '#/components/schemas/AddressObject'
53368
+ ip:
53369
+ type: string
53370
+ format: ip
53371
+ description: IP address provided for geolocation and security enrichment.
53372
+ description: Email validation response containing deliverability assessment and metadata.
53373
+ DomainObject:
53374
+ type: object
53375
+ required:
53376
+ - name
53377
+ - validDomain
53378
+ properties:
53379
+ name:
53380
+ type: string
53381
+ description: Extracted domain component from the email address.
53382
+ validDomain:
53383
+ type: boolean
53384
+ description: Domain validation status confirming DNS resolution capability.
53385
+ disposable:
53386
+ type: boolean
53387
+ description: Classification flag identifying domains from temporary email service providers.
53388
+ spam:
53389
+ type: boolean
53390
+ description: Reputation indicator flagging domains on spam databases.
53391
+ free:
53392
+ type: boolean
53393
+ description: Classification indicating free or consumer-grade email service providers.
53394
+ catchAll:
53395
+ type: boolean
53396
+ description: Detection flag for domains configured to accept mail for any recipient address. true always corresponds to a top-level validEmail of accept_all.
53397
+ description: Domain validation details for the email address.
53398
+ AccountObject:
53399
+ type: object
53400
+ required:
53401
+ - role
53402
+ properties:
53403
+ role:
53404
+ type: boolean
53405
+ description: Detection flag identifying role-based email addresses (e.g., admin@, support@).
53406
+ fullMailBox:
53407
+ type: boolean
53408
+ description: Storage capacity status indicator for the recipient mailbox.
53409
+ description: Account-level validation details.
53410
+ DnsObject:
53411
+ type: object
53412
+ required: []
53413
+ properties:
53414
+ mxRecord:
53415
+ type: array
53416
+ items:
53417
+ type: string
53418
+ 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.
53419
+ aRecord:
53420
+ type: array
53421
+ items:
53422
+ type: string
53423
+ 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.
53424
+ description: DNS records for the email domain. Absent entirely when the domain publishes neither an MX nor an A record.
53425
+ AddressObject:
53426
+ type: object
53427
+ properties:
53428
+ validIpAddress:
53429
+ type: boolean
53430
+ description: IP recognized/reachable by the geolocation provider.
53431
+ location:
53432
+ $ref: '#/components/schemas/EmailLocation'
53433
+ security:
53434
+ $ref: '#/components/schemas/EmailSecurity'
53435
+ description: Geolocation and security enrichment data for the IP address.
53436
+ required: []
53437
+ EmailLocation:
53438
+ type: object
53439
+ description: Geolocation data derived from the IP address.
53440
+ properties:
53441
+ city:
53442
+ type: string
53443
+ description: Municipal or city name.
53444
+ district:
53445
+ type: string
53446
+ description: District or neighborhood.
53447
+ zipcode:
53448
+ type: string
53449
+ description: Postal or ZIP code.
53450
+ state_prov:
53451
+ type: string
53452
+ description: State or province.
53453
+ country_name:
53454
+ type: string
53455
+ description: Common country name.
53456
+ country_name_official:
53457
+ type: string
53458
+ description: Official country name.
53459
+ country_code2:
53460
+ type: string
53461
+ description: Two-character ISO country code.
53462
+ country_code3:
53463
+ type: string
53464
+ description: Three-character ISO country code.
53465
+ continent_name:
53466
+ type: string
53467
+ description: Continental region name.
53468
+ continent_code:
53469
+ type: string
53470
+ description: Continental region identifier.
53471
+ accuracy_radius:
53472
+ type: string
53473
+ description: Geolocation precision radius.
53474
+ confidence:
53475
+ type: string
53476
+ description: Confidence score for geolocation accuracy.
53477
+ is_eu:
53478
+ type: boolean
53479
+ description: European Union membership status.
53480
+ required: []
53481
+ EmailSecurity:
53482
+ type: object
53483
+ description: Threat and anonymity profile for the IP address.
53484
+ required:
53485
+ - threat_score
53486
+ - is_tor
53487
+ - is_proxy
53488
+ - proxy_type
53489
+ - proxy_provider
53490
+ - is_anonymous
53491
+ - is_known_attacker
53492
+ - is_spam
53493
+ - is_bot
53494
+ - is_cloud_provider
53495
+ - cloud_provider
53496
+ properties:
53497
+ threat_score:
53498
+ type: integer
53499
+ description: Quantitative risk assessment score. Higher values indicate elevated security risk.
53500
+ is_tor:
53501
+ type: boolean
53502
+ description: Detection flag for IP addresses routed through the Tor anonymity network.
53503
+ is_proxy:
53504
+ type: boolean
53505
+ description: Detection flag identifying IP addresses operating as proxy servers.
53506
+ proxy_type:
53507
+ type: string
53508
+ description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).
53509
+ proxy_provider:
53510
+ type: string
53511
+ description: Identified service provider operating the proxy infrastructure.
53512
+ is_anonymous:
53513
+ type: boolean
53514
+ description: Anonymization detection flag for IP addresses using identity obfuscation techniques.
53515
+ is_known_attacker:
53516
+ type: boolean
53517
+ description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.
53518
+ is_spam:
53519
+ type: boolean
53520
+ description: Reputation flag for IP addresses associated with spam transmission.
53521
+ is_bot:
53522
+ type: boolean
53523
+ description: Automated traffic detection flag for IP addresses from bot networks.
53524
+ is_cloud_provider:
53525
+ type: boolean
53526
+ description: Infrastructure classification flag for IP addresses from cloud computing providers.
53527
+ cloud_provider:
53528
+ type: string
53529
+ description: Identified cloud infrastructure or hosting service provider name.
53530
+ EmailCheckRequest:
53531
+ type: object
53532
+ description: Request body for email validation.
53533
+ required:
53534
+ - email
53535
+ properties:
53536
+ email:
53537
+ type: string
53538
+ format: email
53539
+ description: Email address to validate.
53540
+ name:
53541
+ type: string
53542
+ description: Optional name or label for record tracking.
53543
+ ip:
53544
+ type: string
53545
+ format: ip
53546
+ description: Optional IP address for geolocation and security enrichment.
53547
+ ErrorResponse:
53548
+ type: object
53549
+ description: Standard error envelope returned by the API on failed requests.
53550
+ required:
53551
+ - message
53552
+ properties:
53553
+ error:
53554
+ type: string
53555
+ description: Short error category or exception type.
53556
+ message:
53557
+ type: string
53558
+ description: Human-readable error message describing the failure.
53559
+ path:
53560
+ type: string
53561
+ description: API endpoint path that produced the error.
53562
+ status:
53563
+ type: integer
53564
+ description: HTTP status code returned with the error.
53565
+ timestamp:
53566
+ type: string
53567
+ format: date-time
53568
+ description: Timestamp when the error occurred (ISO 8601).
53569
+ headers:
53570
+ X-AF-Credits-Cost:
53571
+ description: Specifies the number of credits consumed by the current request.
53572
+ schema:
53573
+ type: integer
53574
+ X-Concurrent-Threads:
53575
+ description: Specifies the maximum number of concurrent requests allowed.
53576
+ schema:
53577
+ type: integer
53578
+ X-Concurrent-Threads-Active:
53579
+ description: Indicates the number of active concurrent requests being processed.
53580
+ schema:
53581
+ type: integer
53582
+ security:
53583
+ - ApiKeyAuthHeader: []
53584
+ - ApiKeyAuthQuery: []
53585
+ `,
50225
53586
  "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",
50226
53587
  "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",
50227
53588
  "iban-validation": `openapi: 3.1.1
@@ -53493,7 +56854,7 @@ var SPECS_BY_CATEGORY = {
53493
56854
  "commodity": ["commodity-fluctuation", "commodity-prices", "commodity-symbols", "commodity-time-series", "historical-commodity-prices"],
53494
56855
  "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"],
53495
56856
  "dns": ["bulk-dns-lookup", "dns-history-lookup", "dns-lookup", "reverse-dns-lookup"],
53496
- "domain": ["bulk-domain-checker", "domain-search-with-suggestions", "domain-search", "subdomain-lookup"],
56857
+ "domain": ["bulk-domain-checker", "domain-reputation", "domain-search-with-suggestions", "domain-search", "domain-typosquatting", "subdomain-lookup"],
53497
56858
  "email-validation": ["bulk-email-validation", "email-checker"],
53498
56859
  "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"],
53499
56860
  "geocoding": ["forward-geocoding", "reverse-geocoding"],
@@ -53546,8 +56907,10 @@ var SpecSlug = {
53546
56907
  DELETE_PDF_PAGE: "delete-pdf-page",
53547
56908
  DNS_HISTORY_LOOKUP: "dns-history-lookup",
53548
56909
  DNS_LOOKUP: "dns-lookup",
56910
+ DOMAIN_REPUTATION: "domain-reputation",
53549
56911
  DOMAIN_SEARCH: "domain-search",
53550
56912
  DOMAIN_SEARCH_WITH_SUGGESTIONS: "domain-search-with-suggestions",
56913
+ DOMAIN_TYPOSQUATTING: "domain-typosquatting",
53551
56914
  DOMAIN_WHOIS_HISTORY_LOOKUP: "domain-whois-history-lookup",
53552
56915
  EMAIL_CHECKER: "email-checker",
53553
56916
  FINANCIAL_APIS_SUPPORTED_COUNTRIES: "financial-apis-supported-countries",
@@ -53646,9 +57009,6 @@ function getSpecJson(slug) {
53646
57009
  function getSpecYaml(slug) {
53647
57010
  return SPECS_YAML[slug];
53648
57011
  }
53649
- function getSpec(slug) {
53650
- return getSpecJson(slug);
53651
- }
53652
57012
  function getSpecsByCategory(category) {
53653
57013
  return SPECS_BY_CATEGORY[category] ?? [];
53654
57014
  }
@@ -53660,7 +57020,6 @@ export {
53660
57020
  SPEC_SLUGS,
53661
57021
  SpecCategory,
53662
57022
  SpecSlug,
53663
- getSpec,
53664
57023
  getSpecJson,
53665
57024
  getSpecYaml,
53666
57025
  getSpecsByCategory