Contactos
Crear un contacto
Crea un contacto con validación de dominio (email, NIF, lista de campos permitidos).
Ejemplos de petición
curl https://app.filmo.io/api/v1/contacts \
--request POST \
--header "Authorization: Bearer $FILMO_API_KEY" \
--header "Idempotency-Key: $(uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid)" \
--header 'Content-Type: application/json' \
--data '{
"name": "Producciones Delta S.L.",
"contactType": "company",
"role": "client",
"nif": "00000000T",
"email": "hola@example.com",
"phone": "+34 600 000 000",
"addressLine1": "Calle de la Cámara 12",
"city": "Madrid",
"province": "Madrid",
"postcode": "28001",
"country": "ES",
"preferredLanguage": "es-ES",
"currency": "EUR"
}'Generado a partir del esquema
Devuelve el contacto creado en detalle.
Autorizaciones
Clave de API como Bearer, con el permiso de abajo. contacts:write
Cabeceras
Identificador único de la petición, elegido por el cliente (sirve un UUID). Entre 1 y 255 caracteres: una cabecera vacía se rechaza con 400 validation_error, porque el cliente se creería protegido. Repetir la misma clave con el MISMO cuerpo en 24 h devuelve la respuesta guardada sin volver a ejecutar, con la cabecera Idempotent-Replay: true. Con un cuerpo DISTINTO devuelve 422. Es la forma segura de reintentar tras un tiempo de espera de red.
Límites: longitud mín. 1, longitud máx. 255
Ejemplo:"9f1c2f4e-3a5b-4f6d-8e7a-0b1c2d3e4f5a"
Bloqueo optimista: el ETag que leíste del recurso (o *). Si el recurso ha cambiado desde entonces, la escritura se rechaza con 412 precondition_failed antes de hacer nada; léelo de nuevo y reintenta. Sin la cabecera, la escritura siempre se realiza.
Ejemplo:"\"3sT3d9pBvZq4h2N0w8x1YkLmQ7c\""
Cuerpo
Esquema del cuerpo: ContactCreateBody
Nombre del contacto (persona o empresa). Obligatorio.
Límites: longitud mín. 1, longitud máx. 200
Tipo de contacto: person (particular) o company (negocio).
Opciones disponibles: person, company
Rol del contacto: client, provider, lead, debtor, creditor, student, teacher o unspecified.
Opciones disponibles: client, provider, lead, debtor, creditor, student, teacher, unspecified
NIF/CIF o número de identificación fiscal del contacto.
Límites: longitud máx. 20
Nombre comercial, si difiere de la razón social.
Límites: longitud máx. 200
Cargo o puesto de la persona de contacto.
Límites: longitud máx. 200
Dirección de correo electrónico del contacto; se valida el formato.
Límites: longitud máx. 200
Teléfono del contacto.
Límites: longitud máx. 50
Primera línea de la dirección (calle y número).
Límites: longitud máx. 300
Segunda línea de la dirección (piso, puerta, etc.).
Límites: longitud máx. 300
Ciudad de la dirección.
Límites: longitud máx. 200
Provincia o región de la dirección.
Límites: longitud máx. 200
Código postal de la dirección.
Límites: longitud máx. 20
País de la dirección (código o nombre corto).
Límites: longitud máx. 10
Carpeta o agrupación organizativa del contacto.
Límites: longitud máx. 200
Número de contacto asignado por la cuenta (referencia interna).
Límites: longitud máx. 50
Idioma preferido del contacto para comunicaciones y documentos.
Opciones disponibles: es-ES, en-US, fr-FR, ca-ES, de-DE, pl-PL
Moneda por defecto del contacto como código ISO 4217 de 3 letras (p. ej. "EUR").
Límites: longitud mín. 3, longitud máx. 3
Si el contacto está suscrito a comunicaciones de marketing.
Respuesta
Respuesta correcta.
Esquema de la respuesta: ContactDetailDto
Sobre: ContactDetailResponse. meta. solo aparece cuando la operación está obsoleta.
Cabeceras: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · ETag · Idempotent-Replay
El contacto completo, tal como lo devuelve la API.
Mostrar atributos hijosOcultar atributos hijos
Identificador único del contacto.
Nombre del contacto (persona o empresa).
Tipo de contacto: person (particular) o company (negocio).
Opciones disponibles: person, company
Rol del contacto: client, provider, lead, debtor, creditor, student, teacher o unspecified.
Opciones disponibles: client, provider, lead, debtor, creditor, student, teacher, unspecified
Estado del contacto: active (operativo), inactive (desactivado) o archived (cerrado, conservado como histórico).
Opciones disponibles: active, inactive, archived
NIF/CIF o número de identificación fiscal; null si no se ha registrado.
Nombre comercial; null si coincide con el nombre o no consta.
Cargo o puesto de la persona de contacto; null si no está registrado.
Número de contacto asignado por la cuenta (referencia interna); null si no consta.
Lista de direcciones de correo electrónico del contacto.
Mostrar atributos hijosOcultar atributos hijos
Identificador interno del correo electrónico dentro del contacto.
Etiqueta descriptiva del email; null si no tiene.
Dirección de email.
Si este es el email principal del contacto.
Email de facturación dedicado; null significa que se usa el email principal.
Lista de teléfonos del contacto.
Mostrar atributos hijosOcultar atributos hijos
Identificador interno del teléfono dentro del contacto.
Etiqueta descriptiva del teléfono; null si no tiene.
Número de teléfono.
Prefijo telefónico internacional del país (p. ej. "+34"); null si no consta.
Si este es el teléfono principal del contacto.
Lista de sitios web del contacto.
Mostrar atributos hijosOcultar atributos hijos
Identificador interno del sitio web dentro del contacto.
Etiqueta descriptiva del sitio web; null si no tiene.
URL del sitio web.
Lista de direcciones del contacto.
Mostrar atributos hijosOcultar atributos hijos
Identificador interno de la dirección dentro del contacto.
Etiqueta descriptiva de la dirección; null si no tiene.
Primera línea de la dirección; null si no consta.
Segunda línea de la dirección; null si no consta.
Ciudad; null si no consta.
Provincia o región; null si no se ha registrado.
Código postal; null si no se ha registrado.
País; null si no consta.
Si esta es la dirección principal del contacto.
Carpeta o agrupación organizativa; null si el contacto no está clasificado.
Porcentaje de descuento general del contacto (0-100); null si no hay descuento configurado.
Idioma preferido del contacto; null si no se ha registrado.
Moneda por defecto del contacto como código ISO 4217; null si no consta.
Método de pago preferido del contacto; null si no está configurado.
Mostrar atributos hijosOcultar atributos hijos
Tipo de método de pago: bank_transfer, card, cash, sepa_direct_debit u other.
Opciones disponibles: bank_transfer, card, cash, other, sepa_direct_debit
Detalle en texto libre cuando el tipo es "other" (por ejemplo, un método registrado antes de configurarse); null en caso contrario.
Días del mes en que el contacto hace pagos; null si no está configurado.
Días de vencimiento por defecto de las facturas del contacto; null si no está configurado.
Si el contacto está suscrito a comunicaciones de marketing.
Si el contacto tiene acceso a la app.
Valores de los campos personalizados por identificador de campo personalizado; las definiciones están en /api.
Fecha de creación en ISO 8601 con desplazamiento.
Fecha de la última actualización en ISO 8601 con desplazamiento.
Información adicional sobre la respuesta.
Mostrar atributos hijosOcultar atributos hijos
Avisos del ciclo de vida; solo aparecen cuando la operación está obsoleta.
Mostrar atributos hijosOcultar atributos hijos
Código de aviso estable.
Opciones disponibles: deprecated
Para personas: qué está obsoleto, hasta cuándo y qué usar.
Día (YYYY-MM-DD) en que la operación deja de estar disponible.
operationId de la operación que hay que usar en su lugar, o null si no hay ninguna.
Dónde está documentada la deprecación (el changelog).
Petición no válida (validation_error): consulta o cuerpo mal formados. errors[] enumera cada campo erróneo con su código estable.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Fallo de autenticación (unauthorized, api_key_invalid, api_key_revoked, api_key_expired, api_key_owner_inactive, api_key_owner_not_admin).
Cabeceras: X-Request-Id · Content-Language · Idempotent-Replay
No permitido (insufficient_scope: la clave de API no tiene el scope requerido, indicado en requiredScope; forbidden: el propietario de la clave carece del permiso que exige la operación). insufficient_scope se responde antes de que la petición cuente contra el límite de peticiones, así que no lleva cabeceras RateLimit-*; forbidden sí.
Cabeceras: X-Request-Id · Content-Language · Idempotent-Replay
Recurso no encontrado (not_found): no existe o está fuera del alcance de la clave de API.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Conflicto (conflict): el estado actual del recurso impide la operación, ya hay en curso una petición con esa Idempotency-Key, o otra escritura condicional (If-Match) retuvo el recurso durante más de cinco segundos. errors[0]. indica cuál: in_progress y lock_timeout se resuelven reintentando; invalid_state no, porque el estado del recurso prohíbe la operación.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Precondición fallida (precondition_failed): la etiqueta de entidad If-Match no coincide con la representación actual. Lee el recurso de nuevo y reintenta.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Idempotency-Key reutilizada (idempotency_key_reused): la misma clave se usó antes con un cuerpo distinto. Cambia la clave.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Límite de peticiones superado (rate_limited): reintenta tras Retry-After segundos; RateLimit-* indica qué cuota se ha agotado.
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Retry-After · Idempotent-Replay
Error interno (internal_error).
Cabeceras: X-Request-Id · Content-Language · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · Idempotent-Replay
Errores
| Estado | Códigos | Significado |
|---|---|---|
| 400 | validation_error | Consulta o cuerpo mal formados. errors[] enumera cada campo erróneo con su código estable. |
| 404 | not_found | No existe o queda fuera del alcance de la clave de API. |
| 409 | conflict | El estado actual del recurso impide la operación, ya hay en curso una petición con esa Idempotency-Key, u otra escritura condicional (If-Match) retuvo el recurso durante más de cinco segundos. errors[0]. indica cuál: in_progress y lock_timeout se resuelven reintentando; invalid_state no, porque el estado del recurso prohíbe la operación. |
| 412 | precondition_failed | La etiqueta de entidad If-Match no coincide con la representación actual. Vuelve a leer el recurso y reintenta. |
| 422 | idempotency_key_reused | La misma clave se usó antes con un cuerpo distinto. Cambia la clave. |
401, 403, 429, 500 los puede devolver cualquier operación. Errores
Obsolescencia
Esta operación no está obsoleta. Las obsolescencias se anuncian con la cabecera Deprecation y una fecha de retirada. Política de versiones
Relacionado
Páginas relacionadas
Enlace a esta sección: Páginas relacionadasCRM
Contacto
El contacto, tal como lo devuelve la API.
¿Te ha resultado útil esta página?