@apifreaks/openapi-specs 0.1.0 → 0.1.2

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 (108) hide show
  1. package/dist/index.cjs +133 -2
  2. package/dist/index.d.cts +140 -3
  3. package/dist/index.d.ts +140 -3
  4. package/dist/index.js +131 -2
  5. package/dist/specs/commodity/commodity-fluctuation.yaml +225 -0
  6. package/dist/specs/commodity/commodity-prices.yaml +236 -0
  7. package/dist/specs/commodity/commodity-symbols.yaml +159 -0
  8. package/dist/specs/commodity/commodity-time-series.yaml +238 -0
  9. package/dist/specs/commodity/historical-commodity-prices.yaml +208 -0
  10. package/dist/specs/currency/currency-converter.yaml +193 -0
  11. package/dist/specs/currency/currency-fluctuation.yaml +211 -0
  12. package/dist/specs/currency/currency-historical-data-limit.yaml +112 -0
  13. package/dist/specs/currency/currency-rate.yaml +173 -0
  14. package/dist/specs/currency/currency-supported.yaml +176 -0
  15. package/dist/specs/currency/currency-symbols.yaml +115 -0
  16. package/dist/specs/currency/currency-time-series.yaml +232 -0
  17. package/dist/specs/currency/geolocalized-currency-conversion.yaml +214 -0
  18. package/dist/specs/currency/historical-currency-converter.yaml +195 -0
  19. package/dist/specs/currency/historical-currency-rate.yaml +180 -0
  20. package/dist/specs/dns/bulk-dns-lookup.yaml +484 -0
  21. package/dist/specs/dns/dns-history-lookup.yaml +451 -0
  22. package/dist/specs/dns/dns-lookup.yaml +360 -0
  23. package/dist/specs/dns/reverse-dns-lookup.yaml +338 -0
  24. package/dist/specs/domain/bulk-domain-checker.yaml +198 -0
  25. package/dist/specs/domain/domain-search-with-suggestions.yaml +196 -0
  26. package/dist/specs/domain/domain-search.yaml +149 -0
  27. package/dist/specs/domain/subdomain-lookup.yaml +251 -0
  28. package/dist/specs/email-validation/bulk-email-validation.yaml +403 -0
  29. package/dist/specs/email-validation/email-checker.yaml +451 -0
  30. package/dist/specs/financial/bulk-vat-rates-country.yaml +250 -0
  31. package/dist/specs/financial/financial-apis-supported-countries.yaml +152 -0
  32. package/dist/specs/financial/iban-validation.yaml +270 -0
  33. package/dist/specs/financial/swift-code-finder.yaml +146 -0
  34. package/dist/specs/financial/swift-code-lookup.yaml +156 -0
  35. package/dist/specs/financial/vat-number-validation.yaml +205 -0
  36. package/dist/specs/financial/vat-rates-by-ip.yaml +200 -0
  37. package/dist/specs/financial/vat-rates-country.yaml +212 -0
  38. package/dist/specs/general/usage-credits.yaml +188 -0
  39. package/dist/specs/geocoding/forward-geocoding.yaml +292 -0
  40. package/dist/specs/geocoding/reverse-geocoding.yaml +237 -0
  41. package/dist/specs/geodb/administrative-units-details.yaml +180 -0
  42. package/dist/specs/geodb/administrative-units-levels.yaml +140 -0
  43. package/dist/specs/geodb/administrative-units.yaml +168 -0
  44. package/dist/specs/geodb/cities.yaml +209 -0
  45. package/dist/specs/geodb/countries-details.yaml +207 -0
  46. package/dist/specs/geodb/countries.yaml +199 -0
  47. package/dist/specs/geodb/flags-supported.yaml +119 -0
  48. package/dist/specs/geodb/flags.yaml +170 -0
  49. package/dist/specs/geodb/regions.yaml +76 -0
  50. package/dist/specs/geodb/subregions.yaml +158 -0
  51. package/dist/specs/ip-intelligence/bulk-ip-lookup.yaml +895 -0
  52. package/dist/specs/ip-intelligence/bulk-ip-threat-intelligence.yaml +310 -0
  53. package/dist/specs/ip-intelligence/ip-locator.yaml +708 -0
  54. package/dist/specs/ip-intelligence/ip-threat-intelligence.yaml +230 -0
  55. package/dist/specs/other/astronomy-data.yaml +632 -0
  56. package/dist/specs/pdf/delete-pdf-page.yaml +193 -0
  57. package/dist/specs/pdf/linearize-pdf.yaml +187 -0
  58. package/dist/specs/pdf/merge-pdf.yaml +193 -0
  59. package/dist/specs/pdf/pdf-compress.yaml +208 -0
  60. package/dist/specs/pdf/pdf-decrypt.yaml +202 -0
  61. package/dist/specs/pdf/pdf-encrypt.yaml +213 -0
  62. package/dist/specs/pdf/pdf-extract-pages.yaml +199 -0
  63. package/dist/specs/pdf/pdf-file-status.yaml +148 -0
  64. package/dist/specs/pdf/pdf-file.yaml +136 -0
  65. package/dist/specs/pdf/pdf-files.yaml +85 -0
  66. package/dist/specs/pdf/pdf-resource-download.yaml +117 -0
  67. package/dist/specs/pdf/pdf-resource-upload-binary.yaml +152 -0
  68. package/dist/specs/pdf/pdf-resource-upload.yaml +163 -0
  69. package/dist/specs/pdf/pdf-restrict.yaml +246 -0
  70. package/dist/specs/pdf/pdf-split-pages.yaml +208 -0
  71. package/dist/specs/pdf/pdf-task-status.yaml +187 -0
  72. package/dist/specs/pdf/pdf-to-image.yaml +844 -0
  73. package/dist/specs/pdf/pdf-unrestrict.yaml +221 -0
  74. package/dist/specs/pdf/rotate-pdf-pages.yaml +207 -0
  75. package/dist/specs/phone-validation/bulk-phone-number-validation.yaml +374 -0
  76. package/dist/specs/phone-validation/phone-number-validation.yaml +344 -0
  77. package/dist/specs/scraper/web-scraper.yaml +479 -0
  78. package/dist/specs/screenshot/bulk-screenshot.yaml +728 -0
  79. package/dist/specs/screenshot/website-screenshot.yaml +822 -0
  80. package/dist/specs/ssl/ssl-certificate-chain-lookup.yaml +593 -0
  81. package/dist/specs/ssl/ssl-certificate-lookup.yaml +478 -0
  82. package/dist/specs/timezone/timezone-converter.yaml +249 -0
  83. package/dist/specs/timezone/timezone-lookup.yaml +712 -0
  84. package/dist/specs/user-agent/bulk-user-agent-parser.yaml +340 -0
  85. package/dist/specs/user-agent/user-agent-parser.yaml +271 -0
  86. package/dist/specs/weather/air-quality.yaml +590 -0
  87. package/dist/specs/weather/bulk-live-weather.yaml +654 -0
  88. package/dist/specs/weather/flood-forecast.yaml +519 -0
  89. package/dist/specs/weather/historical-weather.yaml +842 -0
  90. package/dist/specs/weather/live-weather.yaml +633 -0
  91. package/dist/specs/weather/marine-weather.yaml +806 -0
  92. package/dist/specs/weather/time-series-weather.yaml +821 -0
  93. package/dist/specs/weather/weather-forecast.yaml +935 -0
  94. package/dist/specs/whois/asn-lookup.yaml +618 -0
  95. package/dist/specs/whois/bulk-whois-lookup.yaml +827 -0
  96. package/dist/specs/whois/domain-whois-history-lookup.yaml +445 -0
  97. package/dist/specs/whois/reverse-whois.yaml +566 -0
  98. package/dist/specs/whois/whois-domain-lookup.yaml +537 -0
  99. package/dist/specs/whois/whois-ip-lookup.yaml +1123 -0
  100. package/dist/specs/zip-code/bulk-zip-code-lookup.yaml +232 -0
  101. package/dist/specs/zip-code/zip-code-api.yaml +216 -0
  102. package/dist/specs/zip-code/zip-code-distance-match.yaml +239 -0
  103. package/dist/specs/zip-code/zip-code-distance.yaml +233 -0
  104. package/dist/specs/zip-code/zip-codes-by-city.yaml +201 -0
  105. package/dist/specs/zip-code/zip-codes-by-region.yaml +200 -0
  106. package/dist/specs/zip-code/zip-codes-radius-search.yaml +262 -0
  107. package/package.json +6 -2
  108. package/specs/pdf/merge-pdf.json +2 -2
