@apifreaks/openapi-specs 0.2.0 → 0.3.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.
Files changed (214) hide show
  1. package/README.md +37 -38
  2. package/dist/index.cjs +5561 -2991
  3. package/dist/index.d.cts +2 -3
  4. package/dist/index.d.ts +2 -3
  5. package/dist/index.js +5561 -2991
  6. package/dist/specs/{general → billing}/usage-credits.yaml +11 -0
  7. package/dist/specs/commodity/commodity-fluctuation.yaml +14 -0
  8. package/dist/specs/commodity/commodity-prices.yaml +14 -0
  9. package/dist/specs/commodity/commodity-symbols.yaml +8 -0
  10. package/dist/specs/commodity/commodity-time-series.yaml +14 -0
  11. package/dist/specs/commodity/historical-commodity-prices.yaml +14 -0
  12. package/dist/specs/currency/currency-converter.yaml +14 -0
  13. package/dist/specs/currency/currency-fluctuation.yaml +14 -0
  14. package/dist/specs/currency/currency-historical-data-limit.yaml +11 -0
  15. package/dist/specs/currency/currency-rate.yaml +14 -0
  16. package/dist/specs/currency/currency-supported.yaml +11 -0
  17. package/dist/specs/currency/currency-symbols.yaml +11 -0
  18. package/dist/specs/currency/currency-time-series.yaml +14 -0
  19. package/dist/specs/currency/geolocalized-currency-conversion.yaml +14 -0
  20. package/dist/specs/currency/historical-currency-converter.yaml +14 -0
  21. package/dist/specs/currency/historical-currency-rate.yaml +14 -0
  22. package/dist/specs/dns/bulk-dns-lookup.yaml +14 -0
  23. package/dist/specs/dns/dns-history-lookup.yaml +14 -0
  24. package/dist/specs/dns/dns-lookup.yaml +11 -0
  25. package/dist/specs/dns/reverse-dns-lookup.yaml +34 -0
  26. package/dist/specs/domain/bulk-domain-checker.yaml +17 -0
  27. package/dist/specs/domain/domain-search-with-suggestions.yaml +14 -0
  28. package/dist/specs/domain/domain-search.yaml +14 -0
  29. package/dist/specs/domain/subdomain-lookup.yaml +14 -0
  30. package/dist/specs/email-validation/bulk-email-validation.yaml +76 -12
  31. package/dist/specs/email-validation/email-checker.yaml +93 -10
  32. package/dist/specs/financial/bulk-vat-rates-country.yaml +14 -0
  33. package/dist/specs/financial/financial-apis-supported-countries.yaml +8 -0
  34. package/dist/specs/financial/iban-validation.yaml +11 -0
  35. package/dist/specs/financial/swift-code-finder.yaml +11 -0
  36. package/dist/specs/financial/swift-code-lookup.yaml +14 -0
  37. package/dist/specs/financial/vat-number-validation.yaml +14 -0
  38. package/dist/specs/financial/vat-rates-by-ip.yaml +14 -0
  39. package/dist/specs/financial/vat-rates-country.yaml +14 -0
  40. package/dist/specs/geocoding/forward-geocoding.yaml +14 -0
  41. package/dist/specs/geocoding/reverse-geocoding.yaml +11 -0
  42. package/dist/specs/{geodb → geography}/administrative-units-details.yaml +14 -0
  43. package/dist/specs/{geodb → geography}/administrative-units-levels.yaml +14 -0
  44. package/dist/specs/{geodb → geography}/administrative-units.yaml +14 -0
  45. package/dist/specs/{geodb → geography}/cities.yaml +14 -0
  46. package/dist/specs/{geodb → geography}/countries-details.yaml +11 -0
  47. package/dist/specs/{geodb → geography}/countries.yaml +11 -0
  48. package/dist/specs/{geodb → geography}/flags-supported.yaml +8 -0
  49. package/dist/specs/{geodb → geography}/flags.yaml +14 -0
  50. package/dist/specs/{geodb → geography}/regions.yaml +8 -0
  51. package/dist/specs/{geodb → geography}/subregions.yaml +14 -0
  52. package/dist/specs/ip-intelligence/bulk-ip-lookup.yaml +14 -0
  53. package/dist/specs/ip-intelligence/bulk-ip-threat-intelligence.yaml +11 -0
  54. package/dist/specs/ip-intelligence/ip-locator.yaml +17 -0
  55. package/dist/specs/ip-intelligence/ip-threat-intelligence.yaml +14 -0
  56. package/dist/specs/pdf/bulk-pdf-generator.yaml +32 -0
  57. package/dist/specs/pdf/delete-pdf-page.yaml +14 -0
  58. package/dist/specs/pdf/linearize-pdf.yaml +14 -0
  59. package/dist/specs/pdf/merge-pdf.yaml +14 -0
  60. package/dist/specs/pdf/pdf-compress.yaml +14 -0
  61. package/dist/specs/pdf/pdf-decrypt.yaml +14 -0
  62. package/dist/specs/pdf/pdf-encrypt.yaml +14 -0
  63. package/dist/specs/pdf/pdf-extract-pages.yaml +14 -0
  64. package/dist/specs/pdf/pdf-file-status.yaml +14 -0
  65. package/dist/specs/pdf/pdf-file.yaml +14 -0
  66. package/dist/specs/pdf/pdf-files.yaml +8 -0
  67. package/dist/specs/pdf/pdf-generator.yaml +32 -0
  68. package/dist/specs/pdf/pdf-resource-download.yaml +14 -0
  69. package/dist/specs/pdf/pdf-resource-upload-binary.yaml +14 -0
  70. package/dist/specs/pdf/pdf-resource-upload.yaml +14 -0
  71. package/dist/specs/pdf/pdf-restrict.yaml +14 -0
  72. package/dist/specs/pdf/pdf-split-pages.yaml +14 -0
  73. package/dist/specs/pdf/pdf-task-status.yaml +14 -0
  74. package/dist/specs/pdf/pdf-to-image.yaml +35 -0
  75. package/dist/specs/pdf/pdf-unrestrict.yaml +14 -0
  76. package/dist/specs/pdf/rotate-pdf-pages.yaml +14 -0
  77. package/dist/specs/phone-validation/bulk-phone-number-validation.yaml +23 -0
  78. package/dist/specs/phone-validation/phone-number-validation.yaml +20 -0
  79. package/dist/specs/scraper/web-scraper.yaml +34 -0
  80. package/dist/specs/screenshot/bulk-screenshot.yaml +34 -0
  81. package/dist/specs/screenshot/website-screenshot.yaml +34 -0
  82. package/dist/specs/ssl/ssl-certificate-chain-lookup.yaml +17 -0
  83. package/dist/specs/ssl/ssl-certificate-lookup.yaml +17 -0
  84. package/dist/specs/timezone/timezone-converter.yaml +14 -0
  85. package/dist/specs/timezone/timezone-lookup.yaml +14 -0
  86. package/dist/specs/user-agent/bulk-user-agent-parser.yaml +11 -0
  87. package/dist/specs/user-agent/user-agent-parser.yaml +11 -0
  88. package/dist/specs/weather/air-quality.yaml +14 -0
  89. package/dist/specs/{other → weather}/astronomy-data.yaml +14 -0
  90. package/dist/specs/weather/bulk-live-weather.yaml +11 -0
  91. package/dist/specs/weather/flood-forecast.yaml +14 -0
  92. package/dist/specs/weather/historical-weather.yaml +14 -0
  93. package/dist/specs/weather/live-weather.yaml +14 -0
  94. package/dist/specs/weather/marine-weather.yaml +14 -0
  95. package/dist/specs/weather/time-series-weather.yaml +11 -0
  96. package/dist/specs/weather/weather-forecast.yaml +11 -0
  97. package/dist/specs/whois/asn-lookup.yaml +14 -0
  98. package/dist/specs/whois/bulk-whois-lookup.yaml +17 -0
  99. package/dist/specs/whois/domain-whois-history-lookup.yaml +14 -0
  100. package/dist/specs/whois/reverse-whois.yaml +34 -0
  101. package/dist/specs/whois/whois-domain-lookup.yaml +17 -0
  102. package/dist/specs/whois/whois-ip-lookup.yaml +14 -0
  103. package/dist/specs/zip-code/bulk-zip-code-lookup.yaml +14 -0
  104. package/dist/specs/zip-code/zip-code-api.yaml +14 -0
  105. package/dist/specs/zip-code/zip-code-distance-match.yaml +14 -0
  106. package/dist/specs/zip-code/zip-code-distance.yaml +14 -0
  107. package/dist/specs/zip-code/zip-codes-by-city.yaml +14 -0
  108. package/dist/specs/zip-code/zip-codes-by-region.yaml +14 -0
  109. package/dist/specs/zip-code/zip-codes-radius-search.yaml +34 -0
  110. package/package.json +1 -1
  111. package/specs/{general → billing}/usage-credits.json +18 -0
  112. package/specs/commodity/commodity-fluctuation.json +23 -0
  113. package/specs/commodity/commodity-prices.json +23 -0
  114. package/specs/commodity/commodity-symbols.json +13 -0
  115. package/specs/commodity/commodity-time-series.json +27 -13
  116. package/specs/commodity/historical-commodity-prices.json +23 -0
  117. package/specs/currency/currency-converter.json +23 -0
  118. package/specs/currency/currency-fluctuation.json +23 -0
  119. package/specs/currency/currency-historical-data-limit.json +18 -0
  120. package/specs/currency/currency-rate.json +23 -0
  121. package/specs/currency/currency-supported.json +18 -0
  122. package/specs/currency/currency-symbols.json +18 -0
  123. package/specs/currency/currency-time-series.json +23 -0
  124. package/specs/currency/geolocalized-currency-conversion.json +23 -0
  125. package/specs/currency/historical-currency-converter.json +23 -0
  126. package/specs/currency/historical-currency-rate.json +23 -0
  127. package/specs/dns/bulk-dns-lookup.json +23 -0
  128. package/specs/dns/dns-history-lookup.json +23 -0
  129. package/specs/dns/dns-lookup.json +18 -0
  130. package/specs/dns/reverse-dns-lookup.json +61 -1
  131. package/specs/domain/bulk-domain-checker.json +28 -0
  132. package/specs/domain/domain-search-with-suggestions.json +23 -0
  133. package/specs/domain/domain-search.json +23 -0
  134. package/specs/domain/subdomain-lookup.json +23 -0
  135. package/specs/email-validation/bulk-email-validation.json +118 -13
  136. package/specs/email-validation/email-checker.json +131 -11
  137. package/specs/financial/bulk-vat-rates-country.json +23 -0
  138. package/specs/financial/financial-apis-supported-countries.json +34 -5
  139. package/specs/financial/iban-validation.json +18 -0
  140. package/specs/financial/swift-code-finder.json +31 -2
  141. package/specs/financial/swift-code-lookup.json +23 -0
  142. package/specs/financial/vat-number-validation.json +23 -0
  143. package/specs/financial/vat-rates-by-ip.json +23 -0
  144. package/specs/financial/vat-rates-country.json +23 -0
  145. package/specs/geocoding/forward-geocoding.json +23 -0
  146. package/specs/geocoding/reverse-geocoding.json +18 -0
  147. package/specs/{geodb → geography}/administrative-units-details.json +23 -0
  148. package/specs/{geodb → geography}/administrative-units-levels.json +23 -0
  149. package/specs/{geodb → geography}/administrative-units.json +23 -0
  150. package/specs/{geodb → geography}/cities.json +23 -0
  151. package/specs/{geodb → geography}/countries-details.json +18 -0
  152. package/specs/{geodb → geography}/countries.json +18 -0
  153. package/specs/{geodb → geography}/flags-supported.json +13 -0
  154. package/specs/{geodb → geography}/flags.json +23 -0
  155. package/specs/{geodb → geography}/regions.json +13 -0
  156. package/specs/{geodb → geography}/subregions.json +23 -0
  157. package/specs/ip-intelligence/bulk-ip-lookup.json +23 -0
  158. package/specs/ip-intelligence/bulk-ip-threat-intelligence.json +18 -0
  159. package/specs/ip-intelligence/ip-locator.json +33 -5
  160. package/specs/ip-intelligence/ip-threat-intelligence.json +23 -0
  161. package/specs/pdf/bulk-pdf-generator.json +61 -8
  162. package/specs/pdf/delete-pdf-page.json +33 -21
  163. package/specs/pdf/linearize-pdf.json +31 -19
  164. package/specs/pdf/merge-pdf.json +30 -18
  165. package/specs/pdf/pdf-compress.json +32 -25
  166. package/specs/pdf/pdf-decrypt.json +32 -21
  167. package/specs/pdf/pdf-encrypt.json +31 -19
  168. package/specs/pdf/pdf-extract-pages.json +33 -21
  169. package/specs/pdf/pdf-file-status.json +23 -0
  170. package/specs/pdf/pdf-file.json +23 -0
  171. package/specs/pdf/pdf-files.json +13 -0
  172. package/specs/pdf/pdf-generator.json +61 -8
  173. package/specs/pdf/pdf-resource-download.json +23 -0
  174. package/specs/pdf/pdf-resource-upload-binary.json +29 -16
  175. package/specs/pdf/pdf-resource-upload.json +30 -19
  176. package/specs/pdf/pdf-restrict.json +32 -20
  177. package/specs/pdf/pdf-split-pages.json +33 -21
  178. package/specs/pdf/pdf-task-status.json +23 -0
  179. package/specs/pdf/pdf-to-image.json +90 -101
  180. package/specs/pdf/pdf-unrestrict.json +32 -20
  181. package/specs/pdf/rotate-pdf-pages.json +32 -20
  182. package/specs/phone-validation/bulk-phone-number-validation.json +54 -16
  183. package/specs/phone-validation/phone-number-validation.json +33 -0
  184. package/specs/scraper/web-scraper.json +53 -0
  185. package/specs/screenshot/bulk-screenshot.json +53 -0
  186. package/specs/screenshot/website-screenshot.json +53 -0
  187. package/specs/ssl/ssl-certificate-chain-lookup.json +28 -0
  188. package/specs/ssl/ssl-certificate-lookup.json +28 -0
  189. package/specs/timezone/timezone-converter.json +23 -0
  190. package/specs/timezone/timezone-lookup.json +25 -2
  191. package/specs/user-agent/bulk-user-agent-parser.json +20 -2
  192. package/specs/user-agent/user-agent-parser.json +18 -0
  193. package/specs/weather/air-quality.json +23 -0
  194. package/specs/{other → weather}/astronomy-data.json +24 -2
  195. package/specs/weather/bulk-live-weather.json +18 -0
  196. package/specs/weather/flood-forecast.json +23 -0
  197. package/specs/weather/historical-weather.json +23 -0
  198. package/specs/weather/live-weather.json +23 -0
  199. package/specs/weather/marine-weather.json +23 -0
  200. package/specs/weather/time-series-weather.json +18 -0
  201. package/specs/weather/weather-forecast.json +18 -0
  202. package/specs/whois/asn-lookup.json +23 -0
  203. package/specs/whois/bulk-whois-lookup.json +28 -0
  204. package/specs/whois/domain-whois-history-lookup.json +23 -0
  205. package/specs/whois/reverse-whois.json +53 -0
  206. package/specs/whois/whois-domain-lookup.json +28 -0
  207. package/specs/whois/whois-ip-lookup.json +23 -0
  208. package/specs/zip-code/bulk-zip-code-lookup.json +23 -0
  209. package/specs/zip-code/zip-code-api.json +23 -0
  210. package/specs/zip-code/zip-code-distance-match.json +23 -0
  211. package/specs/zip-code/zip-code-distance.json +23 -0
  212. package/specs/zip-code/zip-codes-by-city.json +23 -0
  213. package/specs/zip-code/zip-codes-by-region.json +24 -7
  214. package/specs/zip-code/zip-codes-radius-search.json +53 -0
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "Bulk Email Validation API - Validate and Verify Emails in Bulk",
5
5
  "version": "1.0.0",
