@apifreaks/openapi-specs 0.3.0 → 0.3.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 (45) hide show
  1. package/README.md +75 -99
  2. package/dist/index.cjs +8702 -2973
  3. package/dist/index.d.cts +15 -8
  4. package/dist/index.d.ts +15 -8
  5. package/dist/index.js +8699 -2973
  6. package/dist/specs/email-validation/bulk-email-validation.yaml +59 -12
  7. package/dist/specs/email-validation/email-checker.yaml +52 -10
  8. package/dist/specs/pdf/{bulk-pdf-generator.yaml → pdf-generator-bulk.yaml} +2 -2
  9. package/dist/specs/pdf/pdf-generator.yaml +2 -2
  10. package/package.json +1 -1
  11. package/specs/README.md +259 -0
  12. package/specs/email-validation/bulk-email-validation.json +90 -13
  13. package/specs/email-validation/email-checker.json +67 -11
  14. package/specs/pdf/{bulk-pdf-generator.json → pdf-generator-bulk.json} +2 -2
  15. package/specs/pdf/pdf-generator.json +2 -2
  16. /package/dist/specs/{general → billing}/usage-credits.yaml +0 -0
  17. /package/dist/specs/{geodb → geography}/administrative-units-details.yaml +0 -0
  18. /package/dist/specs/{geodb → geography}/administrative-units-levels.yaml +0 -0
  19. /package/dist/specs/{geodb → geography}/administrative-units.yaml +0 -0
  20. /package/dist/specs/{geodb → geography}/cities.yaml +0 -0
  21. /package/dist/specs/{geodb → geography}/countries-details.yaml +0 -0
  22. /package/dist/specs/{geodb → geography}/countries.yaml +0 -0
  23. /package/dist/specs/{geodb → geography}/flags-supported.yaml +0 -0
  24. /package/dist/specs/{geodb → geography}/flags.yaml +0 -0
  25. /package/dist/specs/{geodb → geography}/regions.yaml +0 -0
  26. /package/dist/specs/{geodb → geography}/subregions.yaml +0 -0
  27. /package/dist/specs/pdf/{pdf-split-pages.yaml → split-pdf.yaml} +0 -0
  28. /package/dist/specs/{phone-validation → phone-number-validation}/bulk-phone-number-validation.yaml +0 -0
  29. /package/dist/specs/{phone-validation/phone-number-validation.yaml → phone-number-validation/phone-validation.yaml} +0 -0
  30. /package/dist/specs/{other → weather}/astronomy-data.yaml +0 -0
  31. /package/specs/{general → billing}/usage-credits.json +0 -0
  32. /package/specs/{geodb → geography}/administrative-units-details.json +0 -0
  33. /package/specs/{geodb → geography}/administrative-units-levels.json +0 -0
  34. /package/specs/{geodb → geography}/administrative-units.json +0 -0
  35. /package/specs/{geodb → geography}/cities.json +0 -0
  36. /package/specs/{geodb → geography}/countries-details.json +0 -0
  37. /package/specs/{geodb → geography}/countries.json +0 -0
  38. /package/specs/{geodb → geography}/flags-supported.json +0 -0
  39. /package/specs/{geodb → geography}/flags.json +0 -0
  40. /package/specs/{geodb → geography}/regions.json +0 -0
  41. /package/specs/{geodb → geography}/subregions.json +0 -0
  42. /package/specs/pdf/{pdf-split-pages.json → split-pdf.json} +0 -0
  43. /package/specs/{phone-validation → phone-number-validation}/bulk-phone-number-validation.json +0 -0
  44. /package/specs/{phone-validation/phone-number-validation.json → phone-number-validation/phone-validation.json} +0 -0
  45. /package/specs/{other → weather}/astronomy-data.json +0 -0
@@ -2,7 +2,7 @@ openapi: 3.1.1
2
2
  info:
3
3
  title: Bulk Email Validation API - Validate and Verify Emails in Bulk
4
4
  version: 1.0.0
5
- 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.
5
+ 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.
6
6
  contact:
