Connectors
Connect your app to third-party services like Stripe, 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 through the Proyecta SDK. Credentials are encrypted at rest and never exposed to your frontend code.
Available connectors
Section titled “Available connectors”| Connector | Category | Auth type | What it does |
|---|---|---|---|
| Stripe | Payments | API key | Create checkout sessions, manage customers, list products, create prices, issue refunds |
| 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.
How connectors work
Section titled “How connectors work”- You create a connection — provide credentials (an API key or sign in via OAuth)
- You bind the connection to a project — this authorizes the project to use those credentials
- Your app calls actions — the SDK sends the request 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, token refresh (for OAuth), rate limiting, and audit logging.
Set up a connector
Section titled “Set up a connector”- Open your project in the builder
- Go to Dashboard > Integrations
- Click a connector from the catalog (e.g., Stripe)
- Enter your credentials:
- API key connectors (Stripe, Resend, ElevenLabs): Paste your secret key
- OAuth connectors (Slack): Sign in and authorize access
- Give the connection a name (e.g., “Production Stripe”)
- The connection is tested automatically and marked Active if valid
Use a connector in your app
Section titled “Use a connector in your app”Connector actions are called from server-side code (Convex actions) using the Proyecta SDK:
'use node';import { action } from './_generated/server';import { v } from 'convex/values';import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta();
export const createCheckout = action({ args: { priceId: v.string(), quantity: v.number(), }, handler: async (ctx, args) => { const result = await proyecta.connectors.execute('stripe', 'createCheckoutSession', { input: { mode: 'payment', lineItems: [{ priceId: args.priceId, quantity: args.quantity }], successUrl: 'https://myapp.proyecta.live/success', cancelUrl: 'https://myapp.proyecta.live/cancel', }, }); return result.output; // { sessionId, url } },});The execute method returns:
| Field | Description |
|---|---|
output | The action’s return value (shape depends on the action) |
durationMs | Execution time in milliseconds |
invocationId | Audit log entry ID |
Let the AI wire it up
Section titled “Let the AI wire it up”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:
"Accept payments with Stripe"— creates a checkout flow using the Stripe connector"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"Add text-to-speech to the article page"— uses the ElevenLabs connector
Connector actions reference
Section titled “Connector actions reference”Stripe
Section titled “Stripe”| Action | Side effects | Description |
|---|---|---|
createCheckoutSession | write | Create a Stripe Checkout session with line items |
createCustomer | write | Create a new Stripe customer |
listProducts | read | List all products in your Stripe account |
createPrice | write | Create a new price on a product |
refund | write | Refund a charge |
Resend
Section titled “Resend”| 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 |
ElevenLabs
Section titled “ElevenLabs”| Action | Side effects | Description |
|---|---|---|
textToSpeech | write | Convert text to speech audio |
listVoices | read | List available voices |
generateSoundEffect | write | Generate an AI sound effect |
Connection statuses
Section titled “Connection statuses”| Status | Meaning |
|---|---|
| Active | Credentials are valid and the connection is ready to use |
| Broken | Credentials expired or were revoked — update them to restore |
| Revoked | You explicitly disconnected this integration |
Security
Section titled “Security”- 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)
- OAuth tokens are refreshed automatically — your app never sees raw tokens
- Access control: connections can be scoped to the entire workspace or specific users
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 Dashboard > Integrations to restore it.
Can I call connector actions from the frontend?
No. Connector actions must be called from server-side code (Convex actions) to keep credentials secure. The SDK routes through Proyecta Cloud, which injects authentication server-side.
Can I add my own custom connectors?
Not yet. Custom connector definitions are on the roadmap.
Coming soon
Section titled “Coming soon”- 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