6
- "description": "Validate up to 100 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 100 email addresses per request.",
6
+ "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.",
7
7
  "contact": {
8
8
  "name": "APIFreaks Support",
9
9
  "url": "https://apifreaks.com/contact",
@@ -21,7 +21,7 @@
21
21
  "post": {
22
22
  "tags": ["Email Validation APIs"],
23
23
  "summary": "Validate multiple email addresses",
24
- "description": "Validates a bulk of email addresses and returns result for each. Maximum `100` email addresses per request.",
24
+ "description": "Validates a bulk of email addresses and returns result for each. Maximum `10` email addresses per request.",
25
25
  "parameters": [
26
26
  {
27
27
  "name": "format",
@@ -57,7 +57,7 @@
57
57
  "bulkEmailsValidated": {
58
58
  "summary": "Mix of a valid and a syntactically invalid email",
59
59
  "value": {
60
- "emailValidationResponses": [
60
+ "emailResponse": [
61
61
  {
62
62
  "success": true,
63
63
  "email": "abc.def@gmail.com",
@@ -76,7 +76,7 @@
76
76
  "fullMailBox": false
77
77
  },
78
78
  "dns": {
79
- "mxRecords": [
79
+ "mxRecord": [
80
80
  "gmail-smtp-in.l.google.com.",
81
81
  "alt1.gmail-smtp-in.l.google.com.",
82
82
  "alt2.gmail-smtp-in.l.google.com.",
@@ -100,6 +100,17 @@
100
100
  }
101
101
  }
102
102
  }
103
+ },
104
+ "headers": {
105
+ "X-AF-Credits-Cost": {
106
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
107
+ },
108
+ "X-Concurrent-Threads": {
109
+ "$ref": "#/components/headers/X-Concurrent-Threads"
110
+ },
111
+ "X-Concurrent-Threads-Active": {
112
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
113
+ }
103
114
  }
104
115
  },
105
116
  "400": {
@@ -122,6 +133,63 @@
122
133
  }
123
134
  }
124
135
  }
136
+ },
137
+ "headers": {
138
+ "X-AF-Credits-Cost": {
139
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
140
+ }
141
+ }
142
+ },
143
+ "404": {
144
+ "description": "Not Found – The requested resource could not be found",
145
+ "content": {
146
+ "application/json": {
147
+ "schema": {
148
+ "$ref": "#/components/schemas/ErrorResponse"
149
+ },
150
+ "examples": {
151
+ "Resource Not Found": {
152
+ "value": {
153
+ "timestamp": "2026-09-02T11:57:55.592Z",
154
+ "path": "/v1.0/email-validation/bulkx",
155
+ "status": 404,
156
+ "error": "Resource Not Found",
157
+ "message": "The requested resource could not be found. Please verify the URL and try again."
158
+ }
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "headers": {
164
+ "X-AF-Credits-Cost": {
165
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
166
+ }
167
+ }
168
+ },
169
+ "413": {
170
+ "description": "Payload Too Large – emailData exceeds the maximum of 10 entries per request",
171
+ "content": {
172
+ "application/json": {
173
+ "schema": {
174
+ "$ref": "#/components/schemas/ErrorResponse"
175
+ },
176
+ "examples": {
177
+ "Payload Too Large": {
178
+ "value": {
179
+ "timestamp": "2026-09-02T11:57:34.223Z",
180
+ "path": "/v2/email-validation/bulk",
181
+ "status": 413,
182
+ "error": "Payload too large Exception",
183
+ "message": "Maximum request body size limit exceeded"
184
+ }
185
+ }
186
+ }
187
+ }
188
+ },
189
+ "headers": {
190
+ "X-AF-Credits-Cost": {
191
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
192
+ }
125
193
  }
126
194
  },
127
195
  "408": {
@@ -143,6 +211,11 @@
143
211
  }
144
212
  }
145
213
  }
214
+ },
215
+ "headers": {
216
+ "X-AF-Credits-Cost": {
217
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
218
+ }
146
219
  }
147
220
  },
148
221
  "429": {
@@ -164,6 +237,11 @@
164
237
  }
165
238
  }
166
239
  }