7
7
  name: APIFreaks Support
8
8
  url: https://apifreaks.com/contact
@@ -16,7 +16,7 @@ paths:
16
16
  tags:
17
17
  - Email Validation APIs
18
18
  summary: Validate multiple email addresses
19
- description: Validates a bulk of email addresses and returns result for each. Maximum `100` email addresses per request.
19
+ description: Validates a bulk of email addresses and returns result for each. Maximum `10` email addresses per request.
20
20
  parameters:
21
21
  - name: format
22
22
  in: query
@@ -45,7 +45,7 @@ paths:
45
45
  bulkEmailsValidated:
46
46
  summary: Mix of a valid and a syntactically invalid email
47
47
  value:
48
- emailValidationResponses:
48
+ emailResponse:
49
49
  - success: true
50
50
  email: abc.def@gmail.com
51
51
  validEmail: valid
@@ -61,7 +61,7 @@ paths:
61
61
  role: false
62
62
  fullMailBox: false
63
63
  dns:
64
- mxRecords:
64
+ mxRecord:
65
65
  - gmail-smtp-in.l.google.com.
66
66
  - alt1.gmail-smtp-in.l.google.com.
67
67
  - alt2.gmail-smtp-in.l.google.com.
@@ -77,6 +77,10 @@ paths:
77
77
  headers:
78
78
  X-AF-Credits-Cost:
79
79
  $ref: '#/components/headers/X-AF-Credits-Cost'
80
+ X-Concurrent-Threads:
81
+ $ref: '#/components/headers/X-Concurrent-Threads'
82
+ X-Concurrent-Threads-Active:
83
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
80
84
  '400':
81
85
  description: Bad Request – Invalid request body
82
86
  content:
@@ -95,6 +99,23 @@ paths:
95
99
  headers:
96
100
  X-AF-Credits-Cost:
97
101
  $ref: '#/components/headers/X-AF-Credits-Cost'
102
+ '404':
103
+ description: Not Found – The requested resource could not be found
104
+ content:
105
+ application/json:
106
+ schema:
107
+ $ref: '#/components/schemas/ErrorResponse'
108
+ examples:
109
+ Resource Not Found:
110
+ value:
111
+ timestamp: '2026-09-02T11:57:55.592Z'
112
+ path: /v1.0/email-validation/bulkx
113
+ status: 404
114
+ error: Resource Not Found
115
+ message: The requested resource could not be found. Please verify the URL and try again.
116
+ headers:
117
+ X-AF-Credits-Cost:
118
+ $ref: '#/components/headers/X-AF-Credits-Cost'
98
119
  '408':
99
120
  description: Request Timeout
100
121
  content:
@@ -112,6 +133,23 @@ paths:
112
133
  headers:
113
134
  X-AF-Credits-Cost:
114
135
  $ref: '#/components/headers/X-AF-Credits-Cost'
136
+ '413':
137
+ description: Payload Too Large – emailData exceeds the maximum of 10 entries per request
138
+ content:
139
+ application/json:
140
+ schema:
141
+ $ref: '#/components/schemas/ErrorResponse'
142
+ examples:
143
+ Payload Too Large:
144
+ value:
145
+ timestamp: '2026-09-02T11:57:34.223Z'
146
+ path: /v2/email-validation/bulk
147
+ status: 413
148
+ error: Payload too large Exception
149
+ message: Maximum request body size limit exceeded
150
+ headers:
151
+ X-AF-Credits-Cost:
152
+ $ref: '#/components/headers/X-AF-Credits-Cost'
115
153
  '429':
116
154
  description: Rate Limit Exceeded
117
155
  content:
@@ -147,9 +185,9 @@ components:
147
185
  type: object
148
186
  description: Wrapper containing the per-email results array.
149
187
  required:
150
- - emailValidationResponses
188
+ - emailResponse
151
189
  properties:
152
- emailValidationResponses:
190
+ emailResponse:
153
191
  type: array
154
192
  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.
155
193
  items:
@@ -184,7 +222,8 @@ components:
184
222
  - INVALID_EMAIL
