@nordsym/apiclaw 1.2.2 → 1.2.3

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 (77) hide show
  1. package/AGENTS.md +50 -33
  2. package/README.md +22 -12
  3. package/SOUL.md +60 -19
  4. package/STATUS.md +91 -169
  5. package/convex/_generated/api.d.ts +6 -0
  6. package/convex/directCall.ts +598 -0
  7. package/convex/providers.ts +341 -26
  8. package/convex/schema.ts +87 -0
  9. package/convex/usage.ts +260 -0
  10. package/convex/waitlist.ts +55 -0
  11. package/data/combined-02-26.json +22102 -0
  12. package/data/night-expansion-02-26-06-batch2.json +1898 -0
  13. package/data/night-expansion-02-26-06-batch3.json +1410 -0
  14. package/data/night-expansion-02-26-06.json +3146 -0
  15. package/data/night-expansion-02-26-full.json +9726 -0
  16. package/data/night-expansion-02-26-v2.json +330 -0
  17. package/data/night-expansion-02-26.json +171 -0
  18. package/dist/crypto.d.ts +7 -0
  19. package/dist/crypto.d.ts.map +1 -0
  20. package/dist/crypto.js +67 -0
  21. package/dist/crypto.js.map +1 -0
  22. package/dist/execute-dynamic.d.ts +116 -0
  23. package/dist/execute-dynamic.d.ts.map +1 -0
  24. package/dist/execute-dynamic.js +456 -0
  25. package/dist/execute-dynamic.js.map +1 -0
  26. package/dist/execute.d.ts +2 -1
  27. package/dist/execute.d.ts.map +1 -1
  28. package/dist/execute.js +35 -5
  29. package/dist/execute.js.map +1 -1
  30. package/dist/index.js +33 -4
  31. package/dist/index.js.map +1 -1
  32. package/dist/registry/apis.json +2081 -3
  33. package/docs/PRD-customer-key-passthrough.md +184 -0
  34. package/landing/public/badges/available-on-apiclaw.svg +14 -0
  35. package/landing/scripts/generate-stats.js +75 -4
  36. package/landing/src/app/admin/page.tsx +1 -1
  37. package/landing/src/app/api/auth/magic-link/route.ts +1 -1
  38. package/landing/src/app/api/auth/session/route.ts +1 -1
  39. package/landing/src/app/api/auth/verify/route.ts +1 -1
  40. package/landing/src/app/api/og/route.tsx +5 -3
  41. package/landing/src/app/docs/page.tsx +5 -4
  42. package/landing/src/app/earn/page.tsx +14 -11
  43. package/landing/src/app/globals.css +16 -15
  44. package/landing/src/app/layout.tsx +2 -2
  45. package/landing/src/app/page.tsx +425 -254
  46. package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +600 -0
  47. package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +583 -0
  48. package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +301 -0
  49. package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +659 -0
  50. package/landing/src/app/providers/dashboard/[apiId]/page.tsx +381 -0
  51. package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +418 -0
  52. package/landing/src/app/providers/dashboard/layout.tsx +292 -0
  53. package/landing/src/app/providers/dashboard/page.tsx +353 -290
  54. package/landing/src/app/providers/register/page.tsx +87 -10
  55. package/landing/src/components/AiClientDropdown.tsx +85 -0
  56. package/landing/src/components/ConfigHelperModal.tsx +113 -0
  57. package/landing/src/components/HeroTabs.tsx +187 -0
  58. package/landing/src/components/ShareIntegrationModal.tsx +198 -0
  59. package/landing/src/hooks/useDashboardData.ts +53 -1
  60. package/landing/src/lib/apis.json +46554 -174
  61. package/landing/src/lib/convex-client.ts +22 -3
  62. package/landing/src/lib/stats.json +4 -4
  63. package/landing/tsconfig.tsbuildinfo +1 -1
  64. package/night-expansion-02-26-06-batch2.py +368 -0
  65. package/night-expansion-02-26-06-batch3.py +299 -0
  66. package/night-expansion-02-26-06.py +756 -0
  67. package/package.json +1 -1
  68. package/scripts/bulk-add-public-apis-v2.py +418 -0
  69. package/scripts/night-expansion-02-26-v2.py +296 -0
  70. package/scripts/night-expansion-02-26.py +890 -0
  71. package/scripts/seed-complete-api.js +181 -0
  72. package/scripts/seed-demo-api.sh +44 -0
  73. package/src/crypto.ts +75 -0
  74. package/src/execute-dynamic.ts +589 -0
  75. package/src/execute.ts +41 -5
  76. package/src/index.ts +38 -4
  77. package/src/registry/apis.json +2081 -3