240
+ },
241
+ "headers": {
242
+ "X-AF-Credits-Cost": {
243
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
244
+ }
167
245
  }
168
246
  }
169
247
  },
@@ -190,9 +268,9 @@
190
268
  "BulkEmailValidationResponse": {
191
269
  "type": "object",
192
270
  "description": "Wrapper containing the per-email results array.",
193
- "required": ["emailValidationResponses"],
271
+ "required": ["emailResponse"],
194
272
  "properties": {
195
- "emailValidationResponses": {
273
+ "emailResponse": {
196
274
  "type": "array",
197
275
  "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.",
198
276
  "items": {
@@ -224,8 +302,15 @@
224
302
  },
225
303
  "validEmail": {
226
304
  "type": "string",
227
- "enum": ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky"],
228
- "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. unknown/risky are documented possibilities not observed during testing."
305
+ "enum": [
306
+ "valid",
307
+ "invalid",
308
+ "INVALID_EMAIL",
309
+ "unknown",
310
+ "risky",
311
+ "app_server_blocked"
312
+ ],
313
+ "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)."
229
314
  },
230
315
  "validSyntax": {
231
316
  "type": "boolean",
@@ -299,16 +384,16 @@
299
384
  },
300
385
  "DnsObject": {
301
386
  "type": "object",
302
- "required": ["mxRecords"],
387
+ "required": ["mxRecord"],
303
388
  "properties": {
304
- "mxRecords": {
389
+ "mxRecord": {
305
390
  "type": "array",
306
391
  "items": {
307
392
  "type": "string"
308
393
  },
309
394
  "description": "Collection of MX (Mail Exchange) hostname records from DNS queries."
310
395
  },
311
- "aRecords": {
396
+ "aRecord": {
312
397
  "type": "array",
313
398
  "items": {
314
399
  "type": "string"
@@ -464,8 +549,8 @@
464
549
  "properties": {
465
550
  "emailData": {
466
551
  "type": "array",
467
- "description": "Array of email objects to validate. Maximum 100 per request.",
468
- "maxItems": 100,
552
+ "description": "Array of email objects to validate. Maximum 10 per request.",
553
+ "maxItems": 10,
469
554
  "items": {
470
555
  "$ref": "#/components/schemas/BulkEmailRequestItem"
471
556
  }
@@ -521,6 +606,26 @@
521
606
  }
522
607
  }
523
608
  }
609
+ },
610
+ "headers": {
611
+ "X-AF-Credits-Cost": {
612
+ "description": "Specifies the number of credits consumed by the current request.",
613
+ "schema": {
614
+ "type": "integer"
615
+ }
616
+ },
617
+ "X-Concurrent-Threads": {
618
+ "description": "Specifies the maximum number of concurrent requests allowed.",
619
+ "schema": {
620
+ "type": "integer"
621
+ }
622
+ },
623
+ "X-Concurrent-Threads-Active": {
624
+ "description": "Indicates the number of active concurrent requests being processed.",
625
+ "schema": {
626
+ "type": "integer"
627
+ }
628
+ }
524
629
  }
525
630
  },
526
631
  "security": [
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "Email Checker API - Real-Time Validation, Deliverability & Risk Signals",
5
5
  "version": "1.0.0",
6
- "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 status.",
6
+ "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.",
7
7
  "contact": {
8
8
  "name": "APIFreaks Support",
9
9
  "url": "https://apifreaks.com/contact",
@@ -73,7 +73,7 @@
73
73
  "fullMailBox": false
74
74
  },
75
75
  "dns": {
76
- "mxRecords": [
76
+ "mxRecord": [
77
77
  "gmail-smtp-in.l.google.com.",
78
78
  "alt1.gmail-smtp-in.l.google.com.",
79
79
  "alt2.gmail-smtp-in.l.google.com.",
@@ -137,7 +137,7 @@
137
137
  "fullMailBox": false
138
138
  },
139
139
  "dns": {
140
- "mxRecords": [
140
+ "mxRecord": [
141
141
  "gmail-smtp-in.l.google.com.",
142
142
  "alt1.gmail-smtp-in.l.google.com.",
143
143
  "alt2.gmail-smtp-in.l.google.com.",
@@ -178,9 +178,44 @@
178
178
  }
179
179
  }
180
180
  }
181
+ },
182
+ "appServerBlocked": {
183
+ "summary": "Valid syntax, but the recipient mail server blocked the verification attempt",
184
+ "value": {
185
+ "success": true,
186
+ "email": "randomuser98765zzz@gmx.com",
187
+ "validEmail": "app_server_blocked",
188
+ "validSyntax": true,
189
+ "reason": "We are unable to determine the validity of email at the moment. Please try later.",
190
+ "domain": {
191
+ "name": "gmx.com",
192
+ "disposable": false,
193
+ "spam": false,
194
+ "free": true,
195
+ "validDomain": true,
196
+ "catchAll": false
197
+ },
198
+ "account": {
199
+ "role": false
200
+ },
201
+ "dns": {
202
+ "mxRecord": ["mx00.gmx.net."]
203
+ }
204
+ }
181
205
  }
182
206
  }
183
207
  }
208
+ },
209
+ "headers": {
210
+ "X-AF-Credits-Cost": {
211
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
212
+ },
213
+ "X-Concurrent-Threads": {
214
+ "$ref": "#/components/headers/X-Concurrent-Threads"
215
+ },
216
+ "X-Concurrent-Threads-Active": {
217
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
218
+ }
184
219
  }
185
220
  },
186
221
  "400": {
@@ -194,15 +229,26 @@
194
229
  "missingEmail": {
195
230
  "summary": "email field missing from request body",
196
231
  "value": {
197
- "timestamp": "2026-07-27T12:51:23.593986185Z",
198
- "path": "/v2.0/email-validation/single",
232
+ "timestamp": "2026-09-02T11:56:23.462Z",
233
+ "path": "/v2/email-validation/single",
199
234
  "status": 400,
200
- "error": "External API Error",
235
+ "error": "Missing or Invalid Parameters",
201
236
  "message": "Please pass valid value for 'email' in body."
202
237
  }
203
238
  }
204
239
  }
205
240
  }
241
+ },
242
+ "headers": {
243
+ "X-AF-Credits-Cost": {
244
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
245
+ },
246
+ "X-Concurrent-Threads": {
247
+ "$ref": "#/components/headers/X-Concurrent-Threads"
248
+ },
249
+ "X-Concurrent-Threads-Active": {
250
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
251
+ }
206
252
  }
207
253
  },
208
254
  "408": {
@@ -224,6 +270,49 @@
224
270
  }
225
271
  }
226
272
  }