185
223
  - unknown
186
224
  - risky
187
- 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.'
225
+ - app_server_blocked
226
+ 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).'
188
227
  validSyntax:
189
228
  type: boolean
190
229
  description: Validates email address format compliance with RFC 5322 standards.
@@ -241,14 +280,14 @@ components:
241
280
  DnsObject:
242
281
  type: object
243
282
  required:
244
- - mxRecords
283
+ - mxRecord
245
284
  properties:
246
- mxRecords:
285
+ mxRecord:
247
286
  type: array
248
287
  items:
249
288
  type: string
250
289
  description: Collection of MX (Mail Exchange) hostname records from DNS queries.
251
- aRecords:
290
+ aRecord:
252
291
  type: array
253
292
  items:
254
293
  type: string
@@ -367,8 +406,8 @@ components:
367
406
  properties:
368
407
  emailData:
369
408
  type: array
370
- description: Array of email objects to validate. Maximum 100 per request.
371
- maxItems: 100
409
+ description: Array of email objects to validate. Maximum 10 per request.
410
+ maxItems: 10
372
411
  items:
373
412
  $ref: '#/components/schemas/BulkEmailRequestItem'
374
413
  BulkEmailRequestItem:
@@ -415,6 +454,14 @@ components:
415
454
  description: Specifies the number of credits consumed by the current request.
416
455
  schema:
417
456
  type: integer
457
+ X-Concurrent-Threads:
458
+ description: Specifies the maximum number of concurrent requests allowed.
459
+ schema:
460
+ type: integer
461
+ X-Concurrent-Threads-Active:
462
+ description: Indicates the number of active concurrent requests being processed.
463
+ schema:
464
+ type: integer
418
465
  security:
419
466
  - ApiKeyAuthHeader: []
420
467
  - ApiKeyAuthQuery: []
@@ -2,7 +2,7 @@ openapi: 3.1.1
2
2
  info:
3
3
  title: Email Checker API - Real-Time Validation, Deliverability & Risk Signals
4
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.
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/app_server_blocked status.
6
6
  contact:
7
7
  name: APIFreaks Support
8
8
  url: https://apifreaks.com/contact
@@ -59,7 +59,7 @@ paths:
59
59
  role: false
60
60
  fullMailBox: false
61
61
  dns:
62
- mxRecords:
62
+ mxRecord:
63
63
  - gmail-smtp-in.l.google.com.
64
64
  - alt1.gmail-smtp-in.l.google.com.
65
65
  - alt2.gmail-smtp-in.l.google.com.
@@ -110,7 +110,7 @@ paths:
110
110
  role: false
111
111
  fullMailBox: false
112
112
  dns:
113
- mxRecords:
113
+ mxRecord:
114
114
  - gmail-smtp-in.l.google.com.
115
115
  - alt1.gmail-smtp-in.l.google.com.
116
116
  - alt2.gmail-smtp-in.l.google.com.
@@ -145,6 +145,26 @@ paths:
145
145
  is_bot: false
146
146
  is_cloud_provider: true
147
147
  cloud_provider: Google LLC
148
+ appServerBlocked:
149
+ summary: Valid syntax, but the recipient mail server blocked the verification attempt
150
+ value:
151
+ success: true
152
+ email: randomuser98765zzz@gmx.com
153
+ validEmail: app_server_blocked
154
+ validSyntax: true
155
+ reason: We are unable to determine the validity of email at the moment. Please try later.
156
+ domain:
157
+ name: gmx.com
158
+ disposable: false
159
+ spam: false
160
+ free: true
161
+ validDomain: true
162
+ catchAll: false
163
+ account:
164
+ role: false
165
+ dns:
166
+ mxRecord:
167
+ - mx00.gmx.net.
148
168
  headers:
149
169
  X-AF-Credits-Cost:
150
170
  $ref: '#/components/headers/X-AF-Credits-Cost'
@@ -162,10 +182,10 @@ paths:
162
182
  missingEmail:
163
183
  summary: email field missing from request body
164
184
  value:
