@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.
- package/AGENTS.md +50 -33
- package/README.md +22 -12
- package/SOUL.md +60 -19
- package/STATUS.md +91 -169
- package/convex/_generated/api.d.ts +6 -0
- package/convex/directCall.ts +598 -0
- package/convex/providers.ts +341 -26
- package/convex/schema.ts +87 -0
- package/convex/usage.ts +260 -0
- package/convex/waitlist.ts +55 -0
- package/data/combined-02-26.json +22102 -0
- package/data/night-expansion-02-26-06-batch2.json +1898 -0
- package/data/night-expansion-02-26-06-batch3.json +1410 -0
- package/data/night-expansion-02-26-06.json +3146 -0
- package/data/night-expansion-02-26-full.json +9726 -0
- package/data/night-expansion-02-26-v2.json +330 -0
- package/data/night-expansion-02-26.json +171 -0
- package/dist/crypto.d.ts +7 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +67 -0
- package/dist/crypto.js.map +1 -0
- package/dist/execute-dynamic.d.ts +116 -0
- package/dist/execute-dynamic.d.ts.map +1 -0
- package/dist/execute-dynamic.js +456 -0
- package/dist/execute-dynamic.js.map +1 -0
- package/dist/execute.d.ts +2 -1
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +35 -5
- package/dist/execute.js.map +1 -1
- package/dist/index.js +33 -4
- package/dist/index.js.map +1 -1
- package/dist/registry/apis.json +2081 -3
- package/docs/PRD-customer-key-passthrough.md +184 -0
- package/landing/public/badges/available-on-apiclaw.svg +14 -0
- package/landing/scripts/generate-stats.js +75 -4
- package/landing/src/app/admin/page.tsx +1 -1
- package/landing/src/app/api/auth/magic-link/route.ts +1 -1
- package/landing/src/app/api/auth/session/route.ts +1 -1
- package/landing/src/app/api/auth/verify/route.ts +1 -1
- package/landing/src/app/api/og/route.tsx +5 -3
- package/landing/src/app/docs/page.tsx +5 -4
- package/landing/src/app/earn/page.tsx +14 -11
- package/landing/src/app/globals.css +16 -15
- package/landing/src/app/layout.tsx +2 -2
- package/landing/src/app/page.tsx +425 -254
- package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +600 -0
- package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +583 -0
- package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +301 -0
- package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +659 -0
- package/landing/src/app/providers/dashboard/[apiId]/page.tsx +381 -0
- package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +418 -0
- package/landing/src/app/providers/dashboard/layout.tsx +292 -0
- package/landing/src/app/providers/dashboard/page.tsx +353 -290
- package/landing/src/app/providers/register/page.tsx +87 -10
- package/landing/src/components/AiClientDropdown.tsx +85 -0
- package/landing/src/components/ConfigHelperModal.tsx +113 -0
- package/landing/src/components/HeroTabs.tsx +187 -0
- package/landing/src/components/ShareIntegrationModal.tsx +198 -0
- package/landing/src/hooks/useDashboardData.ts +53 -1
- package/landing/src/lib/apis.json +46554 -174
- package/landing/src/lib/convex-client.ts +22 -3
- package/landing/src/lib/stats.json +4 -4
- package/landing/tsconfig.tsbuildinfo +1 -1
- package/night-expansion-02-26-06-batch2.py +368 -0
- package/night-expansion-02-26-06-batch3.py +299 -0
- package/night-expansion-02-26-06.py +756 -0
- package/package.json +1 -1
- package/scripts/bulk-add-public-apis-v2.py +418 -0
- package/scripts/night-expansion-02-26-v2.py +296 -0
- package/scripts/night-expansion-02-26.py +890 -0
- package/scripts/seed-complete-api.js +181 -0
- package/scripts/seed-demo-api.sh +44 -0
- package/src/crypto.ts +75 -0
- package/src/execute-dynamic.ts +589 -0
- package/src/execute.ts +41 -5
- package/src/index.ts +38 -4
- package/src/registry/apis.json +2081 -3
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
APIClaw Night Expansion 2026-02-26 06:00 - Batch 3
|
|
4
|
+
Target: More APIs to reach 1000+ new for this run
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
combined_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/combined-02-26.json")
|
|
12
|
+
existing_ids = set()
|
|
13
|
+
if combined_file.exists():
|
|
14
|
+
with open(combined_file) as f:
|
|
15
|
+
for api in json.load(f):
|
|
16
|
+
existing_ids.add(api.get('id', ''))
|
|
17
|
+
|
|
18
|
+
print(f"Loaded {len(existing_ids)} existing API IDs")
|
|
19
|
+
|
|
20
|
+
def make_id(name):
|
|
21
|
+
slug = re.sub(r'[^a-z0-9]+', '-', name.lower()).strip('-')
|
|
22
|
+
return slug[:50]
|
|
23
|
+
|
|
24
|
+
batch3_apis = [
|
|
25
|
+
# More AI/ML Services
|
|
26
|
+
{"name": "Together AI", "desc": "Open source AI models", "cat": "AI", "url": "https://docs.together.ai/", "auth": "apiKey"},
|
|
27
|
+
{"name": "Groq", "desc": "Fast AI inference", "cat": "AI", "url": "https://console.groq.com/docs/", "auth": "apiKey"},
|
|
28
|
+
{"name": "Fireworks AI", "desc": "AI model hosting", "cat": "AI", "url": "https://readme.fireworks.ai/", "auth": "apiKey"},
|
|
29
|
+
{"name": "Perplexity", "desc": "AI search", "cat": "AI", "url": "https://docs.perplexity.ai/", "auth": "apiKey"},
|
|
30
|
+
{"name": "Mistral AI", "desc": "AI models", "cat": "AI", "url": "https://docs.mistral.ai/", "auth": "apiKey"},
|
|
31
|
+
{"name": "AI21 Labs", "desc": "AI language models", "cat": "AI", "url": "https://docs.ai21.com/", "auth": "apiKey"},
|
|
32
|
+
{"name": "Writer", "desc": "Enterprise AI", "cat": "AI", "url": "https://dev.writer.com/", "auth": "apiKey"},
|
|
33
|
+
{"name": "Jasper AI", "desc": "Content AI", "cat": "AI", "url": "https://developers.jasper.ai/", "auth": "apiKey"},
|
|
34
|
+
{"name": "Tome", "desc": "AI presentations", "cat": "AI", "url": "https://tome.app/api", "auth": "apiKey"},
|
|
35
|
+
{"name": "Mem AI", "desc": "AI knowledge base", "cat": "AI", "url": "https://mem.ai/api", "auth": "apiKey"},
|
|
36
|
+
{"name": "Runway ML", "desc": "Creative AI", "cat": "AI", "url": "https://docs.runwayml.com/", "auth": "apiKey"},
|
|
37
|
+
{"name": "Leonardo AI", "desc": "AI image generation", "cat": "AI", "url": "https://docs.leonardo.ai/", "auth": "apiKey"},
|
|
38
|
+
{"name": "Ideogram", "desc": "AI image generation", "cat": "AI", "url": "https://ideogram.ai/api", "auth": "apiKey"},
|
|
39
|
+
{"name": "Midjourney", "desc": "AI art generation", "cat": "AI", "url": "https://docs.midjourney.com/", "auth": "apiKey"},
|
|
40
|
+
{"name": "DALL-E", "desc": "OpenAI image generation", "cat": "AI", "url": "https://platform.openai.com/docs/guides/images", "auth": "apiKey"},
|
|
41
|
+
|
|
42
|
+
# Image Processing
|
|
43
|
+
{"name": "Remove.bg", "desc": "Background removal", "cat": "Media", "url": "https://www.remove.bg/api", "auth": "apiKey"},
|
|
44
|
+
{"name": "Imgix", "desc": "Image CDN", "cat": "Media", "url": "https://docs.imgix.com/apis/", "auth": "apiKey"},
|
|
45
|
+
{"name": "Thumbor", "desc": "Image processing", "cat": "Media", "url": "https://thumbor.readthedocs.io/", "auth": "None"},
|
|
46
|
+
{"name": "TinyPNG", "desc": "Image compression", "cat": "Media", "url": "https://tinypng.com/developers", "auth": "apiKey"},
|
|
47
|
+
{"name": "Imagga", "desc": "Image recognition", "cat": "AI", "url": "https://docs.imagga.com/", "auth": "apiKey"},
|
|
48
|
+
{"name": "Kraken.io", "desc": "Image optimization", "cat": "Media", "url": "https://kraken.io/docs/", "auth": "apiKey"},
|
|
49
|
+
{"name": "Sharp", "desc": "Image processing", "cat": "Media", "url": "https://sharp.pixelplumbing.com/api", "auth": "None"},
|
|
50
|
+
{"name": "Uploadcare", "desc": "File uploading", "cat": "Media", "url": "https://uploadcare.com/api-refs/", "auth": "apiKey"},
|
|
51
|
+
{"name": "Sirv", "desc": "Image CDN", "cat": "Media", "url": "https://sirv.com/help/api/", "auth": "apiKey"},
|
|
52
|
+
{"name": "ImageKit", "desc": "Image CDN", "cat": "Media", "url": "https://docs.imagekit.io/", "auth": "apiKey"},
|
|
53
|
+
|
|
54
|
+
# Testing & QA
|
|
55
|
+
{"name": "BrowserStack", "desc": "Browser testing", "cat": "Testing", "url": "https://www.browserstack.com/docs/automate/api-reference/", "auth": "apiKey"},
|
|
56
|
+
{"name": "Sauce Labs", "desc": "Testing platform", "cat": "Testing", "url": "https://docs.saucelabs.com/dev/api/", "auth": "apiKey"},
|
|
57
|
+
{"name": "LambdaTest", "desc": "Browser testing", "cat": "Testing", "url": "https://www.lambdatest.com/support/api-doc/", "auth": "apiKey"},
|
|
58
|
+
{"name": "Testim", "desc": "AI testing", "cat": "Testing", "url": "https://help.testim.io/docs/api", "auth": "apiKey"},
|
|
59
|
+
{"name": "Mabl", "desc": "Test automation", "cat": "Testing", "url": "https://help.mabl.com/docs/api-overview", "auth": "apiKey"},
|
|
60
|
+
{"name": "Cypress Dashboard", "desc": "Test recording", "cat": "Testing", "url": "https://docs.cypress.io/guides/cloud/api", "auth": "apiKey"},
|
|
61
|
+
{"name": "Applitools", "desc": "Visual testing", "cat": "Testing", "url": "https://applitools.com/docs/api/eyes-sdk/", "auth": "apiKey"},
|
|
62
|
+
{"name": "Percy", "desc": "Visual testing", "cat": "Testing", "url": "https://docs.percy.io/docs/api", "auth": "apiKey"},
|
|
63
|
+
{"name": "Checkly", "desc": "Monitoring", "cat": "Testing", "url": "https://www.checklyhq.com/docs/api/", "auth": "apiKey"},
|
|
64
|
+
{"name": "k6", "desc": "Load testing", "cat": "Testing", "url": "https://k6.io/docs/cloud/cloud-reference/cloud-rest-api/", "auth": "apiKey"},
|
|
65
|
+
|
|
66
|
+
# Security
|
|
67
|
+
{"name": "Snyk", "desc": "Security scanning", "cat": "Security", "url": "https://snyk.docs.apiary.io/", "auth": "apiKey"},
|
|
68
|
+
{"name": "SonarQube", "desc": "Code quality", "cat": "Security", "url": "https://docs.sonarqube.org/latest/extend/web-api/", "auth": "apiKey"},
|
|
69
|
+
{"name": "Detectify", "desc": "Web security", "cat": "Security", "url": "https://developer.detectify.com/", "auth": "apiKey"},
|
|
70
|
+
{"name": "SecurityTrails", "desc": "DNS data", "cat": "Security", "url": "https://securitytrails.com/corp/api", "auth": "apiKey"},
|
|
71
|
+
{"name": "VirusTotal", "desc": "File scanning", "cat": "Security", "url": "https://developers.virustotal.com/", "auth": "apiKey"},
|
|
72
|
+
{"name": "URLScan", "desc": "URL analysis", "cat": "Security", "url": "https://urlscan.io/docs/api/", "auth": "apiKey"},
|
|
73
|
+
{"name": "Shodan", "desc": "Internet scanner", "cat": "Security", "url": "https://developer.shodan.io/", "auth": "apiKey"},
|
|
74
|
+
{"name": "Censys", "desc": "Internet data", "cat": "Security", "url": "https://censys.io/api", "auth": "apiKey"},
|
|
75
|
+
{"name": "AlienVault OTX", "desc": "Threat intelligence", "cat": "Security", "url": "https://otx.alienvault.com/api", "auth": "apiKey"},
|
|
76
|
+
{"name": "GreyNoise", "desc": "Threat intelligence", "cat": "Security", "url": "https://docs.greynoise.io/", "auth": "apiKey"},
|
|
77
|
+
|
|
78
|
+
# Language & Translation
|
|
79
|
+
{"name": "LibreTranslate", "desc": "Open source translation", "cat": "Language", "url": "https://libretranslate.com/docs/", "auth": "apiKey"},
|
|
80
|
+
{"name": "Lingva", "desc": "Translation proxy", "cat": "Language", "url": "https://github.com/thedaviddelta/lingva-translate", "auth": "None"},
|
|
81
|
+
{"name": "MyMemory", "desc": "Translation memory", "cat": "Language", "url": "https://mymemory.translated.net/doc/spec.php", "auth": "None"},
|
|
82
|
+
{"name": "Lilt", "desc": "AI translation", "cat": "Language", "url": "https://lilt.com/docs/api", "auth": "apiKey"},
|
|
83
|
+
{"name": "Smartling", "desc": "Translation platform", "cat": "Language", "url": "https://help.smartling.com/hc/en-us/sections/360005019093-API", "auth": "apiKey"},
|
|
84
|
+
{"name": "Crowdin", "desc": "Localization platform", "cat": "Language", "url": "https://developer.crowdin.com/", "auth": "apiKey"},
|
|
85
|
+
{"name": "Lokalise", "desc": "Localization platform", "cat": "Language", "url": "https://developers.lokalise.com/", "auth": "apiKey"},
|
|
86
|
+
{"name": "Phrase", "desc": "Localization", "cat": "Language", "url": "https://developers.phrase.com/", "auth": "apiKey"},
|
|
87
|
+
{"name": "Transifex", "desc": "Localization platform", "cat": "Language", "url": "https://developers.transifex.com/", "auth": "apiKey"},
|
|
88
|
+
{"name": "POEditor", "desc": "Localization platform", "cat": "Language", "url": "https://poeditor.com/docs/api", "auth": "apiKey"},
|
|
89
|
+
|
|
90
|
+
# SEO & Web Analytics
|
|
91
|
+
{"name": "Ahrefs", "desc": "SEO tools", "cat": "Marketing", "url": "https://ahrefs.com/api/documentation", "auth": "apiKey"},
|
|
92
|
+
{"name": "Moz", "desc": "SEO software", "cat": "Marketing", "url": "https://moz.com/products/api", "auth": "apiKey"},
|
|
93
|
+
{"name": "Semrush", "desc": "Marketing platform", "cat": "Marketing", "url": "https://www.semrush.com/api-documentation/", "auth": "apiKey"},
|
|
94
|
+
{"name": "Majestic", "desc": "Backlink analysis", "cat": "Marketing", "url": "https://developer-support.majestic.com/", "auth": "apiKey"},
|
|
95
|
+
{"name": "Screaming Frog", "desc": "SEO spider", "cat": "Marketing", "url": "https://www.screamingfrog.co.uk/seo-spider/api/", "auth": "apiKey"},
|
|
96
|
+
{"name": "SpyFu", "desc": "Competitor research", "cat": "Marketing", "url": "https://www.spyfu.com/api", "auth": "apiKey"},
|
|
97
|
+
{"name": "SimilarWeb", "desc": "Web analytics", "cat": "Analytics", "url": "https://developer.similarweb.com/", "auth": "apiKey"},
|
|
98
|
+
{"name": "BuiltWith", "desc": "Technology lookup", "cat": "Marketing", "url": "https://api.builtwith.com/", "auth": "apiKey"},
|
|
99
|
+
{"name": "Wappalyzer", "desc": "Technology profiler", "cat": "Tools", "url": "https://www.wappalyzer.com/docs/api/", "auth": "apiKey"},
|
|
100
|
+
{"name": "PageSpeed Insights", "desc": "Performance testing", "cat": "Tools", "url": "https://developers.google.com/speed/docs/insights/v5/get-started", "auth": "apiKey"},
|
|
101
|
+
|
|
102
|
+
# Events & Ticketing
|
|
103
|
+
{"name": "Eventbrite", "desc": "Event management", "cat": "Events", "url": "https://www.eventbrite.com/platform/docs/", "auth": "OAuth"},
|
|
104
|
+
{"name": "Ticketmaster", "desc": "Ticketing platform", "cat": "Events", "url": "https://developer.ticketmaster.com/", "auth": "apiKey"},
|
|
105
|
+
{"name": "Meetup", "desc": "Events platform", "cat": "Events", "url": "https://www.meetup.com/api/", "auth": "OAuth"},
|
|
106
|
+
{"name": "Luma", "desc": "Event hosting", "cat": "Events", "url": "https://docs.lu.ma/", "auth": "apiKey"},
|
|
107
|
+
{"name": "Splash", "desc": "Event marketing", "cat": "Events", "url": "https://api.splashthat.com/", "auth": "apiKey"},
|
|
108
|
+
{"name": "Bizzabo", "desc": "Event software", "cat": "Events", "url": "https://developers.bizzabo.com/", "auth": "apiKey"},
|
|
109
|
+
{"name": "Hopin", "desc": "Virtual events", "cat": "Events", "url": "https://hopin.com/developers", "auth": "apiKey"},
|
|
110
|
+
{"name": "Zoom Events", "desc": "Event platform", "cat": "Events", "url": "https://marketplace.zoom.us/docs/api-reference/events/", "auth": "OAuth"},
|
|
111
|
+
{"name": "On24", "desc": "Webinar platform", "cat": "Events", "url": "https://developer.on24.com/", "auth": "apiKey"},
|
|
112
|
+
{"name": "Goldcast", "desc": "B2B events", "cat": "Events", "url": "https://www.goldcast.io/api", "auth": "apiKey"},
|
|
113
|
+
|
|
114
|
+
# Podcasts & Audio
|
|
115
|
+
{"name": "Spotify for Podcasters", "desc": "Podcast analytics", "cat": "Music", "url": "https://developers.spotify.com/documentation/web-api/", "auth": "OAuth"},
|
|
116
|
+
{"name": "Podchaser", "desc": "Podcast database", "cat": "Music", "url": "https://api-docs.podchaser.com/", "auth": "apiKey"},
|
|
117
|
+
{"name": "Listen Notes", "desc": "Podcast search", "cat": "Music", "url": "https://www.listennotes.com/api/docs/", "auth": "apiKey"},
|
|
118
|
+
{"name": "Transistor", "desc": "Podcast hosting", "cat": "Music", "url": "https://developers.transistor.fm/", "auth": "apiKey"},
|
|
119
|
+
{"name": "Buzzsprout", "desc": "Podcast hosting", "cat": "Music", "url": "https://www.buzzsprout.com/api", "auth": "apiKey"},
|
|
120
|
+
{"name": "Anchor", "desc": "Podcast platform", "cat": "Music", "url": "https://anchor.fm/api", "auth": "OAuth"},
|
|
121
|
+
{"name": "Podbean", "desc": "Podcast hosting", "cat": "Music", "url": "https://developers.podbean.com/", "auth": "OAuth"},
|
|
122
|
+
{"name": "Spreaker", "desc": "Podcast hosting", "cat": "Music", "url": "https://developers.spreaker.com/", "auth": "OAuth"},
|
|
123
|
+
{"name": "Audioboom", "desc": "Podcast network", "cat": "Music", "url": "https://audioboom.com/api", "auth": "apiKey"},
|
|
124
|
+
{"name": "Libsyn", "desc": "Podcast hosting", "cat": "Music", "url": "https://api.libsyn.com/", "auth": "apiKey"},
|
|
125
|
+
|
|
126
|
+
# SMS & Voice (more)
|
|
127
|
+
{"name": "Clicksend", "desc": "SMS gateway", "cat": "Communication", "url": "https://developers.clicksend.com/", "auth": "apiKey"},
|
|
128
|
+
{"name": "Textmagic", "desc": "SMS marketing", "cat": "Communication", "url": "https://www.textmagic.com/docs/api/", "auth": "apiKey"},
|
|
129
|
+
{"name": "Messente", "desc": "SMS API", "cat": "Communication", "url": "https://messente.com/documentation/", "auth": "apiKey"},
|
|
130
|
+
{"name": "Infobip", "desc": "Communications platform", "cat": "Communication", "url": "https://www.infobip.com/docs/api", "auth": "apiKey"},
|
|
131
|
+
{"name": "Kaleyra", "desc": "CPaaS platform", "cat": "Communication", "url": "https://developers.kaleyra.com/", "auth": "apiKey"},
|
|
132
|
+
{"name": "Routee", "desc": "Messaging platform", "cat": "Communication", "url": "https://docs.routee.net/", "auth": "apiKey"},
|
|
133
|
+
{"name": "Smsapi", "desc": "SMS gateway", "cat": "Communication", "url": "https://www.smsapi.com/docs/", "auth": "apiKey"},
|
|
134
|
+
{"name": "Bulksms", "desc": "SMS gateway", "cat": "Communication", "url": "https://www.bulksms.com/developer/", "auth": "apiKey"},
|
|
135
|
+
{"name": "Textlocal", "desc": "SMS service", "cat": "Communication", "url": "https://api.txtlocal.com/docs/", "auth": "apiKey"},
|
|
136
|
+
{"name": "Tatango", "desc": "SMS marketing", "cat": "Communication", "url": "https://www.tatango.com/api/", "auth": "apiKey"},
|
|
137
|
+
|
|
138
|
+
# Location & Geospatial
|
|
139
|
+
{"name": "Mapbox", "desc": "Maps platform", "cat": "Maps", "url": "https://docs.mapbox.com/api/", "auth": "apiKey"},
|
|
140
|
+
{"name": "OpenStreetMap", "desc": "Open maps", "cat": "Maps", "url": "https://wiki.openstreetmap.org/wiki/API", "auth": "None"},
|
|
141
|
+
{"name": "TomTom", "desc": "Maps and navigation", "cat": "Maps", "url": "https://developer.tomtom.com/", "auth": "apiKey"},
|
|
142
|
+
{"name": "MapQuest", "desc": "Maps and routing", "cat": "Maps", "url": "https://developer.mapquest.com/documentation/", "auth": "apiKey"},
|
|
143
|
+
{"name": "Opencage", "desc": "Geocoding", "cat": "Maps", "url": "https://opencagedata.com/api", "auth": "apiKey"},
|
|
144
|
+
{"name": "PositionStack", "desc": "Geocoding", "cat": "Maps", "url": "https://positionstack.com/documentation", "auth": "apiKey"},
|
|
145
|
+
{"name": "What3words", "desc": "Location system", "cat": "Maps", "url": "https://developer.what3words.com/", "auth": "apiKey"},
|
|
146
|
+
{"name": "Radar", "desc": "Location infrastructure", "cat": "Maps", "url": "https://radar.com/documentation/api", "auth": "apiKey"},
|
|
147
|
+
{"name": "Precisely", "desc": "Location intelligence", "cat": "Maps", "url": "https://developer.precisely.com/", "auth": "apiKey"},
|
|
148
|
+
{"name": "Smarty", "desc": "Address validation", "cat": "Tools", "url": "https://www.smarty.com/docs/", "auth": "apiKey"},
|
|
149
|
+
|
|
150
|
+
# Blockchain & Web3
|
|
151
|
+
{"name": "Alchemy", "desc": "Blockchain infrastructure", "cat": "Blockchain", "url": "https://docs.alchemy.com/", "auth": "apiKey"},
|
|
152
|
+
{"name": "Infura", "desc": "Ethereum API", "cat": "Blockchain", "url": "https://docs.infura.io/", "auth": "apiKey"},
|
|
153
|
+
{"name": "QuickNode", "desc": "Blockchain nodes", "cat": "Blockchain", "url": "https://www.quicknode.com/docs/", "auth": "apiKey"},
|
|
154
|
+
{"name": "Moralis", "desc": "Web3 API", "cat": "Blockchain", "url": "https://docs.moralis.io/", "auth": "apiKey"},
|
|
155
|
+
{"name": "Ankr", "desc": "Web3 infrastructure", "cat": "Blockchain", "url": "https://www.ankr.com/docs/", "auth": "apiKey"},
|
|
156
|
+
{"name": "Chainlink", "desc": "Oracle network", "cat": "Blockchain", "url": "https://docs.chain.link/", "auth": "None"},
|
|
157
|
+
{"name": "The Graph", "desc": "Blockchain indexing", "cat": "Blockchain", "url": "https://thegraph.com/docs/", "auth": "apiKey"},
|
|
158
|
+
{"name": "Etherscan", "desc": "Ethereum explorer", "cat": "Blockchain", "url": "https://docs.etherscan.io/", "auth": "apiKey"},
|
|
159
|
+
{"name": "OpenSea", "desc": "NFT marketplace", "cat": "Blockchain", "url": "https://docs.opensea.io/reference/api-overview", "auth": "apiKey"},
|
|
160
|
+
{"name": "NFTPort", "desc": "NFT API", "cat": "Blockchain", "url": "https://docs.nftport.xyz/", "auth": "apiKey"},
|
|
161
|
+
|
|
162
|
+
# No-code / Low-code
|
|
163
|
+
{"name": "Bubble", "desc": "No-code platform", "cat": "Development", "url": "https://manual.bubble.io/", "auth": "apiKey"},
|
|
164
|
+
{"name": "Webflow", "desc": "Web design platform", "cat": "Development", "url": "https://developers.webflow.com/", "auth": "OAuth"},
|
|
165
|
+
{"name": "Airtable", "desc": "Database platform", "cat": "Database", "url": "https://airtable.com/developers/web/api/introduction", "auth": "apiKey"},
|
|
166
|
+
{"name": "Notion API", "desc": "Workspace platform", "cat": "Productivity", "url": "https://developers.notion.com/", "auth": "OAuth"},
|
|
167
|
+
{"name": "Coda", "desc": "Document platform", "cat": "Productivity", "url": "https://coda.io/developers/apis/v1", "auth": "apiKey"},
|
|
168
|
+
{"name": "Retool", "desc": "Internal tools", "cat": "Development", "url": "https://docs.retool.com/", "auth": "apiKey"},
|
|
169
|
+
{"name": "Appsmith", "desc": "Internal tools", "cat": "Development", "url": "https://docs.appsmith.com/", "auth": "apiKey"},
|
|
170
|
+
{"name": "Budibase", "desc": "Internal tools", "cat": "Development", "url": "https://docs.budibase.com/", "auth": "apiKey"},
|
|
171
|
+
{"name": "Tooljet", "desc": "Low-code platform", "cat": "Development", "url": "https://docs.tooljet.com/", "auth": "apiKey"},
|
|
172
|
+
{"name": "Noloco", "desc": "Internal tools", "cat": "Development", "url": "https://docs.noloco.io/", "auth": "apiKey"},
|
|
173
|
+
|
|
174
|
+
# Business Intelligence
|
|
175
|
+
{"name": "Metabase", "desc": "Business analytics", "cat": "Analytics", "url": "https://www.metabase.com/docs/latest/api-documentation", "auth": "apiKey"},
|
|
176
|
+
{"name": "Tableau", "desc": "Data visualization", "cat": "Analytics", "url": "https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm", "auth": "OAuth"},
|
|
177
|
+
{"name": "Looker", "desc": "Business intelligence", "cat": "Analytics", "url": "https://cloud.google.com/looker/docs/api", "auth": "OAuth"},
|
|
178
|
+
{"name": "PowerBI", "desc": "Business analytics", "cat": "Analytics", "url": "https://docs.microsoft.com/en-us/rest/api/power-bi/", "auth": "OAuth"},
|
|
179
|
+
{"name": "Mode", "desc": "Analytics platform", "cat": "Analytics", "url": "https://mode.com/developer/api-reference/", "auth": "apiKey"},
|
|
180
|
+
{"name": "Domo", "desc": "Business cloud", "cat": "Analytics", "url": "https://developer.domo.com/", "auth": "OAuth"},
|
|
181
|
+
{"name": "Sisense", "desc": "Analytics platform", "cat": "Analytics", "url": "https://sisense.dev/", "auth": "apiKey"},
|
|
182
|
+
{"name": "Preset", "desc": "Data exploration", "cat": "Analytics", "url": "https://preset.io/api/", "auth": "apiKey"},
|
|
183
|
+
{"name": "Redash", "desc": "Data visualization", "cat": "Analytics", "url": "https://redash.io/help/user-guide/integrations-and-api/api", "auth": "apiKey"},
|
|
184
|
+
{"name": "Observable", "desc": "Data exploration", "cat": "Analytics", "url": "https://observablehq.com/documentation/api/", "auth": "apiKey"},
|
|
185
|
+
|
|
186
|
+
# Customer Data Platforms
|
|
187
|
+
{"name": "Segment", "desc": "Customer data platform", "cat": "Analytics", "url": "https://segment.com/docs/connections/sources/catalog/", "auth": "apiKey"},
|
|
188
|
+
{"name": "mParticle", "desc": "Customer data platform", "cat": "Analytics", "url": "https://docs.mparticle.com/developers/", "auth": "apiKey"},
|
|
189
|
+
{"name": "RudderStack", "desc": "Customer data platform", "cat": "Analytics", "url": "https://www.rudderstack.com/docs/", "auth": "apiKey"},
|
|
190
|
+
{"name": "Amplitude", "desc": "Product analytics", "cat": "Analytics", "url": "https://www.docs.developers.amplitude.com/", "auth": "apiKey"},
|
|
191
|
+
{"name": "Heap", "desc": "Digital insights", "cat": "Analytics", "url": "https://developers.heap.io/", "auth": "apiKey"},
|
|
192
|
+
{"name": "PostHog", "desc": "Product analytics", "cat": "Analytics", "url": "https://posthog.com/docs/api", "auth": "apiKey"},
|
|
193
|
+
{"name": "Mixpanel API", "desc": "Product analytics", "cat": "Analytics", "url": "https://developer.mixpanel.com/reference/", "auth": "apiKey"},
|
|
194
|
+
{"name": "FullStory", "desc": "Digital experience", "cat": "Analytics", "url": "https://developer.fullstory.com/", "auth": "apiKey"},
|
|
195
|
+
{"name": "Hotjar", "desc": "Behavior analytics", "cat": "Analytics", "url": "https://help.hotjar.com/hc/en-us/articles/115011789688-Hotjar-API", "auth": "apiKey"},
|
|
196
|
+
{"name": "Pendo", "desc": "Product experience", "cat": "Analytics", "url": "https://engageapi.pendo.io/", "auth": "apiKey"},
|
|
197
|
+
|
|
198
|
+
# Feature Flags & Experimentation
|
|
199
|
+
{"name": "LaunchDarkly", "desc": "Feature management", "cat": "Development", "url": "https://apidocs.launchdarkly.com/", "auth": "apiKey"},
|
|
200
|
+
{"name": "Split", "desc": "Feature delivery", "cat": "Development", "url": "https://help.split.io/hc/en-us/articles/360020564931-REST-API", "auth": "apiKey"},
|
|
201
|
+
{"name": "Optimizely", "desc": "Experimentation", "cat": "Development", "url": "https://docs.developers.optimizely.com/", "auth": "apiKey"},
|
|
202
|
+
{"name": "VWO", "desc": "A/B testing", "cat": "Development", "url": "https://developers.vwo.com/", "auth": "apiKey"},
|
|
203
|
+
{"name": "AB Tasty", "desc": "Experience optimization", "cat": "Development", "url": "https://developers.abtasty.com/", "auth": "apiKey"},
|
|
204
|
+
{"name": "Kameleoon", "desc": "Feature experimentation", "cat": "Development", "url": "https://developers.kameleoon.com/", "auth": "apiKey"},
|
|
205
|
+
{"name": "Statsig", "desc": "Feature management", "cat": "Development", "url": "https://docs.statsig.com/", "auth": "apiKey"},
|
|
206
|
+
{"name": "Flagsmith", "desc": "Feature flags", "cat": "Development", "url": "https://docs.flagsmith.com/", "auth": "apiKey"},
|
|
207
|
+
{"name": "GrowthBook", "desc": "Feature flags", "cat": "Development", "url": "https://docs.growthbook.io/", "auth": "apiKey"},
|
|
208
|
+
{"name": "Unleash", "desc": "Feature toggles", "cat": "Development", "url": "https://docs.getunleash.io/reference/api/", "auth": "apiKey"},
|
|
209
|
+
|
|
210
|
+
# Data Integration / ETL
|
|
211
|
+
{"name": "Airbyte", "desc": "Data integration", "cat": "Data", "url": "https://docs.airbyte.com/api-documentation/", "auth": "apiKey"},
|
|
212
|
+
{"name": "Fivetran", "desc": "Data pipelines", "cat": "Data", "url": "https://fivetran.com/docs/rest-api", "auth": "apiKey"},
|
|
213
|
+
{"name": "Stitch", "desc": "ETL platform", "cat": "Data", "url": "https://www.stitchdata.com/docs/developers", "auth": "apiKey"},
|
|
214
|
+
{"name": "dbt Cloud", "desc": "Data transformation", "cat": "Data", "url": "https://docs.getdbt.com/dbt-cloud/api-v2", "auth": "apiKey"},
|
|
215
|
+
{"name": "Hevo", "desc": "Data pipeline", "cat": "Data", "url": "https://docs.hevodata.com/", "auth": "apiKey"},
|
|
216
|
+
{"name": "Matillion", "desc": "Data integration", "cat": "Data", "url": "https://documentation.matillion.com/", "auth": "apiKey"},
|
|
217
|
+
{"name": "Hightouch", "desc": "Reverse ETL", "cat": "Data", "url": "https://hightouch.com/docs/developer-tools/api", "auth": "apiKey"},
|
|
218
|
+
{"name": "Census", "desc": "Reverse ETL", "cat": "Data", "url": "https://docs.getcensus.com/", "auth": "apiKey"},
|
|
219
|
+
{"name": "Polytomic", "desc": "Data sync", "cat": "Data", "url": "https://apidocs.polytomic.com/", "auth": "apiKey"},
|
|
220
|
+
{"name": "Grouparoo", "desc": "Data sync", "cat": "Data", "url": "https://www.grouparoo.com/docs/", "auth": "apiKey"},
|
|
221
|
+
|
|
222
|
+
# Knowledge Management
|
|
223
|
+
{"name": "Confluence", "desc": "Team workspace", "cat": "Productivity", "url": "https://developer.atlassian.com/cloud/confluence/rest/", "auth": "OAuth"},
|
|
224
|
+
{"name": "Guru", "desc": "Knowledge management", "cat": "Productivity", "url": "https://developer.getguru.com/", "auth": "apiKey"},
|
|
225
|
+
{"name": "Tettra", "desc": "Knowledge base", "cat": "Productivity", "url": "https://tettra.com/api/", "auth": "apiKey"},
|
|
226
|
+
{"name": "Slite", "desc": "Team knowledge", "cat": "Productivity", "url": "https://developers.slite.com/", "auth": "apiKey"},
|
|
227
|
+
{"name": "Nuclino", "desc": "Knowledge wiki", "cat": "Productivity", "url": "https://help.nuclino.com/d3f3b5cb-api", "auth": "apiKey"},
|
|
228
|
+
{"name": "Almanac", "desc": "Document platform", "cat": "Productivity", "url": "https://almanac.io/api/", "auth": "apiKey"},
|
|
229
|
+
{"name": "Swimm", "desc": "Code documentation", "cat": "Development", "url": "https://docs.swimm.io/", "auth": "apiKey"},
|
|
230
|
+
{"name": "GitBook", "desc": "Documentation", "cat": "Documentation", "url": "https://developer.gitbook.com/", "auth": "apiKey"},
|
|
231
|
+
{"name": "ReadMe", "desc": "Developer docs", "cat": "Documentation", "url": "https://docs.readme.com/reference/intro", "auth": "apiKey"},
|
|
232
|
+
{"name": "Mintlify", "desc": "Documentation", "cat": "Documentation", "url": "https://mintlify.com/docs/api-reference/", "auth": "apiKey"},
|
|
233
|
+
|
|
234
|
+
# Project Management (more)
|
|
235
|
+
{"name": "Jira", "desc": "Project tracking", "cat": "Productivity", "url": "https://developer.atlassian.com/cloud/jira/platform/rest/v3/", "auth": "OAuth"},
|
|
236
|
+
{"name": "Linear", "desc": "Issue tracking", "cat": "Productivity", "url": "https://developers.linear.app/", "auth": "OAuth"},
|
|
237
|
+
{"name": "Height", "desc": "Project management", "cat": "Productivity", "url": "https://height.notion.site/API-9aa0e18a00824b23a1a77f2fdb2ef898", "auth": "apiKey"},
|
|
238
|
+
{"name": "Shortcut", "desc": "Project management", "cat": "Productivity", "url": "https://developer.shortcut.com/api/rest/v3", "auth": "apiKey"},
|
|
239
|
+
{"name": "Basecamp", "desc": "Project management", "cat": "Productivity", "url": "https://github.com/basecamp/bc3-api", "auth": "OAuth"},
|
|
240
|
+
{"name": "Teamwork", "desc": "Project management", "cat": "Productivity", "url": "https://developer.teamwork.com/", "auth": "apiKey"},
|
|
241
|
+
{"name": "Wrike", "desc": "Work management", "cat": "Productivity", "url": "https://developers.wrike.com/", "auth": "OAuth"},
|
|
242
|
+
{"name": "Smartsheet", "desc": "Work execution", "cat": "Productivity", "url": "https://smartsheet-platform.github.io/api-docs/", "auth": "apiKey"},
|
|
243
|
+
{"name": "Hive", "desc": "Project management", "cat": "Productivity", "url": "https://developers.hive.com/", "auth": "apiKey"},
|
|
244
|
+
{"name": "Nifty", "desc": "Project management", "cat": "Productivity", "url": "https://niftypm.com/api/", "auth": "apiKey"},
|
|
245
|
+
|
|
246
|
+
# Additional misc APIs
|
|
247
|
+
{"name": "Lorem Ipsum", "desc": "Placeholder text", "cat": "Tools", "url": "https://loripsum.net/", "auth": "None"},
|
|
248
|
+
{"name": "Bacon Ipsum", "desc": "Meaty placeholder text", "cat": "Entertainment", "url": "https://baconipsum.com/json-api/", "auth": "None"},
|
|
249
|
+
{"name": "Hipster Ipsum", "desc": "Hipster placeholder", "cat": "Entertainment", "url": "https://hipsum.co/api/", "auth": "None"},
|
|
250
|
+
{"name": "Cupcake Ipsum", "desc": "Sweet placeholder", "cat": "Entertainment", "url": "http://www.cupcakeipsum.com/", "auth": "None"},
|
|
251
|
+
{"name": "Cheese Ipsum", "desc": "Cheesy placeholder", "cat": "Entertainment", "url": "http://www.cheeseipsum.co.uk/", "auth": "None"},
|
|
252
|
+
{"name": "Pirate Ipsum", "desc": "Pirate placeholder", "cat": "Entertainment", "url": "https://pirateipsum.me/api", "auth": "None"},
|
|
253
|
+
{"name": "Zombie Ipsum", "desc": "Zombie placeholder", "cat": "Entertainment", "url": "http://www.zombieipsum.com/", "auth": "None"},
|
|
254
|
+
{"name": "Samuel L Ipsum", "desc": "Samuel L Jackson text", "cat": "Entertainment", "url": "https://slipsum.com/", "auth": "None"},
|
|
255
|
+
{"name": "Office Ipsum", "desc": "Office jargon", "cat": "Entertainment", "url": "http://officeipsum.com/", "auth": "None"},
|
|
256
|
+
{"name": "Cat Ipsum", "desc": "Cat-themed placeholder", "cat": "Entertainment", "url": "http://www.catipsum.com/", "auth": "None"},
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
# Convert and dedupe
|
|
260
|
+
new_apis = []
|
|
261
|
+
seen_ids = set()
|
|
262
|
+
|
|
263
|
+
for api in batch3_apis:
|
|
264
|
+
api_id = make_id(api.get('name', ''))
|
|
265
|
+
|
|
266
|
+
if api_id in existing_ids or api_id in seen_ids or not api_id:
|
|
267
|
+
continue
|
|
268
|
+
|
|
269
|
+
seen_ids.add(api_id)
|
|
270
|
+
|
|
271
|
+
entry = {
|
|
272
|
+
"id": api_id,
|
|
273
|
+
"name": api.get('name', api_id),
|
|
274
|
+
"description": api.get('desc', ''),
|
|
275
|
+
"category": api.get('cat', 'Uncategorized'),
|
|
276
|
+
"link": api.get('url', ''),
|
|
277
|
+
"auth": api.get('auth', 'None')
|
|
278
|
+
}
|
|
279
|
+
new_apis.append(entry)
|
|
280
|
+
|
|
281
|
+
print(f"New unique APIs in batch 3: {len(new_apis)}")
|
|
282
|
+
|
|
283
|
+
# Save batch 3
|
|
284
|
+
output_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/night-expansion-02-26-06-batch3.json")
|
|
285
|
+
with open(output_file, 'w') as f:
|
|
286
|
+
json.dump(new_apis, f, indent=2)
|
|
287
|
+
|
|
288
|
+
print(f"Saved {len(new_apis)} APIs to {output_file}")
|
|
289
|
+
|
|
290
|
+
# Update combined file
|
|
291
|
+
with open(combined_file) as f:
|
|
292
|
+
combined_apis = json.load(f)
|
|
293
|
+
|
|
294
|
+
combined_apis.extend(new_apis)
|
|
295
|
+
|
|
296
|
+
with open(combined_file, 'w') as f:
|
|
297
|
+
json.dump(combined_apis, f, indent=2)
|
|
298
|
+
|
|
299
|
+
print(f"Updated combined file: {len(combined_apis)} total APIs")
|