273
+ },
274
+ "headers": {
275
+ "X-AF-Credits-Cost": {
276
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
277
+ },
278
+ "X-Concurrent-Threads": {
279
+ "$ref": "#/components/headers/X-Concurrent-Threads"
280
+ },
281
+ "X-Concurrent-Threads-Active": {
282
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
283
+ }
284
+ }
285
+ },
286
+ "404": {
287
+ "description": "Not Found – The requested resource could not be found",
288
+ "content": {
289
+ "application/json": {
290
+ "schema": {
291
+ "$ref": "#/components/schemas/ErrorResponse"
292
+ },
293
+ "examples": {
294
+ "Resource Not Found": {
295
+ "value": {
296
+ "timestamp": "2026-09-02T11:56:23.937Z",
297
+ "path": "/v1.0/email-validation/singlex",
298
+ "status": 404,
299
+ "error": "Resource Not Found",
300
+ "message": "The requested resource could not be found. Please verify the URL and try again."
301
+ }
302
+ }
303
+ }
304
+ }
305
+ },
306
+ "headers": {
307
+ "X-AF-Credits-Cost": {
308
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
309
+ },
310
+ "X-Concurrent-Threads": {
311
+ "$ref": "#/components/headers/X-Concurrent-Threads"
312
+ },
313
+ "X-Concurrent-Threads-Active": {
314
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
315
+ }
227
316
  }
228
317
  },
