Skip to content

Connectors

Connect your app to third-party services like Slack, Resend, and ElevenLabs. Credentials are encrypted and actions are pre-authenticated.

Connectors let you integrate external services into your app without managing raw API keys in code. You set up a connection once, bind it to your project, and call pre-built actions from your app. Credentials are encrypted at rest and never exposed to your frontend code.

Connector Category Auth type What it does
Resend Communications API key Send transactional email, send batch emails, list verified domains
Slack Communications OAuth Post messages, list channels and users, react to messages, read threads
ElevenLabs AI API key Text-to-speech, list available voices, generate sound effects

More connectors are being added regularly.

  1. You create a connection — provide credentials (an API key or sign in via OAuth)
  2. You bind the connection to a project — this authorizes the project to use those credentials
  3. Your app calls actions — the request goes through Proyecta Cloud, which injects the credentials server-side

Your app code never touches the raw API key or OAuth token. The connector system handles authentication, rate limiting, and audit logging.

  1. Open your project in the builder
  2. Go to Settings > Connectors
  3. Click a connector from the catalog (e.g., Resend)
  4. Enter your credentials:
    • API key connectors (Resend, ElevenLabs): Paste your secret key
    • OAuth connectors (Slack): Sign in and authorize access
  5. Give the connection a name (e.g., “Production Resend”)
  6. The connection is tested automatically and marked Active if valid

Your app can read a third-party API directly from the browser without the API key ever reaching the bundle. The credential stays encrypted on the platform; your app only names the connector, the action, and a typed input, and the platform makes the call for you.

import { useConnectorData, useHttpRead } from '@/hooks/useConnector.ts';
// A connector's own read action, as a cached query
const { data, isLoading, error } = useConnectorData('eleven-labs', 'listVoices');
// The generic HTTP-read connector, by endpoint name
const { data: feed } = useHttpRead('news-feed', { limit: 10 });

Two guardrails are worth knowing, because they’re deliberate:

  • Reads only. Only actions the platform has marked browser-safe are reachable — anything else returns 403. Writes (posting to Slack, sending mail, charging a card) are never browser-reachable.
  • You cannot pass a URL or a host. For the generic http-read connector the input is { endpointKey, params }, and the URL behind endpointKey is configured by you, the app owner — not by app code. Responses are cached server-side and rate limited, since third-party keys are quota-metered.

A 404 means the owner hasn’t connected that connector yet — that’s the case worth handling in your UI.

You don’t have to write connector code by hand. The AI builder knows which connectors are bound to your project and can generate the integration for you:

  • "Send a welcome email when users sign up" — uses the Resend connector
  • "Post a Slack message when a new order comes in" — uses the Slack connector
  • "Play audio narration on the article page" — uses the ElevenLabs connector
Action Side effects Description
sendEmail write Send a single transactional email
sendBatch write Send multiple emails at once
listDomains read List verified sending domains
Action Side effects Description
postMessage write Post a message to a channel
listChannels read List channels in the workspace
listUsers read List workspace members
reactToMessage write Add an emoji reaction
getThread read Get replies in a thread
Action Side effects Description
textToSpeech write Convert text to speech audio
listVoices read List available voices
generateSoundEffect write Generate an AI sound effect
Status Meaning
Active Credentials are valid and the connection is ready to use
Broken Credentials expired or were revoked — update them to restore
  • Credentials are encrypted with AES-256-GCM at rest
  • Actions are rate-limited to 1,000 requests per minute per connector per project
  • Every action call is logged with an audit trail (connection, action, duration, status)
  • Connections are scoped to the entire workspace

Can I use the same connection across multiple projects?

Yes. Create the connection once and bind it to any number of projects in the same workspace.

What happens if my API key expires or is revoked?

The connection status changes to Broken. Update the credentials in Settings > Connectors to restore it.

Can I call connector actions from the frontend?

Your app never holds them. Browser-safe read actions are proxied through Proyecta Cloud, which injects the credentials server-side, so the key is never in your bundle. Write actions aren’t reachable from the browser at all.

Can I add my own custom connectors?

Not yet. Custom connector definitions are on the roadmap.

  • Additional connectors (Google, Twilio, SendGrid, and more)
  • Custom connector definitions — bring your own API
  • Webhook ingestion for incoming events from connected services
  • OAuth gateway — keep tokens server-side even for client-initiated flows