Tasks API Reference

Complete API reference for managing tasks and time tracking programmatically.

Base URL
https://wapify.me/api/tasks
Authentication

All requests require Bearer token authentication. Include the token in the Authorization header:

Authorization: Bearer YOUR_API_TOKEN
Available Endpoints
GET List Task Statuses
https://wapify.me/api/tasks/statuses

Retrieve a list of all available task statuses.

Response Example
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "TO_DO",
      "translated_name": "Por hacer",
      "color": "#6c757d"
    },
    {
      "id": 2,
      "name": "IN_PROGRESS",
      "translated_name": "En progreso",
      "color": "#0d6efd"
    },
    {
      "id": 3,
      "name": "REVIEW",
      "translated_name": "Revisión",
      "color": "#ffc107"
    },
    {
      "id": 4,
      "name": "DONE",
      "translated_name": "Completado",
      "color": "#198754"
    }
  ]
}
GET List Tasks
https://wapify.me/api/tasks

Retrieve a list of tasks assigned to the authenticated user.

Query Parameters
Parameter Tipo Descripción
status_id integer Filter by status ID
pending_only boolean Show only pending tasks (not DONE or CANCELLED)
Response Example
{
  "success": true,
  "data": [
    {
      "id": 1,
      "title": "Actualizar sitio web",
      "description": "Actualizar el contenido del sitio",
      "start_date": "2026-02-01",
      "due_date": "2026-02-08",
      "estimated_hours": 5.5,
      "status": {
        "id": 2,
        "name": "IN_PROGRESS",
        "translated_name": "En progreso"
      },
      "category": {
        "id": 1,
        "name": "Desarrollo"
      },
      "project": {
        "id": 3,
        "name": "Sitio Web Corporativo"
      },
      "responsible": {
        "id": 1,
        "name": "Juan Pérez",
        "email": "juan@example.com"
      },
      "active_time": {
        "id": 5,
        "started_at": "2026-02-02T14:30:00Z",
        "elapsed_seconds": 1250
      }
    }
  ]
}
POST Create Task
https://wapify.me/api/tasks

Create a new task. Optionally start the timer automatically.

Request Body
Field Tipo Required Descripción
title string Yes Task title (max 255 chars)
description string No Descripción de la tarea
start_timer boolean No Start timer immediately (default: false)
Request Example
{
  "title": "Implementar nueva funcionalidad",
  "description": "Agregar sistema de notificaciones push",
  "start_timer": true
}
Response Example
{
  "success": true,
  "message": "Tarea creada correctamente.",
  "data": {
    "task_id": 15,
    "title": "Implementar nueva funcionalidad",
    "status": {
      "id": 2,
      "name": "IN_PROGRESS",
      "translated_name": "En progreso"
    },
    "time_id": 42,
    "timer_started": true
  }
}
Note: When start_timer is true, the task status automatically changes to IN_PROGRESS and any other active timer is stopped.
GET Get Task Details
https://wapify.me/api/tasks/{id}

Get detailed information about a specific task.

URL Parameters
Parameter Descripción
id Task ID
PUT Update Task Status
https://wapify.me/api/tasks/{id}/status

Update the status of a task.

Request Body
Field Tipo Required Descripción
status_id integer Yes New status ID (must exist in task_statuses)
Request Example
{
  "status_id": 4
}
Response Example
{
  "success": true,
  "message": "Estado actualizado correctamente.",
  "data": {
    "task_id": 15,
    "status": {
      "id": 4,
      "name": "DONE",
      "translated_name": "Completado"
    }
  }
}
POST Start Task Timer
https://wapify.me/api/tasks/{id}/start

Start time tracking for a task. Automatically stops any other active timer and changes task status to IN_PROGRESS.

Response Example
{
  "success": true,
  "message": "Tarea iniciada correctamente.",
  "data": {
    "time_id": 42,
    "task_id": 15,
    "started_at": "2026-02-02T14:30:00Z"
  }
}
Note: Starting a task automatically stops any other running timer for the user.
POST Stop Task Timer
https://wapify.me/api/tasks/{id}/stop

Stop the active timer for a task.

Response Example
{
  "success": true,
  "message": "Tarea detenida correctamente.",
  "data": {
    "time_id": 42,
    "task_id": 15,
    "started_at": "2026-02-02T14:30:00Z",
    "ended_at": "2026-02-02T16:45:00Z",
    "duration_seconds": 8100,
    "duration_formatted": "02:15:00"
  }
}
GET Get Task Time
https://wapify.me/api/tasks/{id}/time

Get complete time tracking information for a task, including all time entries and active timer.

Response Example
{
  "success": true,
  "data": {
    "task": {
      "id": 15,
      "title": "Implementar nueva funcionalidad",
      "description": "Agregar sistema de notificaciones push",
      "status": {
        "id": 2,
        "name": "IN_PROGRESS",
        "translated_name": "En progreso"
      },
      "project": {
        "id": 3,
        "name": "Sitio Web Corporativo"
      }
    },
    "total_seconds": 12300,
    "total_formatted": "03:25:00",
    "total_hours": 3.42,
    "active_time": {
      "id": 45,
      "started_at": "2026-02-02T16:00:00Z"
    },
    "entries": [
      {
        "id": 42,
        "user": {
          "id": 1,
          "name": "Juan Pérez"
        },
        "started_at": "2026-02-02T14:30:00Z",
        "ended_at": "2026-02-02T16:45:00Z",
        "duration_seconds": 8100,
        "duration_formatted": "02:15:00"
      }
    ]
  }
}
Error Responses
Common Error Codes
Código Descripción
400 Bad Request - Invalid parameters or task already has active timer
401 Unauthorized - Invalid or missing authentication token
403 Forbidden - You don't have permission to access this task
404 Not Found - Task does not exist
422 Validation Error - Invalid input data
Error Response Example
{
  "success": false,
  "message": "No tienes permiso para iniciar esta tarea."
}