229
318
  "429": {
@@ -245,6 +334,17 @@
245
334
  }
246
335
  }
247
336
  }
337
+ },
338
+ "headers": {
339
+ "X-AF-Credits-Cost": {
340
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
341
+ },
342
+ "X-Concurrent-Threads": {
343
+ "$ref": "#/components/headers/X-Concurrent-Threads"
344
+ },
345
+ "X-Concurrent-Threads-Active": {
346
+ "$ref": "#/components/headers/X-Concurrent-Threads-Active"
347
+ }
248
348
  }
249
349
  }
250
350
  },
@@ -291,8 +391,8 @@
291
391
  },
292
392
  "validEmail": {
293
393
  "type": "string",
294
- "enum": ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky"],
295
- "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. unknown/risky are documented possibilities not observed during testing."
394
+ "enum": ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky", "app_server_blocked"],
395
+ "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)."
296
396
  },
297
397
  "validSyntax": {
298
398
  "type": "boolean",
@@ -366,16 +466,16 @@
366
466
  },
367
467
  "DnsObject": {
368
468
  "type": "object",
369
- "required": ["mxRecords"],
469
+ "required": ["mxRecord"],
370
470
  "properties": {
371
- "mxRecords": {
471
+ "mxRecord": {
372
472
  "type": "array",
373
473
  "items": {
374
474
  "type": "string"
375
475
  },
376
476
  "description": "Collection of MX (Mail Exchange) hostname records from DNS queries."
377
477
  },
378
- "aRecords": {
478
+ "aRecord": {
379
479
  "type": "array",
380
480
  "items": {
381
481
  "type": "string"
@@ -573,6 +673,26 @@
573
673
  }
574
674
  }
575
675
  }
676
+ },
677
+ "headers": {
678
+ "X-AF-Credits-Cost": {
679
+ "description": "Specifies the number of credits consumed by the current request.",
680
+ "schema": {
681
+ "type": "integer"
682
+ }
683
+ },
684
+ "X-Concurrent-Threads": {
685
+ "description": "Specifies the maximum number of concurrent requests allowed.",
686
+ "schema": {
687
+ "type": "integer"
688
+ }
689
+ },
690
+ "X-Concurrent-Threads-Active": {
691
+ "description": "Indicates the number of active concurrent requests being processed.",
692
+ "schema": {
693
+ "type": "integer"
694
+ }
695
+ }
576
696
  }
577
697
  },
578
698
  "security": [
@@ -116,6 +116,11 @@
116
116
  }
117
117
  }
