Saltar al contenido
NuevoVer cómo

Guía rápida de la API de FirstSales

Genera una clave de API y haz tus primeras llamadas — crea contactos, inscríbelos en campañas y extrae respuestas de la bandeja de entrada vía la API REST.

  1. Genera una clave de API para desarrolladores

    En la app ve a Settings → API y crea una Developer API key. Define sus alcances (scopes) y su nivel de acceso (solo lectura o lectura-escritura) al mínimo que necesite la integración. El secreto se muestra una sola vez: cópialo de inmediato en un gestor de secretos; la app solo guarda una forma redactada.

    Revoca y regenera en la misma página si alguna vez se filtra una clave.

  2. Verifica la identidad con whoami

    La URL base es https://api.app.firstsales.io. La autenticación es un token Bearer. Empieza siempre confirmando que la clave resuelve a la organización y el espacio de trabajo que esperas: GET /api/v1/whoami:

    curl https://api.app.firstsales.io/api/v1/whoami \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
  3. Encuentra los IDs de tu organización y espacio de trabajo

    Cada recurso está delimitado a una organización y un espacio de trabajo, así que la mayoría de las rutas se ven como /api/v1/organizations/{orgId}/workspaces/{workspaceId}/…. Lístalos:

    # Organizations you can access
    curl https://api.app.firstsales.io/api/v1/organizations \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
    
    # Workspaces inside an org
    curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
  4. Crea un contacto (de forma idempotente)

    Haz un POST de un contacto dentro de un espacio de trabajo. Envía un encabezado Idempotency-Key para que una solicitud reintentada nunca cree un duplicado: seguro de repetir tras un fallo de red.

    curl -X POST \
      https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/contacts \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: jane-acme-2026-01" \
      -d '{ "email": "[email protected]", "first_name": "Jane", "company_name": "Acme" }'
  5. Lee las analíticas de una campaña

    Extrae métricas de embudo y de interacción de una campaña para sincronizar los resultados en tu propio reporting: sin hacer scraping del dashboard:

    curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/campaigns/CAMPAIGN_ID/analytics \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
  6. Lee las respuestas desde la bandeja de entrada

    Lista los hilos de la bandeja de entrada para extraer envíos, aperturas, respuestas y rebotes hacia tus sistemas. Los cuerpos de los hilos se redactan en la vista de lista; obtén un solo hilo para el detalle. Así es como enrutas respuestas positivas hacia un CRM mientras los conectores nativos siguen en camino.

    curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/inbox/threads \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
  7. Mantente dentro de la superficie pública

    La API solo expone la superficie pública /api/v1. No llames a rutas privadas de la app, callbacks de proveedores, píxeles de seguimiento, manejadores de baja de suscripción, o rutas cron internas: no forman parte del contrato y se romperán. Si una llamada devuelve unsupported_operation, detente y trátalo como "no disponible vía la API", no como algo que rodear.

    Aplican los códigos de estado estándar: 401 clave inválida/revocada, 422 validación (el body indica el campo), 429 límite de tasa (reduce la frecuencia y reintenta).

Consejos de experto

  • whoami antes de escribir

    Confirma que la clave resuelve a la organización/espacio de trabajo que pretendes antes de cualquier llamada que modifique datos. Una clave con alcance al espacio de trabajo equivocado es la forma más común de escribir datos en el lugar incorrecto.

  • Envía siempre un Idempotency-Key en las creaciones

    Los reintentos de red ocurren. Un Idempotency-Key hace que un POST repetido sea una operación nula en vez de un contacto duplicado o un cobro doble.

  • Guarda la clave una vez, nunca la imprimas

    El secreto se muestra una sola vez y se guarda redactado. Ponlo directo en un gestor de secretos; nunca lo registres en logs, lo subas a un commit, ni lo envíes dentro de un bundle de cliente.

  • Trata unsupported_operation como una parada dura

    Si la API devuelve unsupported_operation, lo que quieres hacer no está en el contrato público. No recurras a rutas privadas de la app para forzarlo: reporta la limitación.

Preguntas frecuentes

¿Dónde consigo una clave de API?

Settings → API. Crea una Developer API key con los alcances y el nivel de acceso que necesitas; se muestra una sola vez, así que cópiala de inmediato. Revoca y regenera en la misma página si queda expuesta.

¿Cuál es la URL base y la autenticación?

URL base https://api.app.firstsales.io; autentica con Authorization: Bearer $FIRSTSALES_API_KEY y envía JSON. Empieza con GET /api/v1/whoami para confirmar el contexto.

¿Por qué las rutas son tan largas?

Los recursos están delimitados a una organización y un espacio de trabajo, así que las rutas son /api/v1/organizations/{orgId}/workspaces/{workspaceId}/…. Obtén los IDs desde /api/v1/organizations y su subrecurso /workspaces (o desde whoami).

¿Cómo evito escrituras duplicadas?

Envía un encabezado Idempotency-Key en las solicitudes de creación. Una solicitud reintentada con la misma clave devuelve el resultado original en vez de crear un segundo registro: segura de repetir tras un timeout.

¿Puedo leer métricas de campaña y respuestas?

Sí: GET …/campaigns/{id}/analytics para embudo/interacción, y GET …/inbox/threads para actividad de conversación. Los cuerpos de los hilos se redactan en la lista; obtén un solo hilo para el detalle completo.

¿Hay una integración de Zapier o CRM en su lugar?

No hay conector de Zapier, y los conectores nativos de CRM (Salesforce, HubSpot, Pipedrive) todavía están en camino. Hasta que se lancen, la API REST (o el CLI) es la forma soportada de integrar y sincronizar.

¿Qué significa unsupported_operation?

La acción solicitada no forma parte del contrato público /api/v1. Detente y repórtalo: no llames a rutas privadas de la app, callbacks, píxeles ni endpoints internos para rodearlo; no están soportados y se romperán.

Desarrollador y CLI

Prospección que sigue cuando te desconectas.Leads, emails, seguimientos y respuestas, resueltos.

Conecta buzones ilimitados y deja que los agentes de IA busquen leads, escriban cada email y hagan seguimiento. O envía tus propias plantillas en modo manual. Desde $29/mes.

$1 por 3 días · Cancela cuando quieras · Sin contrato

Instalar con IA

Tu agente de código configura la CLI y las skills de FirstSales por ti.

Prompt para Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.