@@ -0,0 +1,368 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ APIClaw Night Expansion 2026-02-26 06:00 - Batch 2
4
+ Target: 600+ more APIs to reach 1000+ for this run
5
+ """
6
+
7
+ import json
8
+ import re
9
+ from pathlib import Path
10
+
11
+ # Load existing to avoid duplicates
12
+ combined_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/combined-02-26.json")
13
+ existing_ids = set()
14
+ if combined_file.exists():
15
+ with open(combined_file) as f:
16
+ for api in json.load(f):
17
+ existing_ids.add(api.get('id', ''))
18
+
19
+ print(f"Loaded {len(existing_ids)} existing API IDs")
20
+
21
+ def make_id(name):
22
+ slug = re.sub(r'[^a-z0-9]+', '-', name.lower()).strip('-')
23
+ return slug[:50]
24
+
25
+ # MASSIVE batch of additional APIs
26
+ batch2_apis = [
27
+ # Healthcare & Medical (expanded)
28
+ {"name": "OpenMRS", "desc": "Open source medical records", "cat": "Healthcare", "url": "https://wiki.openmrs.org/display/docs/REST+Web+Services+API+For+Clients", "auth": "apiKey"},
29
+ {"name": "HAPI FHIR", "desc": "Healthcare interoperability", "cat": "Healthcare", "url": "https://hapifhir.io/", "auth": "None"},
30
+ {"name": "DrugBank", "desc": "Drug information database", "cat": "Healthcare", "url": "https://docs.drugbank.com/v1/", "auth": "apiKey"},
31
+ {"name": "RxNorm", "desc": "Drug naming standards", "cat": "Healthcare", "url": "https://lhncbc.nlm.nih.gov/RxNav/APIs/", "auth": "None"},
32
+ {"name": "OpenFDA Drug", "desc": "FDA drug data", "cat": "Healthcare", "url": "https://open.fda.gov/apis/drug/", "auth": "None"},
33
+ {"name": "ClinicalTrials.gov", "desc": "Clinical trial data", "cat": "Healthcare", "url": "https://clinicaltrials.gov/api/", "auth": "None"},
34
+ {"name": "Healthcare.gov", "desc": "US healthcare data", "cat": "Healthcare", "url": "https://www.healthcare.gov/developers/", "auth": "None"},
35
+ {"name": "BioDigital", "desc": "3D human anatomy", "cat": "Healthcare", "url": "https://developer.biodigital.com/", "auth": "apiKey"},
36
+ {"name": "infermedica", "desc": "Medical diagnosis AI", "cat": "Healthcare", "url": "https://developer.infermedica.com/docs/", "auth": "apiKey"},
37
+ {"name": "MedlinePlus", "desc": "Health information", "cat": "Healthcare", "url": "https://medlineplus.gov/webservices.html", "auth": "None"},
38
+
39
+ # Logistics & Supply Chain
40
+ {"name": "Shippo", "desc": "Multi-carrier shipping", "cat": "Shipping", "url": "https://goshippo.com/docs/", "auth": "apiKey"},
41
+ {"name": "EasyPost", "desc": "Shipping API", "cat": "Shipping", "url": "https://www.easypost.com/docs/api", "auth": "apiKey"},
42
+ {"name": "Shipstation", "desc": "Order management", "cat": "Shipping", "url": "https://www.shipstation.com/docs/api/", "auth": "apiKey"},
43
+ {"name": "PostNord", "desc": "Nordic postal service", "cat": "Shipping", "url": "https://developer.postnord.com/", "auth": "apiKey"},
44
+ {"name": "Deutsche Post", "desc": "German postal service", "cat": "Shipping", "url": "https://developer.dhl.com/", "auth": "apiKey"},
45
+ {"name": "Royal Mail", "desc": "UK postal service", "cat": "Shipping", "url": "https://developer.royalmail.com/", "auth": "apiKey"},
46
+ {"name": "Australia Post", "desc": "Australian postal", "cat": "Shipping", "url": "https://developers.auspost.com.au/", "auth": "apiKey"},
47
+ {"name": "USPS", "desc": "US Postal Service", "cat": "Shipping", "url": "https://www.usps.com/business/web-tools-apis/", "auth": "apiKey"},
48
+ {"name": "Pitney Bowes", "desc": "Shipping and mailing", "cat": "Shipping", "url": "https://shipping360.pitneybowes.com/api/", "auth": "apiKey"},
49
+ {"name": "Freightos", "desc": "Freight rates", "cat": "Shipping", "url": "https://www.freightos.com/freight-api/", "auth": "apiKey"},
50
+
51
+ # HR & Recruiting
52
+ {"name": "Greenhouse", "desc": "Recruiting software", "cat": "HR", "url": "https://developers.greenhouse.io/", "auth": "apiKey"},
53
+ {"name": "Lever", "desc": "Recruiting platform", "cat": "HR", "url": "https://hire.lever.co/developer/documentation", "auth": "apiKey"},
54
+ {"name": "Workable", "desc": "Recruiting software", "cat": "HR", "url": "https://workable.readme.io/reference", "auth": "apiKey"},
55
+ {"name": "BambooHR", "desc": "HR software", "cat": "HR", "url": "https://documentation.bamboohr.com/reference", "auth": "apiKey"},
56
+ {"name": "Gusto", "desc": "Payroll and benefits", "cat": "HR", "url": "https://docs.gusto.com/", "auth": "OAuth"},
57
+ {"name": "Rippling", "desc": "HR platform", "cat": "HR", "url": "https://developer.rippling.com/", "auth": "OAuth"},
58
+ {"name": "Personio", "desc": "HR management", "cat": "HR", "url": "https://developer.personio.de/reference", "auth": "apiKey"},
59
+ {"name": "HiBob", "desc": "HR platform", "cat": "HR", "url": "https://apidocs.hibob.com/", "auth": "apiKey"},
60
+ {"name": "Namely", "desc": "HR software", "cat": "HR", "url": "https://developers.namely.com/", "auth": "OAuth"},
61
+ {"name": "Zenefits", "desc": "HR platform", "cat": "HR", "url": "https://developers.zenefits.com/", "auth": "OAuth"},
62
+
63
+ # Legal & Compliance
64
+ {"name": "DocuSign", "desc": "Electronic signatures", "cat": "Legal", "url": "https://developers.docusign.com/", "auth": "OAuth"},
65
+ {"name": "HelloSign", "desc": "E-signatures", "cat": "Legal", "url": "https://developers.hellosign.com/", "auth": "apiKey"},
66
+ {"name": "PandaDoc", "desc": "Document automation", "cat": "Legal", "url": "https://developers.pandadoc.com/", "auth": "apiKey"},
67
+ {"name": "Ironclad", "desc": "Contract management", "cat": "Legal", "url": "https://developer.ironcladapp.com/", "auth": "OAuth"},
68
+ {"name": "ContractWorks", "desc": "Contract management", "cat": "Legal", "url": "https://www.contractworks.com/api", "auth": "apiKey"},
69
+ {"name": "Clio", "desc": "Legal practice management", "cat": "Legal", "url": "https://developers.clio.com/", "auth": "OAuth"},
70
+ {"name": "GDPR API", "desc": "GDPR compliance", "cat": "Legal", "url": "https://gdpr-info.eu/", "auth": "None"},
71
+ {"name": "Vanta", "desc": "Compliance automation", "cat": "Security", "url": "https://www.vanta.com/api", "auth": "apiKey"},
72
+ {"name": "Drata", "desc": "Compliance platform", "cat": "Security", "url": "https://drata.com/platform/api", "auth": "apiKey"},
73
+ {"name": "OneTrust", "desc": "Privacy management", "cat": "Legal", "url": "https://developer.onetrust.com/", "auth": "OAuth"},
74
+
75
+ # Customer Support
76
+ {"name": "Zendesk", "desc": "Customer service", "cat": "Support", "url": "https://developer.zendesk.com/", "auth": "OAuth"},
77
+ {"name": "Freshdesk", "desc": "Help desk software", "cat": "Support", "url": "https://developers.freshdesk.com/", "auth": "apiKey"},
78
+ {"name": "Intercom", "desc": "Customer messaging", "cat": "Support", "url": "https://developers.intercom.com/", "auth": "OAuth"},
79
+ {"name": "Helpscout", "desc": "Customer support", "cat": "Support", "url": "https://developer.helpscout.com/", "auth": "OAuth"},
80
+ {"name": "Crisp", "desc": "Customer messaging", "cat": "Support", "url": "https://docs.crisp.chat/api/v1/", "auth": "apiKey"},
81
+ {"name": "Drift", "desc": "Conversational marketing", "cat": "Marketing", "url": "https://devdocs.drift.com/", "auth": "OAuth"},
82
+ {"name": "Tawk.to", "desc": "Live chat", "cat": "Support", "url": "https://developer.tawk.to/", "auth": "apiKey"},
83
+ {"name": "LiveChat", "desc": "Live chat software", "cat": "Support", "url": "https://developers.livechat.com/", "auth": "OAuth"},
84
+ {"name": "Kustomer", "desc": "Customer service", "cat": "Support", "url": "https://developer.kustomer.com/", "auth": "apiKey"},
85
+ {"name": "Gorgias", "desc": "E-commerce support", "cat": "Support", "url": "https://developers.gorgias.com/", "auth": "apiKey"},
86
+
87
+ # Marketing Automation
88
+ {"name": "HubSpot", "desc": "Marketing platform", "cat": "Marketing", "url": "https://developers.hubspot.com/", "auth": "OAuth"},
89
+ {"name": "Marketo", "desc": "Marketing automation", "cat": "Marketing", "url": "https://developers.marketo.com/", "auth": "OAuth"},
90
+ {"name": "Pardot", "desc": "B2B marketing", "cat": "Marketing", "url": "https://developer.salesforce.com/docs/marketing/pardot/", "auth": "OAuth"},
91
+ {"name": "ActiveCampaign", "desc": "Email marketing", "cat": "Marketing", "url": "https://developers.activecampaign.com/", "auth": "apiKey"},
92
+ {"name": "Klaviyo", "desc": "E-commerce marketing", "cat": "Marketing", "url": "https://developers.klaviyo.com/", "auth": "apiKey"},
93
+ {"name": "Braze", "desc": "Customer engagement", "cat": "Marketing", "url": "https://www.braze.com/docs/api/", "auth": "apiKey"},
94
+ {"name": "Iterable", "desc": "Cross-channel marketing", "cat": "Marketing", "url": "https://api.iterable.com/api/docs", "auth": "apiKey"},
95
+ {"name": "Customer.io", "desc": "Messaging automation", "cat": "Marketing", "url": "https://customer.io/docs/api/", "auth": "apiKey"},
96
+ {"name": "Drip", "desc": "E-commerce CRM", "cat": "Marketing", "url": "https://developer.drip.com/", "auth": "OAuth"},
97
+ {"name": "Omnisend", "desc": "E-commerce marketing", "cat": "Marketing", "url": "https://api-docs.omnisend.com/", "auth": "apiKey"},
98
+
99
+ # Accounting & Invoicing
100
+ {"name": "QuickBooks", "desc": "Accounting software", "cat": "Finance", "url": "https://developer.intuit.com/app/developer/qbo/docs/", "auth": "OAuth"},
101
+ {"name": "Xero", "desc": "Accounting platform", "cat": "Finance", "url": "https://developer.xero.com/", "auth": "OAuth"},
102
+ {"name": "FreshBooks", "desc": "Invoicing software", "cat": "Finance", "url": "https://www.freshbooks.com/api/", "auth": "OAuth"},
103
+ {"name": "Wave", "desc": "Small business accounting", "cat": "Finance", "url": "https://developer.waveapps.com/", "auth": "OAuth"},
104
+ {"name": "Sage", "desc": "Accounting software", "cat": "Finance", "url": "https://developer.sage.com/", "auth": "OAuth"},
105
+ {"name": "Zoho Books", "desc": "Accounting software", "cat": "Finance", "url": "https://www.zoho.com/books/api/v3/", "auth": "OAuth"},
106
+ {"name": "Invoice Ninja", "desc": "Invoicing platform", "cat": "Finance", "url": "https://invoice-ninja.readthedocs.io/", "auth": "apiKey"},
107
+ {"name": "Harvest", "desc": "Time tracking", "cat": "Productivity", "url": "https://help.getharvest.com/api-v2/", "auth": "OAuth"},
108
+ {"name": "Chargebee", "desc": "Subscription billing", "cat": "Finance", "url": "https://www.chargebee.com/docs/2.0/api_v2.html", "auth": "apiKey"},
109
+ {"name": "Recurly", "desc": "Subscription management", "cat": "Finance", "url": "https://developers.recurly.com/", "auth": "apiKey"},
110
+
111
+ # CRM
112
+ {"name": "Salesforce API", "desc": "CRM platform", "cat": "Business", "url": "https://developer.salesforce.com/docs/apis", "auth": "OAuth"},
113
+ {"name": "Pipedrive", "desc": "Sales CRM", "cat": "Business", "url": "https://developers.pipedrive.com/", "auth": "OAuth"},
114
+ {"name": "Zoho CRM", "desc": "CRM platform", "cat": "Business", "url": "https://www.zoho.com/crm/developer/docs/api/", "auth": "OAuth"},
115
+ {"name": "Close", "desc": "Sales CRM", "cat": "Business", "url": "https://developer.close.com/", "auth": "apiKey"},
116
+ {"name": "Copper", "desc": "Google CRM", "cat": "Business", "url": "https://developer.copper.com/", "auth": "apiKey"},
117
+ {"name": "Insightly", "desc": "CRM and project", "cat": "Business", "url": "https://api.insight.ly/v3.1/Help", "auth": "apiKey"},
118
+ {"name": "Nimble", "desc": "Social CRM", "cat": "Business", "url": "https://nimble.com/api/", "auth": "apiKey"},
119
+ {"name": "Freshsales", "desc": "Sales CRM", "cat": "Business", "url": "https://developers.freshsales.io/", "auth": "apiKey"},
120
+ {"name": "Monday.com", "desc": "Work OS", "cat": "Productivity", "url": "https://developer.monday.com/", "auth": "apiKey"},
121
+ {"name": "ClickUp", "desc": "Project management", "cat": "Productivity", "url": "https://clickup.com/api", "auth": "OAuth"},
122
+
123
+ # Database & Backend
124
+ {"name": "Supabase", "desc": "Open source Firebase", "cat": "Database", "url": "https://supabase.com/docs/reference/", "auth": "apiKey"},
125
+ {"name": "Firebase", "desc": "App development platform", "cat": "Database", "url": "https://firebase.google.com/docs/reference", "auth": "apiKey"},
126
+ {"name": "PlanetScale", "desc": "Serverless MySQL", "cat": "Database", "url": "https://planetscale.com/docs/api/", "auth": "apiKey"},
127
+ {"name": "Fauna", "desc": "Serverless database", "cat": "Database", "url": "https://docs.fauna.com/fauna/current/api/", "auth": "apiKey"},
128
+ {"name": "Hasura", "desc": "GraphQL engine", "cat": "Database", "url": "https://hasura.io/docs/latest/api-reference/", "auth": "apiKey"},
129
+ {"name": "Neon", "desc": "Serverless Postgres", "cat": "Database", "url": "https://neon.tech/docs/introduction/", "auth": "apiKey"},
130
+ {"name": "Cockroach Labs", "desc": "Distributed SQL", "cat": "Database", "url": "https://www.cockroachlabs.com/docs/api/", "auth": "apiKey"},
131
+ {"name": "Upstash", "desc": "Serverless Redis", "cat": "Database", "url": "https://docs.upstash.com/", "auth": "apiKey"},
132
+ {"name": "Astra DB", "desc": "Cloud Cassandra", "cat": "Database", "url": "https://docs.datastax.com/en/astra/docs/", "auth": "apiKey"},
133
+ {"name": "SingleStore", "desc": "Real-time database", "cat": "Database", "url": "https://docs.singlestore.com/", "auth": "apiKey"},
134
+
135
+ # Monitoring & Observability
136
+ {"name": "Datadog", "desc": "Monitoring platform", "cat": "DevOps", "url": "https://docs.datadoghq.com/api/", "auth": "apiKey"},
137
+ {"name": "New Relic", "desc": "Observability platform", "cat": "DevOps", "url": "https://docs.newrelic.com/docs/apis/", "auth": "apiKey"},
138
+ {"name": "Sentry", "desc": "Error tracking", "cat": "DevOps", "url": "https://docs.sentry.io/api/", "auth": "apiKey"},
139
+ {"name": "PagerDuty", "desc": "Incident response", "cat": "DevOps", "url": "https://developer.pagerduty.com/", "auth": "apiKey"},
140
+ {"name": "Grafana Cloud", "desc": "Monitoring stack", "cat": "DevOps", "url": "https://grafana.com/docs/grafana-cloud/api/", "auth": "apiKey"},
141
+ {"name": "Splunk", "desc": "Data platform", "cat": "DevOps", "url": "https://dev.splunk.com/", "auth": "apiKey"},
142
+ {"name": "LogRocket", "desc": "Frontend monitoring", "cat": "DevOps", "url": "https://docs.logrocket.com/", "auth": "apiKey"},
143
+ {"name": "Rollbar", "desc": "Error tracking", "cat": "DevOps", "url": "https://docs.rollbar.com/", "auth": "apiKey"},
144
+ {"name": "Bugsnag", "desc": "Error monitoring", "cat": "DevOps", "url": "https://bugsnagapiv2.docs.apiary.io/", "auth": "apiKey"},
145
+ {"name": "Airbrake", "desc": "Error monitoring", "cat": "DevOps", "url": "https://airbrake.io/docs/api/", "auth": "apiKey"},
146
+
147
+ # Media & Video
148
+ {"name": "Cloudflare Stream", "desc": "Video streaming", "cat": "Video", "url": "https://developers.cloudflare.com/stream/", "auth": "apiKey"},
149
+ {"name": "Mux", "desc": "Video infrastructure", "cat": "Video", "url": "https://docs.mux.com/", "auth": "apiKey"},
150
+ {"name": "Wistia", "desc": "Video hosting", "cat": "Video", "url": "https://wistia.com/support/developers", "auth": "apiKey"},
151
+ {"name": "Vimeo API", "desc": "Video platform", "cat": "Video", "url": "https://developer.vimeo.com/api/reference", "auth": "OAuth"},
152
+ {"name": "Brightcove", "desc": "Video technology", "cat": "Video", "url": "https://apis.support.brightcove.com/", "auth": "OAuth"},
153
+ {"name": "JW Player", "desc": "Video player", "cat": "Video", "url": "https://developer.jwplayer.com/", "auth": "apiKey"},
154
+ {"name": "Kaltura", "desc": "Video platform", "cat": "Video", "url": "https://developer.kaltura.com/", "auth": "apiKey"},
155
+ {"name": "api.video", "desc": "Video API", "cat": "Video", "url": "https://docs.api.video/", "auth": "apiKey"},
156
+ {"name": "Ziggeo", "desc": "Video recording", "cat": "Video", "url": "https://ziggeo.com/docs/", "auth": "apiKey"},
157
+ {"name": "Agora", "desc": "Real-time engagement", "cat": "Video", "url": "https://docs.agora.io/", "auth": "apiKey"},
158
+
159
+ # Forms & Surveys
160
+ {"name": "Typeform", "desc": "Online forms", "cat": "Productivity", "url": "https://developer.typeform.com/", "auth": "OAuth"},
161
+ {"name": "SurveyMonkey", "desc": "Survey platform", "cat": "Productivity", "url": "https://developer.surveymonkey.com/", "auth": "OAuth"},
162
+ {"name": "Google Forms", "desc": "Forms builder", "cat": "Productivity", "url": "https://developers.google.com/forms/api", "auth": "OAuth"},
163
+ {"name": "Tally", "desc": "Form builder", "cat": "Productivity", "url": "https://tally.so/help/webhooks", "auth": "apiKey"},
164
+ {"name": "Paperform", "desc": "Online forms", "cat": "Productivity", "url": "https://paperform.co/help/articles/api-overview/", "auth": "apiKey"},
165
+ {"name": "Formstack", "desc": "Form builder", "cat": "Productivity", "url": "https://developers.formstack.com/", "auth": "OAuth"},
166
+ {"name": "Cognito Forms", "desc": "Form builder", "cat": "Productivity", "url": "https://www.cognitoforms.com/api", "auth": "apiKey"},
167
+ {"name": "Wufoo", "desc": "Online forms", "cat": "Productivity", "url": "https://wufoo.github.io/docs/", "auth": "apiKey"},
168
+ {"name": "Formbricks", "desc": "Open source surveys", "cat": "Productivity", "url": "https://formbricks.com/docs/api", "auth": "apiKey"},
169
+ {"name": "Qualtrics", "desc": "Experience management", "cat": "Productivity", "url": "https://api.qualtrics.com/", "auth": "apiKey"},
170
+
171
+ # Scheduling & Calendar
172
+ {"name": "Calendly", "desc": "Scheduling automation", "cat": "Productivity", "url": "https://developer.calendly.com/", "auth": "OAuth"},
173
+ {"name": "Cal.com", "desc": "Open source scheduling", "cat": "Productivity", "url": "https://cal.com/docs/api", "auth": "apiKey"},
174
+ {"name": "Cronofy", "desc": "Calendar API", "cat": "Productivity", "url": "https://docs.cronofy.com/", "auth": "OAuth"},
175
+ {"name": "Nylas", "desc": "Communications platform", "cat": "Productivity", "url": "https://developer.nylas.com/", "auth": "OAuth"},
176
+ {"name": "Acuity Scheduling", "desc": "Appointment scheduling", "cat": "Productivity", "url": "https://developers.acuityscheduling.com/", "auth": "OAuth"},
177
+ {"name": "Doodle", "desc": "Meeting scheduling", "cat": "Productivity", "url": "https://doodle.com/api", "auth": "OAuth"},
178
+ {"name": "SimplyBook", "desc": "Booking system", "cat": "Productivity", "url": "https://simplybook.me/api/developer", "auth": "apiKey"},
179
+ {"name": "YouCanBook.me", "desc": "Booking pages", "cat": "Productivity", "url": "https://api.youcanbook.me/", "auth": "apiKey"},
180
+ {"name": "Appointlet", "desc": "Scheduling software", "cat": "Productivity", "url": "https://developers.appointlet.com/", "auth": "apiKey"},
181
+ {"name": "Setmore", "desc": "Appointment scheduling", "cat": "Productivity", "url": "https://setmore.com/api", "auth": "apiKey"},
182
+
183
+ # Social Media Management
184
+ {"name": "Hootsuite", "desc": "Social media management", "cat": "Social", "url": "https://developer.hootsuite.com/", "auth": "OAuth"},
185
+ {"name": "Sprout Social", "desc": "Social management", "cat": "Social", "url": "https://developers.sproutsocial.com/", "auth": "OAuth"},
186
+ {"name": "Later", "desc": "Social scheduling", "cat": "Social", "url": "https://developers.later.com/", "auth": "OAuth"},
187
+ {"name": "Sprinklr", "desc": "CXM platform", "cat": "Social", "url": "https://developer.sprinklr.com/", "auth": "OAuth"},
188
+ {"name": "Agorapulse", "desc": "Social media tool", "cat": "Social", "url": "https://api.agorapulse.com/", "auth": "OAuth"},
189
+ {"name": "SocialBee", "desc": "Social scheduling", "cat": "Social", "url": "https://socialbee.com/api/", "auth": "apiKey"},
190
+ {"name": "Publer", "desc": "Social scheduling", "cat": "Social", "url": "https://publer.io/api/", "auth": "apiKey"},
191
+ {"name": "Loomly", "desc": "Brand success platform", "cat": "Social", "url": "https://www.loomly.com/api", "auth": "apiKey"},
192
+ {"name": "Sendible", "desc": "Social management", "cat": "Social", "url": "https://sendible.com/api", "auth": "OAuth"},
193
+ {"name": "CoSchedule", "desc": "Marketing calendar", "cat": "Marketing", "url": "https://coschedule.com/api", "auth": "apiKey"},
194
+
195
+ # E-commerce Tools
196
+ {"name": "Shipbob", "desc": "Fulfillment platform", "cat": "E-commerce", "url": "https://developer.shipbob.com/", "auth": "OAuth"},
197
+ {"name": "Printful", "desc": "Print on demand", "cat": "E-commerce", "url": "https://developers.printful.com/", "auth": "OAuth"},
198
+ {"name": "Printify", "desc": "Print on demand", "cat": "E-commerce", "url": "https://developers.printify.com/", "auth": "OAuth"},
199
+ {"name": "Gooten", "desc": "Print on demand", "cat": "E-commerce", "url": "https://www.gooten.com/api/", "auth": "apiKey"},
200
+ {"name": "Oberlo", "desc": "Dropshipping", "cat": "E-commerce", "url": "https://www.oberlo.com/api", "auth": "OAuth"},
201
+ {"name": "Spocket", "desc": "Dropshipping", "cat": "E-commerce", "url": "https://www.spocket.co/api", "auth": "apiKey"},
202
+ {"name": "ShipEngine", "desc": "Shipping API", "cat": "Shipping", "url": "https://shipengine.github.io/shipengine-openapi/", "auth": "apiKey"},
203
+ {"name": "Returnly", "desc": "Returns platform", "cat": "E-commerce", "url": "https://developers.returnly.com/", "auth": "apiKey"},
204
+ {"name": "Loop Returns", "desc": "Returns management", "cat": "E-commerce", "url": "https://developers.loopreturns.com/", "auth": "apiKey"},
205
+ {"name": "Recharge", "desc": "Subscriptions", "cat": "E-commerce", "url": "https://developer.rechargepayments.com/", "auth": "apiKey"},
206
+
207
+ # Review & Feedback
208
+ {"name": "Trustpilot", "desc": "Review platform", "cat": "Marketing", "url": "https://documentation-apidocumentation.trustpilot.com/", "auth": "OAuth"},
209
+ {"name": "Yotpo", "desc": "E-commerce marketing", "cat": "Marketing", "url": "https://developers.yotpo.com/", "auth": "apiKey"},
210
+ {"name": "Judge.me", "desc": "Product reviews", "cat": "E-commerce", "url": "https://judge.me/api", "auth": "apiKey"},
211
+ {"name": "Bazaarvoice", "desc": "User content", "cat": "Marketing", "url": "https://developer.bazaarvoice.com/", "auth": "apiKey"},
212
+ {"name": "PowerReviews", "desc": "Review software", "cat": "Marketing", "url": "https://www.powerreviews.com/api/", "auth": "apiKey"},
213
+ {"name": "Stamped.io", "desc": "Reviews and loyalty", "cat": "Marketing", "url": "https://developers.stamped.io/", "auth": "apiKey"},
214
+ {"name": "Loox", "desc": "Photo reviews", "cat": "E-commerce", "url": "https://loox.io/api", "auth": "apiKey"},
215
+ {"name": "Reviews.io", "desc": "Review collection", "cat": "Marketing", "url": "https://developers.reviews.io/", "auth": "apiKey"},
216
+ {"name": "G2", "desc": "Software reviews", "cat": "Marketing", "url": "https://documentation.g2.com/", "auth": "apiKey"},
217
+ {"name": "Capterra", "desc": "Software reviews", "cat": "Marketing", "url": "https://www.capterra.com/api/", "auth": "apiKey"},
218
+
219
+ # Workflow Automation
220
+ {"name": "Zapier", "desc": "Workflow automation", "cat": "Automation", "url": "https://platform.zapier.com/", "auth": "OAuth"},
221
+ {"name": "Make", "desc": "Automation platform", "cat": "Automation", "url": "https://www.make.com/en/api-documentation", "auth": "apiKey"},
222
+ {"name": "n8n", "desc": "Workflow automation", "cat": "Automation", "url": "https://docs.n8n.io/api/", "auth": "apiKey"},
223
+ {"name": "Tray.io", "desc": "Integration platform", "cat": "Automation", "url": "https://tray.io/documentation/", "auth": "OAuth"},
224
+ {"name": "Workato", "desc": "Enterprise automation", "cat": "Automation", "url": "https://docs.workato.com/api-reference/", "auth": "OAuth"},
225
+ {"name": "Pipedream", "desc": "Integration platform", "cat": "Automation", "url": "https://pipedream.com/docs/api/", "auth": "apiKey"},
226
+ {"name": "IFTTT", "desc": "Applet automation", "cat": "Automation", "url": "https://ifttt.com/docs", "auth": "OAuth"},
227
+ {"name": "Parabola", "desc": "Data automation", "cat": "Automation", "url": "https://parabola.io/api/", "auth": "apiKey"},
228
+ {"name": "Bardeen", "desc": "Browser automation", "cat": "Automation", "url": "https://www.bardeen.ai/api", "auth": "apiKey"},
229
+ {"name": "Activepieces", "desc": "Open source automation", "cat": "Automation", "url": "https://www.activepieces.com/docs/api", "auth": "apiKey"},
230
+
231
+ # Document Processing
232
+ {"name": "AWS Textract", "desc": "Document analysis", "cat": "AI", "url": "https://docs.aws.amazon.com/textract/", "auth": "apiKey"},
233
+ {"name": "Google Document AI", "desc": "Document processing", "cat": "AI", "url": "https://cloud.google.com/document-ai/docs/", "auth": "OAuth"},
234
+ {"name": "Azure Form Recognizer", "desc": "Form extraction", "cat": "AI", "url": "https://docs.microsoft.com/en-us/azure/applied-ai-services/form-recognizer/", "auth": "apiKey"},
235
+ {"name": "Docparser", "desc": "Document parsing", "cat": "Documents", "url": "https://dev.docparser.com/", "auth": "apiKey"},
236
+ {"name": "Rossum", "desc": "Document AI", "cat": "AI", "url": "https://elis.rossum.ai/api/docs/", "auth": "apiKey"},
237
+ {"name": "Hyperscience", "desc": "Document automation", "cat": "AI", "url": "https://www.hyperscience.com/api/", "auth": "apiKey"},
238
+ {"name": "Klippa", "desc": "Document processing", "cat": "Documents", "url": "https://docs.klippa.com/", "auth": "apiKey"},
239
+ {"name": "Mindee", "desc": "Document parsing", "cat": "AI", "url": "https://developers.mindee.com/", "auth": "apiKey"},
240
+ {"name": "Nanonets", "desc": "OCR and AI", "cat": "AI", "url": "https://nanonets.com/documentation/", "auth": "apiKey"},
241
+ {"name": "Veryfi", "desc": "Document intelligence", "cat": "AI", "url": "https://www.veryfi.com/api/", "auth": "apiKey"},
242
+
243
+ # Voice & Telephony
244
+ {"name": "Vonage", "desc": "Communications API", "cat": "Communication", "url": "https://developer.vonage.com/", "auth": "apiKey"},
245
+ {"name": "Plivo", "desc": "Voice and SMS", "cat": "Communication", "url": "https://www.plivo.com/docs/", "auth": "apiKey"},
246
+ {"name": "Bandwidth", "desc": "Communications API", "cat": "Communication", "url": "https://dev.bandwidth.com/", "auth": "apiKey"},
247
+ {"name": "SignalWire", "desc": "Communications platform", "cat": "Communication", "url": "https://signalwire.com/docs", "auth": "apiKey"},
248
+ {"name": "Sinch", "desc": "Messaging and voice", "cat": "Communication", "url": "https://developers.sinch.com/", "auth": "apiKey"},
249
+ {"name": "Voximplant", "desc": "Cloud communications", "cat": "Communication", "url": "https://voximplant.com/docs/", "auth": "apiKey"},
250
+ {"name": "Daily", "desc": "Video and audio", "cat": "Video", "url": "https://docs.daily.co/", "auth": "apiKey"},
251
+ {"name": "Livekit", "desc": "Real-time video", "cat": "Video", "url": "https://docs.livekit.io/", "auth": "apiKey"},
252
+ {"name": "Dyte", "desc": "Video SDK", "cat": "Video", "url": "https://docs.dyte.io/", "auth": "apiKey"},
253
+ {"name": "Whereby", "desc": "Video meetings", "cat": "Video", "url": "https://whereby.dev/", "auth": "apiKey"},
254
+
255
+ # Data Enrichment
256
+ {"name": "Clearbit", "desc": "Business intelligence", "cat": "Business", "url": "https://clearbit.com/docs", "auth": "apiKey"},
257
+ {"name": "ZoomInfo", "desc": "B2B data", "cat": "Business", "url": "https://developers.zoominfo.com/", "auth": "apiKey"},
258
+ {"name": "FullContact", "desc": "Identity resolution", "cat": "Business", "url": "https://docs.fullcontact.com/", "auth": "apiKey"},
259
+ {"name": "Pipl", "desc": "People search", "cat": "Business", "url": "https://pipl.com/api/", "auth": "apiKey"},
260
+ {"name": "Apollo.io", "desc": "Sales intelligence", "cat": "Business", "url": "https://apolloio.github.io/apollo-api-docs/", "auth": "apiKey"},
261
+ {"name": "LeadIQ", "desc": "Sales prospecting", "cat": "Business", "url": "https://docs.leadiq.com/", "auth": "apiKey"},
262
+ {"name": "Lusha", "desc": "Contact data", "cat": "Business", "url": "https://www.lusha.com/api/", "auth": "apiKey"},
263
+ {"name": "Snov.io", "desc": "Sales automation", "cat": "Marketing", "url": "https://snov.io/api", "auth": "apiKey"},
264
+ {"name": "RocketReach", "desc": "Professional data", "cat": "Business", "url": "https://rocketreach.co/api/", "auth": "apiKey"},
265
+ {"name": "People Data Labs", "desc": "People data", "cat": "Business", "url": "https://docs.peopledatalabs.com/", "auth": "apiKey"},
266
+
267
+ # Banking & Fintech
268
+ {"name": "Plaid", "desc": "Financial data", "cat": "Finance", "url": "https://plaid.com/docs/", "auth": "apiKey"},
269
+ {"name": "Yodlee", "desc": "Financial aggregation", "cat": "Finance", "url": "https://developer.yodlee.com/", "auth": "OAuth"},
270
+ {"name": "MX", "desc": "Financial data", "cat": "Finance", "url": "https://docs.mx.com/", "auth": "apiKey"},
271
+ {"name": "Finicity", "desc": "Financial data", "cat": "Finance", "url": "https://docs.finicity.com/", "auth": "apiKey"},
272
+ {"name": "Tink", "desc": "Open banking", "cat": "Finance", "url": "https://docs.tink.com/", "auth": "OAuth"},
273
+ {"name": "TrueLayer", "desc": "Open banking", "cat": "Finance", "url": "https://docs.truelayer.com/", "auth": "OAuth"},
274
+ {"name": "Yapily", "desc": "Open banking", "cat": "Finance", "url": "https://docs.yapily.com/", "auth": "apiKey"},
275
+ {"name": "Salt Edge", "desc": "Financial data", "cat": "Finance", "url": "https://docs.saltedge.com/", "auth": "apiKey"},
276
+ {"name": "Belvo", "desc": "Open finance", "cat": "Finance", "url": "https://developers.belvo.com/", "auth": "apiKey"},
277
+ {"name": "Basiq", "desc": "Financial data", "cat": "Finance", "url": "https://basiq.io/api/", "auth": "apiKey"},
278
+
279
+ # Payments (expanded)
280
+ {"name": "Adyen", "desc": "Global payments", "cat": "Finance", "url": "https://docs.adyen.com/", "auth": "apiKey"},
281
+ {"name": "Checkout.com", "desc": "Payment gateway", "cat": "Finance", "url": "https://www.checkout.com/docs/api-reference", "auth": "apiKey"},
282
+ {"name": "Paddle", "desc": "SaaS payments", "cat": "Finance", "url": "https://developer.paddle.com/", "auth": "apiKey"},
283
+ {"name": "Lemonsqueezy", "desc": "Digital product payments", "cat": "Finance", "url": "https://docs.lemonsqueezy.com/api", "auth": "apiKey"},
284
+ {"name": "Gumroad", "desc": "Creator payments", "cat": "Finance", "url": "https://app.gumroad.com/api", "auth": "OAuth"},
285
+ {"name": "Paystack", "desc": "African payments", "cat": "Finance", "url": "https://paystack.com/docs/api/", "auth": "apiKey"},
286
+ {"name": "Flutterwave", "desc": "African payments", "cat": "Finance", "url": "https://developer.flutterwave.com/", "auth": "apiKey"},
287
+ {"name": "Razorpay", "desc": "Indian payments", "cat": "Finance", "url": "https://razorpay.com/docs/api/", "auth": "apiKey"},
288
+ {"name": "Mollie", "desc": "European payments", "cat": "Finance", "url": "https://docs.mollie.com/", "auth": "apiKey"},
289
+ {"name": "GoCardless", "desc": "Direct debit", "cat": "Finance", "url": "https://developer.gocardless.com/", "auth": "OAuth"},
290
+
291
+ # Cloud Infrastructure
292
+ {"name": "AWS", "desc": "Cloud platform", "cat": "Cloud", "url": "https://docs.aws.amazon.com/", "auth": "apiKey"},
293
+ {"name": "Azure", "desc": "Cloud platform", "cat": "Cloud", "url": "https://docs.microsoft.com/en-us/rest/api/azure/", "auth": "OAuth"},
294
+ {"name": "Google Cloud", "desc": "Cloud platform", "cat": "Cloud", "url": "https://cloud.google.com/apis", "auth": "OAuth"},
295
+ {"name": "DigitalOcean", "desc": "Cloud platform", "cat": "Cloud", "url": "https://docs.digitalocean.com/reference/api/", "auth": "apiKey"},
296
+ {"name": "Linode", "desc": "Cloud hosting", "cat": "Cloud", "url": "https://www.linode.com/docs/api/", "auth": "apiKey"},
297
+ {"name": "Vultr", "desc": "Cloud compute", "cat": "Cloud", "url": "https://www.vultr.com/api/", "auth": "apiKey"},
298
+ {"name": "Hetzner", "desc": "Cloud hosting", "cat": "Cloud", "url": "https://docs.hetzner.cloud/", "auth": "apiKey"},
299
+ {"name": "Fly.io", "desc": "App platform", "cat": "Cloud", "url": "https://fly.io/docs/reference/", "auth": "apiKey"},
300
+ {"name": "Railway", "desc": "App platform", "cat": "Cloud", "url": "https://docs.railway.app/reference/", "auth": "apiKey"},
301
+ {"name": "Render", "desc": "Cloud platform", "cat": "Cloud", "url": "https://render.com/docs/api", "auth": "apiKey"},
302
+
303
+ # CDN & Edge
304
+ {"name": "Cloudflare", "desc": "CDN and security", "cat": "Infrastructure", "url": "https://api.cloudflare.com/", "auth": "apiKey"},
305
+ {"name": "Fastly", "desc": "Edge cloud", "cat": "Infrastructure", "url": "https://developer.fastly.com/", "auth": "apiKey"},
306
+ {"name": "Akamai", "desc": "CDN platform", "cat": "Infrastructure", "url": "https://developer.akamai.com/", "auth": "OAuth"},
307
+ {"name": "Bunny CDN", "desc": "CDN service", "cat": "Infrastructure", "url": "https://docs.bunny.net/", "auth": "apiKey"},
308
+ {"name": "KeyCDN", "desc": "CDN service", "cat": "Infrastructure", "url": "https://www.keycdn.com/api", "auth": "apiKey"},
309
+ {"name": "StackPath", "desc": "Edge platform", "cat": "Infrastructure", "url": "https://stackpath.dev/", "auth": "OAuth"},
310
+ {"name": "Vercel", "desc": "Frontend platform", "cat": "Development", "url": "https://vercel.com/docs/api", "auth": "apiKey"},
311
+ {"name": "Netlify", "desc": "Web platform", "cat": "Development", "url": "https://docs.netlify.com/api/get-started/", "auth": "apiKey"},
312
+ {"name": "Deno Deploy", "desc": "Edge functions", "cat": "Development", "url": "https://deno.com/deploy/docs/", "auth": "apiKey"},
313
+ {"name": "Lambda", "desc": "Serverless compute", "cat": "Cloud", "url": "https://docs.aws.amazon.com/lambda/", "auth": "apiKey"},
314
+
315
+ # Random APIs
316
+ {"name": "Advice Slip", "desc": "Random advice", "cat": "Entertainment", "url": "https://api.adviceslip.com/", "auth": "None"},
317
+ {"name": "Affirmations", "desc": "Positive affirmations", "cat": "Entertainment", "url": "https://www.affirmations.dev/", "auth": "None"},
318
+ {"name": "Agify", "desc": "Age prediction", "cat": "Tools", "url": "https://agify.io/", "auth": "None"},
319
+ {"name": "Nationalize", "desc": "Nationality prediction", "cat": "Tools", "url": "https://nationalize.io/", "auth": "None"},
320
+ {"name": "Genderize", "desc": "Gender prediction", "cat": "Tools", "url": "https://genderize.io/", "auth": "None"},
321
+ {"name": "BoredAPI", "desc": "Random activities", "cat": "Entertainment", "url": "https://www.boredapi.com/", "auth": "None"},
322
+ {"name": "Chuck Norris", "desc": "Chuck Norris jokes", "cat": "Entertainment", "url": "https://api.chucknorris.io/", "auth": "None"},
323
+ {"name": "Dad Jokes", "desc": "Dad jokes", "cat": "Entertainment", "url": "https://icanhazdadjoke.com/api", "auth": "None"},
324
+ {"name": "Corporate BS", "desc": "Corporate buzzwords", "cat": "Entertainment", "url": "https://corporatebs-generator.sameerkumar.website/", "auth": "None"},
325
+ {"name": "Evil Insult", "desc": "Random insults", "cat": "Entertainment", "url": "https://evilinsult.com/api/", "auth": "None"},
326
+ ]
327
+
328
+ # Convert and dedupe
329
+ new_apis = []
330
+ seen_ids = set()
331
+
332
+ for api in batch2_apis:
333
+ api_id = make_id(api.get('name', ''))
334
+
335
+ if api_id in existing_ids or api_id in seen_ids or not api_id:
336
+ continue
337
+
338
+ seen_ids.add(api_id)
339
+
340
+ entry = {
341
+ "id": api_id,
342
+ "name": api.get('name', api_id),
343
+ "description": api.get('desc', ''),
344
+ "category": api.get('cat', 'Uncategorized'),
345
+ "link": api.get('url', ''),
346
+ "auth": api.get('auth', 'None')
347
+ }
348
+ new_apis.append(entry)
349
+
350
+ print(f"New unique APIs in batch 2: {len(new_apis)}")
351
+
352
+ # Save batch 2
353
+ output_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/night-expansion-02-26-06-batch2.json")
354
+ with open(output_file, 'w') as f:
355
+ json.dump(new_apis, f, indent=2)
356
+
357
+ print(f"Saved {len(new_apis)} APIs to {output_file}")
358
+
359
+ # Update combined file
360
+ with open(combined_file) as f:
361
+ combined_apis = json.load(f)
362
+
363
+ combined_apis.extend(new_apis)
364
+
365
+ with open(combined_file, 'w') as f:
366
+ json.dump(combined_apis, f, indent=2)
367
+
368
+ print(f"Updated combined file: {len(combined_apis)} total APIs")