118
118
  }
119
+ },
120
+ "headers": {
121
+ "X-AF-Credits-Cost": {
122
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
123
+ }
119
124
  }
120
125
  },
121
126
  "400": {
@@ -138,6 +143,11 @@
138
143
  }
139
144
  }
140
145
  }
146
+ },
147
+ "headers": {
148
+ "X-AF-Credits-Cost": {
149
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
150
+ }
141
151
  }
142
152
  },
143
153
  "413": {
@@ -160,6 +170,11 @@
160
170
  }
161
171
  }
162
172
  }
173
+ },
174
+ "headers": {
175
+ "X-AF-Credits-Cost": {
176
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
177
+ }
163
178
  }
164
179
  }
165
180
  }
@@ -328,6 +343,14 @@
328
343
  }
329
344
  }
330
345
  }
346
+ },
347
+ "headers": {
348
+ "X-AF-Credits-Cost": {
349
+ "description": "Specifies the number of credits consumed by the current request.",
350
+ "schema": {
351
+ "type": "integer"
352
+ }
353
+ }
331
354
  }
332
355
  },
333
356
  "security": [
@@ -58,7 +58,11 @@
58
58
  "summary": "Typical successful response (truncated)",
59
59
  "value": {
60
60
  "VAT_Supported_Countries_And_States": [
61
- { "germany": { "code": "de" } },
61
+ {
62
+ "germany": {
63
+ "code": "de"
64
+ }
65
+ },
62
66
  {
63
67
  "united_states": {
64
68
  "code": "us",
@@ -71,17 +75,34 @@
71
75
  }
72
76
  ],
73
77
  "IBAN_Supported_Countries": [
74
- { "countryCode": "DE", "name": "Germany" },
75
- { "countryCode": "GB", "name": "United Kingdom" }
78
+ {
79
+ "countryCode": "DE",
80
+ "name": "Germany"
81
+ },
82
+ {
83
+ "countryCode": "GB",
84
+ "name": "United Kingdom"
85
+ }
76
86
  ],
77
87
  "SWIFT_Supported_Countries": [
78
- { "name": "Germany", "countryCode": "DE" },
79
- { "name": "United States", "countryCode": "US" }
88
+ {
89
+ "name": "Germany",
90
+ "countryCode": "DE"
91
+ },
92
+ {
93
+ "name": "United States",
94
+ "countryCode": "US"
95
+ }
80
96
  ]
81
97
  }
82
98
  }
83
99
  }