165
- timestamp: '2026-07-27T12:51:23.593986185Z'
166
- path: /v2.0/email-validation/single
185
+ timestamp: '2026-09-02T11:56:23.462Z'
186
+ path: /v2/email-validation/single
167
187
  status: 400
168
- error: External API Error
188
+ error: Missing or Invalid Parameters
169
189
  message: Please pass valid value for 'email' in body.
170
190
  headers:
171
191
  X-AF-Credits-Cost:
@@ -174,6 +194,27 @@ paths:
174
194
  $ref: '#/components/headers/X-Concurrent-Threads'
175
195
  X-Concurrent-Threads-Active:
176
196
  $ref: '#/components/headers/X-Concurrent-Threads-Active'
197
+ '404':
198
+ description: Not Found – The requested resource could not be found
199
+ content:
200
+ application/json:
201
+ schema:
202
+ $ref: '#/components/schemas/ErrorResponse'
203
+ examples:
204
+ Resource Not Found:
205
+ value:
206
+ timestamp: '2026-09-02T11:56:23.937Z'
207
+ path: /v1.0/email-validation/singlex
208
+ status: 404
209
+ error: Resource Not Found
210
+ message: The requested resource could not be found. Please verify the URL and try again.
211
+ headers:
212
+ X-AF-Credits-Cost:
213
+ $ref: '#/components/headers/X-AF-Credits-Cost'
214
+ X-Concurrent-Threads:
215
+ $ref: '#/components/headers/X-Concurrent-Threads'
216
+ X-Concurrent-Threads-Active:
217
+ $ref: '#/components/headers/X-Concurrent-Threads-Active'
177
218
  '408':
178
219
  description: Request Timeout
179
220
  content:
@@ -260,7 +301,8 @@ components:
260
301
  - INVALID_EMAIL
261
302
  - unknown
262
303
  - risky
263
- 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.'
304
+ - app_server_blocked
305
+ 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).'
264
306
  validSyntax:
265
307
  type: boolean
266
308
  description: Validates email address format compliance with RFC 5322 standards.
@@ -317,14 +359,14 @@ components:
317
359
  DnsObject:
318
360
  type: object
319
361
  required:
320
- - mxRecords
362
+ - mxRecord
321
363
  properties:
322
- mxRecords:
364
+ mxRecord:
323
365
  type: array
324
366
  items:
325
367
  type: string
326
368
  description: Collection of MX (Mail Exchange) hostname records from DNS queries.
327
- aRecords:
369
+ aRecord:
328
370
  type: array
329
371
  items:
330
372
  type: string
@@ -158,8 +158,8 @@ components:
158
158
  ApiKeyAuthHeader:
159
159
  type: apiKey
160
160
  in: header
161
- name: X-apikey
162
- description: Pass your API key via the X-apikey request header.
161
+ name: X-apiKey
162
+ description: Pass your API key via the X-apiKey request header.
163
163
  ApiKeyAuthQuery:
164
164
  type: apiKey
165
165
  in: query
@@ -285,8 +285,8 @@ components:
285
285
  ApiKeyAuthHeader:
286
286
  type: apiKey
287
287
  in: header
288
- name: X-apikey
289
- description: Pass your API key via the X-apikey request header.
288
+ name: X-apiKey
289
+ description: Pass your API key via the X-apiKey request header.
290
290
  ApiKeyAuthQuery:
291
291
  type: apiKey