@@ -0,0 +1,451 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: Email Checker API - Real-Time Validation, Deliverability & Risk Signals
4
+ version: 1.0.0
5
+ 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
+ contact:
7
+ name: APIFreaks Support
8
+ url: https://apifreaks.com/contact
9
+ email: support@apifreaks.com
10
+ servers:
11
+ - url: https://api.apifreaks.com/v1.0
12
+ description: Email Checker API Server
13
+ paths:
14
+ /email-validation/single:
15
+ post:
16
+ tags:
17
+ - Email Validation APIs
18
+ summary: Validate a single email
19
+ description: Validates a single email address and returns result.
20
+ parameters:
21
+ - name: format
22
+ in: query
23
+ required: false
24
+ schema:
25
+ type: string
26
+ enum:
27
+ - json
28
+ - xml
29
+ description: Format of the response
30
+ requestBody:
31
+ required: true
32
+ content:
33
+ application/json:
34
+ schema:
35
+ $ref: '#/components/schemas/EmailCheckRequest'
36
+ responses:
37
+ '200':
38
+ description: Successful response with Email Validation
39
+ content:
40
+ application/json:
41
+ schema:
42
+ $ref: '#/components/schemas/SingleEmailValidationResponse'
43
+ examples:
44
+ validEmail:
45
+ summary: Valid, deliverable email
46
+ value:
47
+ success: true
48
+ email: abc.def@gmail.com
49
+ validEmail: valid
50
+ validSyntax: true
51
+ domain:
52
+ name: gmail.com
53
+ disposable: false
54
+ spam: false
55
+ free: true
56
+ validDomain: true
57
+ catchAll: false
58
+ account:
59
+ role: false
60
+ fullMailBox: false
61
+ dns:
62
+ mxRecords:
63
+ - gmail-smtp-in.l.google.com.
64
+ - alt1.gmail-smtp-in.l.google.com.
65
+ - alt2.gmail-smtp-in.l.google.com.
66
+ - alt3.gmail-smtp-in.l.google.com.
67
+ - alt4.gmail-smtp-in.l.google.com.
68
+ invalidSyntax:
69
+ summary: Syntactically invalid email — domain/account/dns are minimal or absent
70
+ value:
71
+ success: true
72
+ email: not-an-email
73
+ validEmail: INVALID_EMAIL
74
+ validSyntax: false
75
+ domain:
76
+ name: not-an-email
77
+ validDomain: false
78
+ noMxRecord:
79
+ summary: Valid syntax, domain has no MX record
80
+ value:
81
+ success: true
82
+ email: test@nonexistentdomainxyz123abc.com
83
+ validEmail: invalid
84
+ validSyntax: true
85
+ reason: mx record does not exist.
86
+ domain:
87
+ name: nonexistentdomainxyz123abc.com
88
+ disposable: false
89
+ spam: false
90
+ free: false
91
+ validDomain: false
92
+ catchAll: false
93
+ account:
94
+ role: false
95
+ withIp:
96
+ summary: With ip — adds geolocation/security enrichment under address
97
+ value:
98
+ success: true
99
+ email: abc.def@gmail.com
100
+ validEmail: valid
101
+ validSyntax: true
102
+ domain:
103
+ name: gmail.com
104
+ disposable: false
105
+ spam: false
106
+ free: true
107
+ validDomain: true
108
+ catchAll: false
109
+ account:
110
+ role: false
111
+ fullMailBox: false
112
+ dns:
113
+ mxRecords:
114
+ - gmail-smtp-in.l.google.com.
115
+ - alt1.gmail-smtp-in.l.google.com.
116
+ - alt2.gmail-smtp-in.l.google.com.
117
+ - alt3.gmail-smtp-in.l.google.com.
118
+ - alt4.gmail-smtp-in.l.google.com.
119
+ ip: 8.8.8.8
120
+ address:
121
+ validIpAddress: true
122
+ location:
123
+ city: Mountain View
124
+ district: Santa Clara
125
+ confidence: low
126
+ zipcode: 94043-1351
127
+ state_prov: California
128
+ country_name: United States
129
+ continent_name: North America
130
+ continent_code: NA
131
+ country_code2: US
132
+ country_code3: USA
133
+ country_name_official: United States of America
134
+ accuracy_radius: '27.42'
135
+ is_eu: false
136
+ security:
137
+ threat_score: 5
138
+ is_tor: false
139
+ is_proxy: false
140
+ proxy_type: ''
141
+ proxy_provider: ''
142
+ is_anonymous: false
143
+ is_known_attacker: false
144
+ is_spam: false
145
+ is_bot: false
146
+ is_cloud_provider: true
147
+ cloud_provider: Google LLC
148
+ '400':
149
+ description: Bad Request – Invalid request body
150
+ content:
151
+ application/json:
152
+ schema:
153
+ $ref: '#/components/schemas/ErrorResponse'
154
+ examples:
155
+ missingEmail:
156
+ summary: email field missing from request body
157
+ value:
158
+ timestamp: '2026-07-27T12:51:23.593986185Z'
159
+ path: /v2.0/email-validation/single
160
+ status: 400
161
+ error: External API Error
162
+ message: Please pass valid value for 'email' in body.
163
+ '408':
164
+ description: Request Timeout
165
+ content:
166
+ application/json:
167
+ schema:
168
+ $ref: '#/components/schemas/ErrorResponse'
169
+ examples:
170
+ Request Timeout:
171
+ value:
172
+ timestamp: '2026-06-06T13:00:00.000Z'
173
+ path: /v1.0/email-validation/single
174
+ status: 408
175
+ error: Request Timeout
176
+ message: Timed out while connecting to the remote URL.
177
+ '429':
178
+ description: Rate Limit Exceeded
179
+ content:
180
+ application/json:
181
+ schema:
182
+ $ref: '#/components/schemas/ErrorResponse'
183
+ examples:
184
+ Rate Limit Exceeded:
185
+ value:
186
+ timestamp: '2026-06-06T13:00:00.000Z'
187
+ path: /v1.0/email-validation/single
188
+ status: 429
189
+ error: Too Many Requests
190
+ message: API rate limit exceeded.
191
+ operationId: checkEmail
192
+ components:
193
+ securitySchemes:
194
+ ApiKeyAuthHeader:
195
+ type: apiKey
196
+ in: header
197
+ name: X-apiKey
198
+ description: Pass your API key via the X-apiKey request header.
199
+ ApiKeyAuthQuery:
200
+ type: apiKey
201
+ in: query
202
+ name: apiKey
203
+ description: Pass your API key via the apiKey query parameter.
204
+ schemas:
205
+ SingleEmailValidationResponse:
206
+ type: object
207
+ required:
208
+ - success
209
+ - email
210
+ - validEmail
211
+ - validSyntax
212
+ - domain
213
+ properties:
214
+ success:
215
+ type: boolean
216
+ description: 'Indicates the processing status of the validation request. true: completed successfully.'
217
+ email:
218
+ type: string
219
+ format: email
220
+ description: The email address submitted for validation.
221
+ name:
222
+ type: string
223
+ description: Optional identifier or label provided in the request for record tracking.
224
+ reason:
225
+ type: string
226
+ description: Detailed explanation returned when validEmail is not valid.
227
+ validEmail:
228
+ type: string
229
+ enum:
230
+ - valid
231
+ - invalid
232
+ - INVALID_EMAIL
233
+ - unknown
234
+ - risky
235
+ 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.'
236
+ validSyntax:
237
+ type: boolean
238
+ description: Validates email address format compliance with RFC 5322 standards.
239
+ domain:
240
+ $ref: '#/components/schemas/DomainObject'
241
+ account:
242
+ $ref: '#/components/schemas/AccountObject'
243
+ dns:
244
+ $ref: '#/components/schemas/DnsObject'
245
+ address:
246
+ $ref: '#/components/schemas/AddressObject'
247
+ ip:
248
+ type: string
249
+ format: ip
250
+ description: IP address provided for geolocation and security enrichment.
251
+ description: Email validation response containing deliverability assessment and metadata.
252
+ DomainObject:
253
+ type: object
254
+ required:
255
+ - name
256
+ - validDomain
257
+ properties:
258
+ name:
259
+ type: string
260
+ description: Extracted domain component from the email address.
261
+ validDomain:
262
+ type: boolean
263
+ description: Domain validation status confirming DNS resolution capability.
264
+ disposable:
265
+ type: boolean
266
+ description: Classification flag identifying domains from temporary email service providers.
267
+ spam:
268
+ type: boolean
269
+ description: Reputation indicator flagging domains on spam databases.
270
+ free:
271
+ type: boolean
272
+ description: Classification indicating free or consumer-grade email service providers.
273
+ catchAll:
274
+ type: boolean
275
+ description: Detection flag for domains configured to accept mail for any recipient address.
276
+ description: Domain validation details for the email address.
277
+ AccountObject:
278
+ type: object
279
+ required:
280
+ - role
281
+ properties:
282
+ role:
283
+ type: boolean
284
+ description: Detection flag identifying role-based email addresses (e.g., admin@, support@).
285
+ fullMailBox:
286
+ type: boolean
287
+ description: Storage capacity status indicator for the recipient mailbox.
288
+ description: Account-level validation details.
289
+ DnsObject:
290
+ type: object
291
+ required:
292
+ - mxRecords
293
+ properties:
294
+ mxRecords:
295
+ type: array
296
+ items:
297
+ type: string
298
+ description: Collection of MX (Mail Exchange) hostname records from DNS queries.
299
+ aRecords:
300
+ type: array
301
+ items:
302
+ type: string
303
+ description: Collection of A (Address) records for the domain. Not observed in testing — may be rarely or never populated.
304
+ description: DNS records for the email domain.
305
+ AddressObject:
306
+ type: object
307
+ properties:
308
+ validIpAddress:
309
+ type: boolean
310
+ description: IP recognized/reachable by the geolocation provider.
311
+ location:
312
+ $ref: '#/components/schemas/EmailLocation'
313
+ security:
314
+ $ref: '#/components/schemas/EmailSecurity'
315
+ description: Geolocation and security enrichment data for the IP address.
316
+ required: []
317
+ EmailLocation:
318
+ type: object
319
+ description: Geolocation data derived from the IP address.
320
+ properties:
321
+ city:
322
+ type: string
323
+ description: Municipal or city name.
324
+ district:
325
+ type: string
326
+ description: District or neighborhood.
327
+ zipcode:
328
+ type: string
329
+ description: Postal or ZIP code.
330
+ state_prov:
331
+ type: string
332
+ description: State or province.
333
+ country_name:
334
+ type: string
335
+ description: Common country name.
336
+ country_name_official:
337
+ type: string
338
+ description: Official country name.
339
+ country_code2:
340
+ type: string
341
+ description: Two-character ISO country code.
342
+ country_code3:
343
+ type: string
344
+ description: Three-character ISO country code.
345
+ continent_name:
346
+ type: string
347
+ description: Continental region name.
348
+ continent_code:
349
+ type: string
350
+ description: Continental region identifier.
351
+ accuracy_radius:
352
+ type: string
353
+ description: Geolocation precision radius.
354
+ confidence:
355
+ type: string
356
+ description: Confidence score for geolocation accuracy.
357
+ is_eu:
358
+ type: boolean
359
+ description: European Union membership status.
360
+ required: []
361
+ EmailSecurity:
362
+ type: object
363
+ description: Threat and anonymity profile for the IP address.
364
+ required:
365
+ - threat_score
366
+ - is_tor
367
+ - is_proxy
368
+ - proxy_type
369
+ - proxy_provider
370
+ - is_anonymous
371
+ - is_known_attacker
372
+ - is_spam
373
+ - is_bot
374
+ - is_cloud_provider
375
+ - cloud_provider
376
+ properties:
377
+ threat_score:
378
+ type: integer
379
+ description: Quantitative risk assessment score. Higher values indicate elevated security risk.
380
+ is_tor:
381
+ type: boolean
382
+ description: Detection flag for IP addresses routed through the Tor anonymity network.
383
+ is_proxy:
384
+ type: boolean
385
+ description: Detection flag identifying IP addresses operating as proxy servers.
386
+ proxy_type:
387
+ type: string
388
+ description: Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS).
389
+ proxy_provider:
390
+ type: string
391
+ description: Identified service provider operating the proxy infrastructure.
392
+ is_anonymous:
393
+ type: boolean
394
+ description: Anonymization detection flag for IP addresses using identity obfuscation techniques.
395
+ is_known_attacker:
396
+ type: boolean
397
+ description: Threat intelligence flag for IP addresses documented as confirmed malicious sources.
398
+ is_spam:
399
+ type: boolean
400
+ description: Reputation flag for IP addresses associated with spam transmission.
401
+ is_bot:
402
+ type: boolean
403
+ description: Automated traffic detection flag for IP addresses from bot networks.
404
+ is_cloud_provider:
405
+ type: boolean
406
+ description: Infrastructure classification flag for IP addresses from cloud computing providers.
407
+ cloud_provider:
408
+ type: string
409
+ description: Identified cloud infrastructure or hosting service provider name.
410
+ EmailCheckRequest:
411
+ type: object
412
+ description: Request body for email validation.
413
+ required:
414
+ - email
415
+ properties:
416
+ email:
417
+ type: string
418
+ format: email
419
+ description: Email address to validate.
420
+ name:
421
+ type: string
422
+ description: Optional name or label for record tracking.
423
+ ip:
424
+ type: string
425
+ format: ip
426
+ description: Optional IP address for geolocation and security enrichment.
427
+ ErrorResponse:
428
+ type: object
429
+ description: Standard error envelope returned by the API on failed requests.
430
+ required:
431
+ - message
432
+ properties:
433
+ error:
434
+ type: string
435
+ description: Short error category or exception type.
436
+ message:
437
+ type: string
438
+ description: Human-readable error message describing the failure.
439
+ path:
440
+ type: string
441
+ description: API endpoint path that produced the error.
442
+ status:
443
+ type: integer
444
+ description: HTTP status code returned with the error.
445
+ timestamp:
446
+ type: string
447
+ format: date-time
448
+ description: Timestamp when the error occurred (ISO 8601).
449
+ security:
450
+ - ApiKeyAuthHeader: []
451
+ - ApiKeyAuthQuery: []
@@ -0,0 +1,250 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: Bulk VAT Rates by Country API Reference
4
+ version: 1.0.0
5
+ 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 — 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.
6
+ contact:
7
+ name: APIFreaks Support
8
+ url: https://apifreaks.com/contact
9
+ email: support@apifreaks.com
10
+ servers:
11
+ - url: https://api.apifreaks.com/v1.0
12
+ description: Bulk VAT Rates by Country API Server
13
+ paths:
14
+ /vat/rates/country:
15
+ post:
16
+ tags:
17
+ - Financial APIs
18
+ summary: Bulk VAT lookup by country
19
+ description: Retrieves VAT details for multiple countries or country-state combinations in a single request. Maximum of `100` entries per request are allowed.
20
+ operationId: bulkVatRatesByCountry
21
+ parameters:
22
+ - name: format
23
+ in: query
24
+ required: false
25
+ schema:
26
+ type: string
27
+ enum:
28
+ - json
29
+ - xml
30
+ default: json
31
+ description: 'Specify the desired response format. Options: ''json'' (default) or ''xml''.'
32
+ requestBody:
33
+ required: true
34
+ content:
35
+ application/json:
36
+ schema:
37
+ $ref: '#/components/schemas/BulkVatRequest'
38
+ examples:
39
+ typicalRequest:
40
+ summary: Typical bulk VAT lookup request
41
+ value:
42
+ countries:
43
+ - country: DE
44
+ - country: United_States
45
+ state: New_York
46
+ responses:
47
+ '200':
48
+ description: Successful response — 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.
49
+ content:
50
+ application/json:
51
+ schema:
52
+ $ref: '#/components/schemas/VatCountryBulkResponse'
53
+ examples:
54
+ typicalSuccess:
55
+ summary: All requested countries resolved
56
+ value:
57
+ - country: DE
58
+ type: vat
59
+ currency: EUR
60
+ standard_rate: 0.19
61
+ reduced_rate:
62
+ - 0.07
63
+ - 0
64
+ categories:
65
+ books: 0.07
66
+ newspapers: 0.07
67
+ periodicals: 0.07
68
+ broadcasting: 0
69
+ - country: United_States
70
+ state: New_York
71
+ type: vat
72
+ currency: ''
73
+ standard_rate: 0.04
74
+ partialMatch:
75
+ summary: One of two requested countries resolved — the unresolved one is simply absent
76
+ value:
77
+ - country: DE
78
+ type: vat
79
+ currency: EUR
80
+ standard_rate: 0.19
81
+ reduced_rate:
82
+ - 0.07
83
+ - 0
84
+ categories:
85
+ books: 0.07
86
+ newspapers: 0.07
87
+ periodicals: 0.07
88
+ broadcasting: 0
89
+ '400':
90
+ description: Bad Request — Missing or malformed request body
91
+ content:
92
+ application/json:
93
+ schema:
94
+ $ref: '#/components/schemas/ErrorResponse'
95
+ examples:
96
+ InvalidBody:
97
+ summary: countries field missing or malformed
98
+ value:
99
+ error: Invalid request body Exception
100
+ message: Please provide data in required format in request body
101
+ path: /v1.0/vat/rates/country
102
+ status: 400
103
+ timestamp: '2026-07-27T11:46:29.315Z'
104
+ '413':
105
+ description: Payload Too Large — Request body exceeds the size limit
106
+ content:
107
+ application/json:
108
+ schema:
109
+ $ref: '#/components/schemas/ErrorResponse'
110
+ examples:
111
+ PayloadTooLarge:
112
+ summary: Too many entries / body too large
113
+ value:
114
+ error: Payload too large Exception
115
+ message: Maximum request body size limit exceeded
116
+ path: /v1.0/vat/rates/country
117
+ status: 413
118
+ timestamp: '2026-07-27T11:46:29.925Z'
119
+ components:
120
+ securitySchemes:
121
+ ApiKeyAuthHeader:
122
+ type: apiKey
123
+ in: header
124
+ name: X-apiKey
125
+ description: Pass your API key via the X-apiKey request header.
126
+ ApiKeyAuthQuery:
127
+ type: apiKey
128
+ in: query
129
+ name: apiKey
130
+ description: Pass your API key via the apiKey query parameter.
131
+ schemas:
132
+ VatCountryBulkResponse:
133
+ type: array
134
+ 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.
135
+ items:
136
+ $ref: '#/components/schemas/VatBulkResponseItem'
137
+ VatBulkResponseItem:
138
+ type: object
139
+ description: A VAT rate result for a single country or state in a bulk response.
140
+ required:
141
+ - country
142
+ - type
143
+ - currency
144
+ - standard_rate
145
+ properties:
146
+ country:
147
+ type: string
148
+ description: Country identifier returned in the result item.
149
+ state:
150
+ type: string
151
+ description: State or region returned for sub-national lookups. Only present when the request included a state.
152
+ type:
153
+ type: string
154
+ description: Tax type applied for the country or state.
155
+ currency:
156
+ type: string
157
+ description: ISO 4217 currency code for the returned location. Can be an empty string for some state-level entries.
158
+ standard_rate:
159
+ type: number
160
+ format: float
161
+ description: Standard VAT or sales tax rate for the returned location.
162
+ reduced_rate:
163
+ type: array
164
+ description: Reduced VAT rates when defined for the location.
165
+ items:
166
+ $ref: '#/components/schemas/VatRateDecimal'
167
+ super_reduced_rate:
168
+ type: array
169
+ description: Super-reduced VAT rates for specific categories, when defined.
170
+ items:
171
+ $ref: '#/components/schemas/VatRateDecimal'
172
+ parking_rate:
173
+ type: number
174
+ format: float
175
+ description: Parking rate, when applicable.
176
+ categories:
177
+ description: Category-specific VAT rates, where defined (EU/UK only).
178
+ $ref: '#/components/schemas/VatCategories'
179
+ VatRateDecimal:
180
+ type: number
181
+ format: float
182
+ description: A VAT rate expressed as a decimal (e.g., 0.19 = 19%).
183
+ VatCategories:
184
+ type: object
185
+ description: Category-specific VAT rates, where defined (EU/UK only). Keys vary by country.
186
+ properties:
187
+ books:
188
+ type: number
189
+ format: float
190
+ description: VAT rate for books, as a decimal (e.g., 0.07 = 7%).
191
+ newspapers:
192
+ type: number
193
+ format: float
194
+ description: VAT rate for newspapers, as a decimal (e.g., 0.07 = 7%).
195
+ periodicals:
196
+ type: number
197
+ format: float
198
+ description: VAT rate for periodicals, as a decimal (e.g., 0.07 = 7%).
199
+ broadcasting:
200
+ type: number
201
+ format: float
202
+ description: VAT rate for broadcasting services, as a decimal (e.g., 0.19 = 19%).
203
+ BulkVatRequest:
204
+ type: object
205
+ description: Request body for bulk VAT rate lookup by country.
206
+ required:
207
+ - countries
208
+ properties:
209
+ countries:
210
+ type: array
211
+ description: Array of country entries to look up. Maximum 100 entries.
212
+ items:
213
+ $ref: '#/components/schemas/BulkVatRequestItem'
214
+ BulkVatRequestItem:
215
+ type: object
216
+ description: A single country entry in a bulk VAT request.
217
+ required:
218
+ - country
219
+ properties:
220
+ country:
221
+ type: string
222
+ description: Country identifier in Alpha-2, Alpha-3, or full name.
223
+ state:
224
+ type: string
225
+ description: Optional state or region for sub-national VAT.
226
+ ErrorResponse:
227
+ type: object
228
+ description: Standard error envelope returned by the API on failed requests.
229
+ required:
230
+ - message
231
+ properties:
232
+ error:
233
+ type: string
234
+ description: Short error category or exception type.
235
+ message:
236
+ type: string
237
+ description: Human-readable error message describing the failure.
238
+ path:
239
+ type: string
240
+ description: API endpoint path that produced the error.
241
+ status:
242
+ type: integer
243
+ description: HTTP status code returned with the error.
244
+ timestamp:
245
+ type: string
246
+ format: date-time
247
+ description: Timestamp when the error occurred (ISO 8601).
248
+ security:
249
+ - ApiKeyAuthHeader: []
250
+ - ApiKeyAuthQuery: []