84
100
  }
101
+ },
102
+ "headers": {
103
+ "X-AF-Credits-Cost": {
104
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
105
+ }
85
106
  }
86
107
  }
87
108
  }
@@ -191,6 +212,14 @@
191
212
  }
192
213
  }
193
214
  }
215
+ },
216
+ "headers": {
217
+ "X-AF-Credits-Cost": {
218
+ "description": "Specifies the number of credits consumed by the current request.",
219
+ "schema": {
220
+ "type": "integer"
221
+ }
222
+ }
194
223
  }
195
224
  },
196
225
  "security": [
@@ -136,6 +136,11 @@
136
136
  }
137
137
  }
138
138
  }
139
+ },
140
+ "headers": {
141
+ "X-AF-Credits-Cost": {
142
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
143
+ }
139
144
  }
140
145
  },
141
146
  "400": {
@@ -158,6 +163,11 @@
158
163
  }
159
164
  }
160
165
  }
166
+ },
167
+ "headers": {
168
+ "X-AF-Credits-Cost": {
169
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
170
+ }
161
171
  }
162
172
  }
163
173
  },
@@ -315,6 +325,14 @@
315
325
  },
316
326
  "description": "Standard error envelope returned by the API on failed requests."
317
327
  }
328
+ },
329
+ "headers": {
330
+ "X-AF-Credits-Cost": {
331
+ "description": "Specifies the number of credits consumed by the current request.",
332
+ "schema": {
333
+ "type": "integer"
334
+ }
335
+ }
318
336
  }