292
292
  in: query
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apifreaks/openapi-specs",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Public OpenAPI 3.1 specifications for all APIFreaks API products.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,259 @@
1
+ # APIFreaks OpenAPI specifications
2
+
3
+ OpenAPI 3.1 documents for [APIFreaks](https://apifreaks.com) API products. Each file is a complete, standalone spec: paths, parameters, request/response schemas, examples, and authentication.
4
+
5
+ This folder is the source of truth. JSON only. YAML is produced when the npm package is built, not checked in here.
6
+
7
+ To install the specs as a package (`getSpec`, `SpecSlug`, JSON imports), see the [repository README](../README.md).
8
+
9
+ ## Open a spec
10
+
11
+ Pick a file, then open it in any OpenAPI-aware tool.
12
+
13
+ **Swagger Editor:** import this raw GitHub URL (or swap in another path):
14
+
15
+ ```
16
+ https://raw.githubusercontent.com/api-freaks/af-openapi-specs/main/specs/ip-intelligence/ip-locator.json
17
+ ```
18
+
19
+ **Postman / Insomnia:** import the JSON file as an OpenAPI definition.
20
+
21
+ **Code generation:** point `openapi-generator`, `orval`, `openapi-typescript`, or similar at the same URL:
22
+
23
+ ```bash
24
+ npx openapi-typescript https://raw.githubusercontent.com/api-freaks/af-openapi-specs/main/specs/ip-intelligence/ip-locator.json -o ip-locator.ts
25
+ ```
26
+
27
+ The slug is the filename without `.json`. It is the identifier the npm package uses (`getSpec("ip-locator")`).
28
+
29
+ ## Authentication
30
+
31
+ Every spec uses an API key from [apifreaks.com](https://apifreaks.com). Either form is valid:
32
+
33
+ | Location | Name | Example |
34
+ | -------- | ---------- | -------------------- |
35
+ | Header | `X-apiKey` | `X-apiKey: YOUR_KEY` |
36
+ | Query | `apiKey` | `?apiKey=YOUR_KEY` |
37
+
38
+ Successful responses include `X-AF-Credits-Cost`, the credits consumed by that request. Remaining balances: [usage-credits.json](billing/usage-credits.json).
39
+
40
+ ## Servers
41
+
42
+ Each document declares its base URL under `servers`. Most products use `https://api.apifreaks.com/v1.0`.
43
+
44
+ These use `https://api.apifreaks.com/v2.0`: IP geolocation, bulk IP geolocation, timezone lookup, domain WHOIS, bulk WHOIS, and astronomy.
45
+
46
+ Weather products (except astronomy) use `https://api.apifreaks.com/v1.0/weather`.
47
+
48
+ ## Catalog
49
+
50
+ Grouped by folder. Slug is the stable id; the name links to the file.
51
+
52
+ ### IP intelligence
53
+
54
+ | Slug | Spec |
55
+ | ----------------------------- | ------------------------------------------------------------------------------- |
56
+ | `ip-locator` | [IP Geolocation](ip-intelligence/ip-locator.json) |
57
+ | `bulk-ip-lookup` | [Bulk IP Geolocation](ip-intelligence/bulk-ip-lookup.json) |
58
+ | `ip-threat-intelligence` | [IP Threat Intelligence](ip-intelligence/ip-threat-intelligence.json) |
59
+ | `bulk-ip-threat-intelligence` | [Bulk IP Threat Intelligence](ip-intelligence/bulk-ip-threat-intelligence.json) |
60
+
61
+ ### Geocoding
62
+
63
+ | Slug | Spec |
64
+ | ------------------- | ----------------------------------------------------- |
65
+ | `forward-geocoding` | [Forward Geocoding](geocoding/forward-geocoding.json) |
66
+ | `reverse-geocoding` | [Reverse Geocoding](geocoding/reverse-geocoding.json) |
67
+
68
+ ### WHOIS
69
+
70
+ | Slug | Spec |
71
+ | ----------------------------- | ------------------------------------------------------- |
72
+ | `whois-domain-lookup` | [Domain WHOIS](whois/whois-domain-lookup.json) |
73
+ | `whois-ip-lookup` | [IP WHOIS](whois/whois-ip-lookup.json) |
74
+ | `asn-lookup` | [ASN Lookup](whois/asn-lookup.json) |
75
+ | `domain-whois-history-lookup` | [WHOIS History](whois/domain-whois-history-lookup.json) |
76
+ | `reverse-whois` | [Reverse WHOIS](whois/reverse-whois.json) |
77
+ | `bulk-whois-lookup` | [Bulk WHOIS](whois/bulk-whois-lookup.json) |
78
+
79
+ ### DNS
80
+
81
+ | Slug | Spec |
82
+ | -------------------- | ------------------------------------------------- |
83
+ | `dns-lookup` | [DNS Lookup](dns/dns-lookup.json) |
84
+ | `dns-history-lookup` | [DNS History](dns/dns-history-lookup.json) |
85
+ | `reverse-dns-lookup` | [Reverse DNS Lookup](dns/reverse-dns-lookup.json) |
86
+ | `bulk-dns-lookup` | [Bulk DNS Lookup](dns/bulk-dns-lookup.json) |
87
+
88
+ ### Scraper
89
+
90
+ | Slug | Spec |
91
+ | ------------- | --------------------------------------- |
92
+ | `web-scraper` | [Web Scraper](scraper/web-scraper.json) |
93
+
94
+ ### Email validation
95
+
96
+ | Slug | Spec |
97
+ | ----------------------- | -------------------------------------------------------------------- |
98
+ | `email-checker` | [Email Checker](email-validation/email-checker.json) |
99
+ | `bulk-email-validation` | [Bulk Email Validation](email-validation/bulk-email-validation.json) |
100
+
101
+ ### Phone validation
102
+
103
+ | Slug | Spec |
104
+ | ------------------------------ | ---------------------------------------------------------------------------------- |
105
+ | `phone-validation` | [Phone Validation](phone-number-validation/phone-validation.json) |
106
+ | `bulk-phone-number-validation` | [Bulk Phone Validation](phone-number-validation/bulk-phone-number-validation.json) |
107
+
108
+ ### SSL
109
+
110
+ | Slug | Spec |
111
+ | ------------------------------ | --------------------------------------------------------------------- |
112
+ | `ssl-certificate-lookup` | [SSL Certificate Lookup](ssl/ssl-certificate-lookup.json) |
113
+ | `ssl-certificate-chain-lookup` | [SSL Certificate Chain Lookup](ssl/ssl-certificate-chain-lookup.json) |
114
+
115
+ ### Domain
116
+
117
+ | Slug | Spec |
118
+ | -------------------------------- | ---------------------------------------------------------------------------- |
119
+ | `domain-search` | [Domain Availability](domain/domain-search.json) |
120
+ | `domain-search-with-suggestions` | [Domain Search with Suggestions](domain/domain-search-with-suggestions.json) |
121
+ | `subdomain-lookup` | [Subdomain Finder](domain/subdomain-lookup.json) |
122
+ | `bulk-domain-checker` | [Bulk Domain Checker](domain/bulk-domain-checker.json) |
123
+
124
+ ### Screenshot
125
+
126
+ | Slug | Spec |
127
+ | -------------------- | -------------------------------------------------------- |
128
+ | `website-screenshot` | [Website Screenshot](screenshot/website-screenshot.json) |
129
+ | `bulk-screenshot` | [Bulk Screenshot](screenshot/bulk-screenshot.json) |
130
+
131
+ ### PDF
132
+
133
+ | Slug | Spec |
134
+ | ---------------------------- | ------------------------------------------------------------- |
135
+ | `merge-pdf` | [Merge](pdf/merge-pdf.json) |
136
+ | `split-pdf` | [Split](pdf/split-pdf.json) |
137
+ | `pdf-extract-pages` | [Extract Pages](pdf/pdf-extract-pages.json) |
138
+ | `delete-pdf-page` | [Remove Pages](pdf/delete-pdf-page.json) |
139
+ | `pdf-to-image` | [Convert to Image](pdf/pdf-to-image.json) |
140
+ | `pdf-generator` | [Generate from Template](pdf/pdf-generator.json) |
141
+ | `pdf-generator-bulk` | [Bulk Generate from CSV](pdf/pdf-generator-bulk.json) |
142
+ | `pdf-compress` | [Compress](pdf/pdf-compress.json) |
143
+ | `rotate-pdf-pages` | [Rotate](pdf/rotate-pdf-pages.json) |
144
+ | `pdf-encrypt` | [Encrypt](pdf/pdf-encrypt.json) |
145
+ | `pdf-restrict` | [Restrict](pdf/pdf-restrict.json) |
146
+ | `pdf-decrypt` | [Decrypt](pdf/pdf-decrypt.json) |
147
+ | `pdf-unrestrict` | [Unrestrict](pdf/pdf-unrestrict.json) |
148
+ | `linearize-pdf` | [Linearize](pdf/linearize-pdf.json) |
149
+ | `pdf-task-status` | [Task Status](pdf/pdf-task-status.json) |
150
+ | `pdf-file-status` | [File Status](pdf/pdf-file-status.json) |
151
+ | `pdf-files` | [List Files](pdf/pdf-files.json) |
152
+ | `pdf-file` | [Delete File](pdf/pdf-file.json) |
153
+ | `pdf-resource-upload` | [Upload Resource](pdf/pdf-resource-upload.json) |
154
+ | `pdf-resource-upload-binary` | [Upload Binary Resource](pdf/pdf-resource-upload-binary.json) |
155
+ | `pdf-resource-download` | [Download Resource](pdf/pdf-resource-download.json) |
156
+
157
+ ### Currency
158
+
159
+ | Slug | Spec |
160
+ | ---------------------------------- | ---------------------------------------------------------------------------- |
161
+ | `currency-rate` | [Exchange Rates](currency/currency-rate.json) |
162
+ | `historical-currency-rate` | [Historical Exchange Rates](currency/historical-currency-rate.json) |
163
+ | `currency-converter` | [Currency Converter](currency/currency-converter.json) |
164
+ | `historical-currency-converter` | [Historical Currency Converter](currency/historical-currency-converter.json) |
165
+ | `currency-time-series` | [Currency Time Series](currency/currency-time-series.json) |
166
+ | `currency-fluctuation` | [Currency Fluctuation](currency/currency-fluctuation.json) |
167
+ | `geolocalized-currency-conversion` | [IP-to-Currency Conversion](currency/geolocalized-currency-conversion.json) |
168
+ | `currency-supported` | [Supported Currencies](currency/currency-supported.json) |
169
+ | `currency-symbols` | [Currency Symbols](currency/currency-symbols.json) |
170
+ | `currency-historical-data-limit` | [Historical Data Limits](currency/currency-historical-data-limit.json) |
171
+
172
+ ### Commodity
173
+
174
+ | Slug | Spec |
175
+ | ----------------------------- | ------------------------------------------------------------------------- |
176
+ | `commodity-prices` | [Live Commodity Prices](commodity/commodity-prices.json) |
177
+ | `historical-commodity-prices` | [Historical Commodity Prices](commodity/historical-commodity-prices.json) |
178
+ | `commodity-fluctuation` | [Commodity Fluctuation](commodity/commodity-fluctuation.json) |
179
+ | `commodity-time-series` | [Commodity Time Series](commodity/commodity-time-series.json) |
180
+ | `commodity-symbols` | [Commodity Symbols](commodity/commodity-symbols.json) |
181
+
182
+ ### Financial
183
+
184
+ | Slug | Spec |
185
+ | ------------------------------------ | ------------------------------------------------------------------------ |
186
+ | `vat-rates-country` | [VAT Rates by Country](financial/vat-rates-country.json) |
187
+ | `bulk-vat-rates-country` | [Bulk VAT Rates by Country](financial/bulk-vat-rates-country.json) |
188
+ | `vat-rates-by-ip` | [VAT Rates by IP](financial/vat-rates-by-ip.json) |
189
+ | `vat-number-validation` | [VAT Number Validation](financial/vat-number-validation.json) |
190
+ | `iban-validation` | [IBAN Validation](financial/iban-validation.json) |
191
+ | `swift-code-lookup` | [SWIFT/BIC Lookup](financial/swift-code-lookup.json) |
192
+ | `swift-code-finder` | [SWIFT/BIC Finder](financial/swift-code-finder.json) |
193
+ | `financial-apis-supported-countries` | [Supported Countries](financial/financial-apis-supported-countries.json) |
194
+
195
+ ### ZIP code
196
+
197
+ | Slug | Spec |
198
+ | ------------------------- | ----------------------------------------------------------- |
199
+ | `zip-code-api` | [ZIP / Postal Code Lookup](zip-code/zip-code-api.json) |
200
+ | `zip-codes-radius-search` | [ZIP Radius Search](zip-code/zip-codes-radius-search.json) |
201
+ | `zip-code-distance` | [ZIP Distance](zip-code/zip-code-distance.json) |
202
+ | `zip-codes-by-city` | [ZIP Codes by City](zip-code/zip-codes-by-city.json) |
203
+ | `bulk-zip-code-lookup` | [Bulk ZIP Lookup](zip-code/bulk-zip-code-lookup.json) |
204
+ | `zip-code-distance-match` | [ZIP Distance Match](zip-code/zip-code-distance-match.json) |
205
+ | `zip-codes-by-region` | [ZIP Codes by Region](zip-code/zip-codes-by-region.json) |
206
+
207
+ ### Weather
208
+
209
+ | Slug | Spec |
210
+ | --------------------- | ------------------------------------------------------- |
211
+ | `live-weather` | [Live Weather](weather/live-weather.json) |
212
+ | `weather-forecast` | [Weather Forecast](weather/weather-forecast.json) |
213
+ | `historical-weather` | [Historical Weather](weather/historical-weather.json) |
214
+ | `time-series-weather` | [Time Series Weather](weather/time-series-weather.json) |
215
+ | `air-quality` | [Air Quality](weather/air-quality.json) |
216
+ | `marine-weather` | [Marine Weather](weather/marine-weather.json) |
217
+ | `flood-forecast` | [Flood Forecast](weather/flood-forecast.json) |
218
+ | `bulk-live-weather` | [Bulk Live Weather](weather/bulk-live-weather.json) |
219
+ | `astronomy-data` | [Astronomy](weather/astronomy-data.json) |
220
+
221
+ ### Geography
222
+
223
+ | Slug | Spec |
224
+ | ------------------------------ | ----------------------------------------------------------------- |
225
+ | `administrative-units-levels` | [Admin Levels](geography/administrative-units-levels.json) |
226
+ | `administrative-units` | [Administrative Units](geography/administrative-units.json) |
227
+ | `administrative-units-details` | [Admin Unit Details](geography/administrative-units-details.json) |
228
+ | `countries` | [Countries](geography/countries.json) |
229
+ | `countries-details` | [Country Details](geography/countries-details.json) |
230
+ | `cities` | [Cities](geography/cities.json) |
231
+ | `regions` | [Regions](geography/regions.json) |
232
+ | `subregions` | [Subregions](geography/subregions.json) |
233
+ | `flags-supported` | [Supported Flags](geography/flags-supported.json) |
234
+ | `flags` | [Flags](geography/flags.json) |
235
+
236
+ ### Timezone
237
+
238
+ | Slug | Spec |
239
+ | -------------------- | ------------------------------------------------------ |
240
+ | `timezone-lookup` | [Timezone Lookup](timezone/timezone-lookup.json) |
241
+ | `timezone-converter` | [Timezone Converter](timezone/timezone-converter.json) |
242
+
243
+ ### User agent
244
+
245
+ | Slug | Spec |
246
+ | ------------------------ | ---------------------------------------------------------------- |
247
+ | `user-agent-parser` | [User Agent Parser](user-agent/user-agent-parser.json) |
248
+ | `bulk-user-agent-parser` | [Bulk User Agent Parser](user-agent/bulk-user-agent-parser.json) |
249
+
250
+ ### Billing
251
+
252
+ | Slug | Spec |
253
+ | --------------- | ------------------------------------------- |
254
+ | `usage-credits` | [Credits Usage](billing/usage-credits.json) |
255
+
256
+ ## Docs and support
257
+
258
+ - Product docs: [apifreaks.com](https://apifreaks.com)
259
+ - Contact: [apifreaks.com/contact](https://apifreaks.com/contact) · support@apifreaks.com