Proyectos

Listar proyectos

Devuelve los proyectos que agrupan pedidos y trabajo, paginados por cursor.

GET
/api/v1/projects

Ejemplos de petición

curl https://app.filmo.io/api/v1/projects \
  --header "Authorization: Bearer $FILMO_API_KEY"
{
  "data": [
    {
      "id": "project_9f3a2b",
      "projectNumber": "2026-0001",
      "name": "Example project",
      "color": "Example color",
      "externalReference": "2026-0001",
      "projectTypeId": "project_type_9f3a2b",
      "projectType": {
        "id": "project_type_9f3a2b",
        "name": "Example project type",
        "color": "Example color"
      },
      "contact": {
        "id": "contact_9f3a2b",
        "name": "Example contact"
      },
      "location": {
        "name": "Example location",
        "address": "Example address",
        "city": "Madrid",
        "postalCode": "28001",
        "province": "Madrid",
        "country": "ES",
        "lat": 1,
        "lng": 1
      },
      "startDate": "2026-09-01T08:00:00.000Z",
      "endDate": "2026-09-01T08:00:00.000Z",
      "status": "draft",
      "archived": true,
      "orderIds": [
        "order_9f3a2b"
      ],
      "totalOrders": 1,
      "tags": [
        {
          "id": "tag_9f3a2b",
          "name": "Example tag"
        }
      ],
      "customFields": {
        "example": "example"
      },
      "source": "Example source",
      "createdAt": "2026-09-01T08:00:00.000Z",
      "updatedAt": "2026-09-01T08:00:00.000Z"
    }
  ],
  "pagination": {
    "nextCursor": "eyJvIjoyMH0",
    "hasMore": true,
    "total": 1
  }
}

Generado a partir del esquema

Aislamiento heredado de la cuenta principal: una cuenta de facturación ve también los proyectos de su cuenta principal.

Autorizaciones

Clave de API como Bearer, con el permiso de abajo. projects:read

Parámetros de consulta

limitintegerpredeterminado:50

Tamaño de página (1-500). Por defecto es 50.

Límites: mín. 1, máx. 500

cursorstring

Cursor opaco de la página que se devuelve. Pasa el valor de pagination.nextCursor de la respuesta anterior; trátalo como opaco.

Límites: longitud máx. 200

createdOnstring

La fecha de creación del recurso cae en esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

createdAfterstring

La fecha de creación del recurso es posterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

createdBeforestring

La fecha de creación del recurso es anterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

createdFromstring

La fecha de creación del recurso es igual o posterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

createdTostring

La fecha de creación del recurso es igual o anterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

updatedOnstring

La fecha de última actualización del recurso cae en esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

updatedAfterstring

La fecha de última actualización del recurso es posterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

updatedBeforestring

La fecha de última actualización del recurso es anterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

updatedFromstring

La fecha de última actualización del recurso es igual o posterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

updatedTostring

La fecha de última actualización del recurso es igual o anterior a esta fecha. Una fecha sin hora (YYYY-MM-DD, interpretada en la zona horaria del negocio) o un instante ISO 8601 con desplazamiento.

Límites: patrón ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}(:?\d{2})?))?$

qstring

Búsqueda de texto libre en el nombre y la referencia externa.

Límites: longitud mín. 1, longitud máx. 200

sortstring

Orden: hasta 3 campos separados por comas, cada uno con un "-" inicial para descendente (p. ej. "-updatedAt,name"). Campos ordenables: createdAt, updatedAt, name, projectNumber, startDate, endDate, status. Por defecto, "-createdAt". Los empates se resuelven por id, así que el orden es estable entre páginas, y un cursor queda ligado al orden con el que se emitió.

Límites: longitud máx. 200

statusstring

Filtra por estado del proyecto: draft, budgeted, confirmed, in_progress, invoiced, completed, cancelled o archived (estado heredado presente en datos antiguos).

Opciones disponibles: draft, budgeted, confirmed, in_progress, invoiced, completed, cancelled, archived

contactIdstring

Filtra por identificador del contacto del proyecto.

Límites: longitud mín. 1, longitud máx. 100

projectTypeIdstring

Filtra por identificador del tipo de proyecto.

Límites: longitud mín. 1, longitud máx. 100

archivedboolean

Filtra por archivado: "true" lista SOLO los proyectos archivados; "false" (o ausente) los excluye del listado.

includeTotalbooleanpredeterminado:false

Ponlo en true para incluir pagination.total, el número de resultados que coinciden con los filtros en todas las páginas. Desactivado por defecto.

Respuesta

application/json

Respuesta correcta.

Esquema de la respuesta: ProjectDto

Sobre: ProjectList. meta.warnings solo aparece cuando la operación está obsoleta.

Cabeceras: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset

dataobject[]

