Crear proyecto

Crea un proyecto dentro de la organización asociada a la API key.

POST /api/v1/projects

Kordia fuerza internamente organization_id. Si lo envías, se ignora.

Body

Campo Tipo Requerido Descripción
title string Nombre del proyecto.
external_id string No Identificador del sistema externo. Único por organización.
start_date date Fecha de inicio en formato YYYY-MM-DD.
end_date date Fecha de fin en formato YYYY-MM-DD.
budgeted_hours integer Horas presupuestadas.
budgeted_cost decimal string No Coste presupuestado.
tag_ids array integer No Etiquetas de proyecto existentes en la organización.
curl https://app.example.com/api/v1/projects \
  -X POST \
  -H "Authorization: Bearer $KORDIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Proyecto Atlas",
    "external_id": "third-party-project-123",
    "start_date": "2026-06-01",
    "end_date": "2026-09-30",
    "budgeted_hours": 320,
    "budgeted_cost": "16000.00",
    "tag_ids": [1, 2]
  }'
const response = await fetch("https://app.example.com/api/v1/projects", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KORDIA_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    title: "Proyecto Atlas",
    external_id: "third-party-project-123",
    start_date: "2026-06-01",
    end_date: "2026-09-30",
    budgeted_hours: 320,
    budgeted_cost: "16000.00",
    tag_ids: [1, 2]
  })
})

const project = (await response.json()).data
import os
import requests

response = requests.post(
    "https://app.example.com/api/v1/projects",
    headers={"Authorization": f"Bearer {os.environ['KORDIA_API_KEY']}"},
    json={
        "title": "Proyecto Atlas",
        "external_id": "third-party-project-123",
        "start_date": "2026-06-01",
        "end_date": "2026-09-30",
        "budgeted_hours": 320,
        "budgeted_cost": "16000.00",
        "tag_ids": [1, 2],
    },
)

project = response.json()["data"]
Req.post!(
  "https://app.example.com/api/v1/projects",
  headers: [authorization: "Bearer #{System.fetch_env!("KORDIA_API_KEY")}"],
  json: %{
    title: "Proyecto Atlas",
    external_id: "third-party-project-123",
    start_date: "2026-06-01",
    end_date: "2026-09-30",
    budgeted_hours: 320,
    budgeted_cost: "16000.00",
    tag_ids: [1, 2]
  }
).body["data"]

Respuesta

Status: 201 Created

{
  "data": {
    "id": 10,
    "external_id": "third-party-project-123",
    "title": "Proyecto Atlas",
    "start_date": "2026-06-01",
    "end_date": "2026-09-30",
    "budgeted_hours": 320,
    "budgeted_cost": "16000.00",
    "status": "active",
    "tags": []
  }
}

Errores habituales

  • 422 si faltan campos obligatorios.
  • 422 si external_id ya existe.
  • 422 si la organización alcanzó el límite de proyectos activos del plan.