319
337
  },
320
338
  "security": [
@@ -74,7 +74,13 @@
74
74
  "examples": {
75
75
  "allCountries": {
76
76
  "summary": "No parameters — all supported countries",
77
- "value": ["Albania", "Algeria", "Andorra", "Germany", "United States"]
77
+ "value": [
78
+ "Albania",
79
+ "Algeria",
80
+ "Andorra",
81
+ "Germany",
82
+ "United States"
83
+ ]
78
84
  },
79
85
  "banksInCountry": {
80
86
  "summary": "country only — bank names in that country",
@@ -82,7 +88,12 @@
82
88
  },
83
89
  "citiesForBank": {
84
90
  "summary": "country + bank — cities that bank operates in",
85
- "value": ["AACHEN", "BERLIN", "FRANKFURT AM MAIN", "MUENCHEN"]
91
+ "value": [
92
+ "AACHEN",
93
+ "BERLIN",
94
+ "FRANKFURT AM MAIN",
95
+ "MUENCHEN"
96
+ ]
86
97
  },
87
98
  "swiftCodes": {
88
99
  "summary": "country + bank + city — matching SWIFT/BIC codes",
@@ -100,6 +111,11 @@
100
111
  }
101
112
  }
102
113
  }
114
+ },
115
+ "headers": {
116
+ "X-AF-Credits-Cost": {
117
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
118
+ }
103
119
  }
104
120
  },
105
121
  "400": {
@@ -118,6 +134,11 @@
118
134
  }
119
135
  }
120
136
  }
137
+ },
138
+ "headers": {
139
+ "X-AF-Credits-Cost": {
140
+ "$ref": "#/components/headers/X-AF-Credits-Cost"
141
+ }
121
142
  }
122
143
  }
123
144
  }
@@ -179,6 +200,14 @@
179
200
  }
180
201
  }
181
202
  }
203
+ },
204
+ "headers": {
205
+ "X-AF-Credits-Cost": {
206
+ "description": "Specifies the number of credits consumed by the current request.",
207
+ "schema": {
208
+ "type": "integer"
209
+ }
210
+ }
182
211
  }
183
212
  },
184
213
  "security": [