Mostrar atributos hijos
data.idstring

Identificador único del proyecto.

data.projectNumberstring | null

Número de proyecto legible; null si no está numerado.

data.namestring

Nombre del proyecto.

data.colorstring | null

Color asociado al proyecto (para la interfaz); null si no tiene.

data.externalReferencestring | null

Referencia externa del proyecto (por ejemplo, del sistema del cliente); null si no consta.

data.projectTypeIdstring | null

Identificador del tipo de proyecto; null si el proyecto no tiene tipo.

data.projectTypeobject | null

Referencia compacta al tipo de proyecto; null si no hay.

Mostrar atributos hijos
data.projectType.idstring

Identificador único del tipo de proyecto.

data.projectType.namestring

Nombre del tipo de proyecto.

data.projectType.colorstring | null

Color asociado al tipo de proyecto (para la interfaz); null si no tiene.

data.contactobject | null

Referencia compacta al contacto del proyecto; null si no hay.

Mostrar atributos hijos
data.contact.idstring

Identificador único del contacto.

data.contact.namestring

Nombre del contacto.

data.locationobject

Ubicación del proyecto; sus campos internos son null cuando no se han registrado.

Mostrar atributos hijos
data.location.namestring | null

Nombre del lugar o ubicación; null si no está registrado.

data.location.addressstring | null

Dirección de la ubicación; null si no consta.

data.location.citystring | null

Ciudad de la ubicación; null si no consta.

data.location.postalCodestring | null

Código postal de la ubicación; null si no se ha registrado.

data.location.provincestring | null

Provincia o región de la ubicación; null si no se ha registrado.

data.location.countrystring | null

País de la ubicación; null si no consta.

data.location.latnumber | null

Latitud de la ubicación; null si no está registrada.

data.location.lngnumber | null

Longitud de la ubicación; null si no está registrada.

data.startDatestring<date-time>

Fecha de inicio del proyecto en ISO 8601 con desplazamiento.

data.endDatestring<date-time>

Fecha de fin del proyecto en ISO 8601 con desplazamiento.

data.statusstring

Estado del proyecto: draft, budgeted, confirmed, in_progress, invoiced, completed, cancelled o archived. archived es un estado HEREDADO que aparece en datos antiguos; el estado archivado actual se expresa mediante el booleano archived de este mismo DTO.

Opciones disponibles: draft, budgeted, confirmed, in_progress, invoiced, completed, cancelled, archived

data.archivedboolean

Si el proyecto está archivado.

data.orderIdsstring[]

Identificadores de los pedidos del proyecto. El detalle de los pedidos se obtiene en GET /api/v1/orders?projectId=.

data.totalOrdersinteger

Número total de pedidos del proyecto (igual a orderIds.length).

data.tagsobject[]

Etiquetas adjuntas al proyecto, con su identificador y nombre.

Mostrar atributos hijos
data.tags.idstring

Identificador único de la etiqueta.

data.tags.namestring

Nombre de la etiqueta.

data.customFieldsobject<string, any>

Valores de los campos personalizados por identificador de campo personalizado; las definiciones están en /api/v1/custom-fields.

data.sourcestring | null

Origen desde el que se creó el proyecto; null si no consta.

data.createdAtstring<date-time>

Fecha de creación en ISO 8601 con desplazamiento.

data.updatedAtstring<date-time>

Fecha de la última actualización en ISO 8601 con desplazamiento.

paginationobject

Metadatos de paginación por cursor opaco.

Mostrar atributos hijos
pagination.nextCursorstring | null

Cursor opaco de la página siguiente; null cuando no hay más resultados. Pásalo como cursor en la siguiente petición.

pagination.hasMoreboolean

Si existen más resultados después de esta página.

pagination.totalinteger

Número de resultados que coinciden con los filtros en todas las páginas. Solo aparece cuando la petición establece includeTotal=true.

Límites: mín. 0

metaobject

Información adicional sobre la respuesta.

Mostrar atributos hijos
meta.warningsobject[]

Avisos del ciclo de vida; solo aparecen cuando la operación está obsoleta.

Mostrar atributos hijos
meta.warnings.codestring

Código de aviso estable.

Opciones disponibles: deprecated

meta.warnings.messagestring

Para personas: qué está obsoleto, hasta cuándo y qué usar.

meta.warnings.sunsetstring

Día (YYYY-MM-DD) en que la operación deja de estar disponible.

meta.warnings.replacementstring | null

operationId de la operación que hay que usar en su lugar, o null si no hay ninguna.

Errores

EstadoCódigosSignificado
400validation_errorConsulta o cuerpo mal formados. errors[] enumera cada campo erróneo con su código estable.

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

  • Alquileres

    Proyecto

    El proyecto, tal como lo devuelve la API.