API Connectors
API Connectors
API Connectors let your Web-Nothing apps call external REST APIs at runtime -- weather services, payment gateways, CRMs, notification services, and more. You set up the connection once, and your app can use it across multiple actions.
How It Works
- Create a connector with a name, base URL, and credentials
- Build an app that uses external APIs (the AI detects API references in your prompt)
- Bind the connector to the app in the settings panel
- Your app calls the API when users trigger actions (or on a schedule)
Credentials are encrypted at rest and only decrypted at the moment of the API call. They are never exposed in the browser or in any API response.
Creating a Connector
From the Workspace
- Open an app that uses external APIs.
- Click Configure Connectors in the connector bindings panel.
- Click + New Connector and fill in:
| Field | Description |
|---|---|
| Name | A label for this connector (e.g., "WeatherAPI", "Stripe") |
| Base URL | The API's root URL (e.g., https://api.weatherapi.com/v1) |
| Auth Type | How to authenticate (see below) |
| Credentials | Your API key, token, or username/password |
- Click Save. The connector is now available for binding.
Auth Types
| Auth Type | What it does | When to use |
|---|---|---|
| None | No authentication | Public/free APIs |
| API Key | Sends your key in the X-API-Key header | Most API key services (OpenWeather, NewsAPI, etc.) |
| Bearer Token | Sends your token in the Authorization: Bearer header | OAuth APIs (GitHub, Slack, etc.) |
| Basic Auth | Sends base64-encoded username:password | Legacy/simple auth APIs |
Custom Ports
By default, connectors only allow ports 80 and 443. If your API uses a custom port, you can configure up to 5 additional ports in the range 1024-65535.
Binding Connectors to Apps
When the AI generates an app with API-connected actions, each action has a connector slot -- a logical name like "weather_api" or "payment_service". You bind your connector to the slot in the app's settings.
This design means the same app template can be used by different people, each with their own API keys.
Steps
- Open the app in the workspace editor.
- The Connector Bindings panel appears below the app if there are unbound slots.
- For each slot, select one of your connectors from the dropdown.
- Click Save Bindings.
Scheduled API Calls
API call actions can run automatically on a schedule, keeping your app's data fresh without manual intervention.
Supported Intervals
| Schedule | How Often |
|---|---|
| Every 15 minutes | every_15m |
| Every 30 minutes | every_30m |
| Every hour | every_1h |
| Every 6 hours | every_6h |
| Every 24 hours | every_24h |
Scheduled actions are managed in the app settings. Each scheduled action shows its last run time and status (success or error).
Response Mapping
When an API returns data, the platform maps the response to your app's data table fields:
- Explicit mapping -- if the action specifies which API field goes to which app field, that mapping is used first
- Exact name match -- API fields that exactly match your data table field names are mapped automatically
- Fuzzy matching -- remaining fields are matched by normalized names (e.g.,
stargazers_countmatchesstargazersCount)
If no fields match at all, the entire response is stored as a text field for manual inspection.
Array responses automatically create multiple records (up to 30 per call).
Rate Limits
API calls are rate-limited at three levels:
| Level | Scope | Default Limit |
|---|---|---|
| Connector | Per connector | 60 calls / minute |
| App | Per app | 100 calls / hour |
| Platform | Per user | 1,000 calls / day (free tier) |
All three limits must pass before a request is sent. If any limit is exceeded, the call is rejected with a descriptive error.
Security
All outbound API calls go through multiple security layers:
- Credential encryption -- AES-256-GCM encryption at rest. Credentials are only decrypted at call time and never logged or exposed
- SSRF protection -- private IP ranges, loopback addresses, and dangerous ports are blocked. DNS results are verified to be public IPs
- DNS pinning -- resolved IPs are pinned to prevent DNS rebinding attacks
- Redirect blocking -- HTTP redirects are not followed automatically
- Response size limit -- responses over 256 KB are aborted
- Request timeout -- 15-second timeout on all outbound calls
- Header sanitization -- dangerous headers (
host,transfer-encoding, etc.) are silently stripped - Input sanitization -- path traversal attempts (
../) in URL templates are blocked
Limits
| Limit | Value |
|---|---|
| Connectors per user | 20 |
| Custom ports per connector | 5 (range 1024-65535) |
| Response size | 256 KB |
| Request timeout | 15 seconds |
| Records per API response | 30 (for array responses) |
Example: Weather Dashboard
Here is a typical flow for building a weather dashboard:
-
Create a connector:
- Name: "WeatherAPI"
- Base URL:
https://api.weatherapi.com/v1 - Auth: API Key
- Credentials: your WeatherAPI key
-
Create the app with a prompt like:
"Weather dashboard that fetches current conditions for a city, with temperature, humidity, wind speed, and a description"
-
Bind the connector to the
weather_apislot in the app settings. -
Use the app: Click the "Fetch Weather" button (or let the hourly schedule run). The API response is automatically mapped to your data table fields.
Related
| Topic | Document |
|---|---|
| Receiving data from external services | Webhooks |
| Cross-app automation | Workflows |
| Accept payments from your customers | Payments (Stripe) |
| Connecting AI agents to your app | MCP Quick Start |
| Full MCP reference | MCP Integration Guide |
| Full user guide | User Guide |