Listar operaciones
Recupera una lista paginada de operaciones con filtrado opcional.
Endpoint: GET /api/v1/trades
Parámetros de consulta
Ejemplo de solicitud
cURL:
curl "https://app.mypropjournal.com/api/v1/trades?page=1&limit=25&symbol=NQ" \
-H "Authorization: Bearer mpj_tu_clave_api_aqui" \
-H "Content-Type: application/json"
JavaScript:
const response = await fetch(
'https://app.mypropjournal.com/api/v1/trades?page=1&limit=25&symbol=NQ',
{
headers: {
'Authorization': 'Bearer mpj_tu_clave_api_aqui',
'Content-Type': 'application/json'
}
}
);
const data = await response.json();
console.log(`Se encontraron ${data.pagination.total} operaciones`);
Python:
import requests
headers = {
'Authorization': 'Bearer mpj_tu_clave_api_aqui',
'Content-Type': 'application/json'
}
params = {
'page': 1,
'limit': 25,
'symbol': 'NQ'
}
response = requests.get(
'https://app.mypropjournal.com/api/v1/trades',
headers=headers,
params=params
)
data = response.json()
print(f"Se encontraron {data['pagination']['total']} operaciones")
Ejemplo de respuesta
{
"data": [
{
"id": "fd07b82a-164c-4c24-885a-7f4db54dab62",
"account_id": "f1588e0d-93fd-4a76-b876-b0753f93bc09",
"symbol": "NQ",
"side": "short",
"quantity": 1,
"entry_price": 29298,
"exit_price": 29290,
"entry_time": "10:17:54",
"exit_time": "10:18:29",
"gross_pnl": 160,
"net_pnl": 158,
"total_commission": 2,
"status": "win",
"entry_date": "2026-02-05",
"exit_date": "2026-02-05",
"asset_class": "futures",
"executions": [
{
"id": "1ed21bd6-8ea2-42d0-b16e-142f9484ecb9",
"side": "sell",
"price": 29298,
"quantity": 1,
"commission": 1,
"execution_time": "10:17:54",
"execution_type": "scale_in",
"execution_timestamp": "2026-02-05T15:17:54+00:00"
},
{
"id": "2ed21bd6-8ea2-42d0-b16e-142f9484ecb9",
"side": "buy",
"price": 29290,
"quantity": 1,
"commission": 1,
"execution_time": "10:18:29",
"execution_type": "scale_out",
"execution_timestamp": "2026-02-05T15:18:29+00:00"
}
]
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 305,
"totalPages": 13,
"has_more": true
}
}
Campos de respuesta
Cada objeto de operación incluye:
Obtener una sola operación
Recupera información detallada de una operación específica.
Endpoint: GET /api/v1/trades/{id}
Ejemplo de solicitud
cURL:
curl "https://app.mypropjournal.com/api/v1/trades/fd07b82a-164c-4c24-885a-7f4db54dab62" \
-H "Authorization: Bearer mpj_tu_clave_api_aqui" \
-H "Content-Type: application/json"
Ejemplo de respuesta
Devuelve un solo objeto de operación con la misma estructura mostrada en el endpoint de lista, incluyendo todas las ejecuciones.
Crear una operación
Agrega una nueva operación a tu diario.
Endpoint: POST /api/v1/trades
Campos requeridos
Campos opcionales
Estructura de objeto de ejecución
Al proporcionar ejecuciones, cada objeto debe incluir:
Ejemplo de solicitud
cURL:
curl -X POST "https://app.mypropjournal.com/api/v1/trades" \
-H "Authorization: Bearer mpj_tu_clave_api_aqui" \
-H "Content-Type: application/json" \
-d '{
"account_id": "f1588e0d-93fd-4a76-b876-b0753f93bc09",
"symbol": "TSLA",
"side": "long",
"entry_date": "2024-01-15",
"entry_price": 245.00,
"entry_time": "10:30:00",
"quantity": 50,
"executions": [
{
"side": "buy",
"quantity": 50,
"price": 245.00,
"execution_time": "10:30:00",
"commission": 0.50,
"execution_type": "full"
}
]
}'
JavaScript:
const tradeData = {
account_id: "f1588e0d-93fd-4a76-b876-b0753f93bc09",
symbol: "TSLA",
side: "long",
entry_date: "2024-01-15",
entry_price: 245.00,
entry_time: "10:30:00",
quantity: 50,
executions: [
{
side: "buy",
quantity: 50,
price: 245.00,
execution_time: "10:30:00",
commission: 0.50,
execution_type: "full"
}
]
};
const response = await fetch('https://app.mypropjournal.com/api/v1/trades', {
method: 'POST',
headers: {
'Authorization': 'Bearer mpj_tu_clave_api_aqui',
'Content-Type': 'application/json'
},
body: JSON.stringify(tradeData)
});
const result = await response.json();
console.log('Operación creada:', result.data.id);
Python:
import requests
trade_data = {
'account_id': 'f1588e0d-93fd-4a76-b876-b0753f93bc09',
'symbol': 'TSLA',
'side': 'long',
'entry_date': '2024-01-15',
'entry_price': 245.00,
'entry_time': '10:30:00',
'quantity': 50,
'executions': [
{
'side': 'buy',
'quantity': 50,
'price': 245.00,
'execution_time': '10:30:00',
'commission': 0.50,
'execution_type': 'full'
}
]
}
response = requests.post(
'https://app.mypropjournal.com/api/v1/trades',
headers={
'Authorization': 'Bearer mpj_tu_clave_api_aqui',
'Content-Type': 'application/json'
},
json=trade_data
)
result = response.json()
print(f"Operación creada: {result['data']['id']}")
Ejemplo de respuesta
{
"data": {
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"account_id": "f1588e0d-93fd-4a76-b876-b0753f93bc09",
"symbol": "TSLA",
"side": "long",
"quantity": 50,
"entry_price": 245.00,
"entry_time": "10:30:00",
"entry_date": "2024-01-15",
"status": "open",
"asset_class": "stocks",
"created_at": "2024-01-15T10:30:00Z"
}
}
Actualizar una operación
Modifica una operación existente.
Endpoint: PUT /api/v1/trades/{id}
Cuerpo de solicitud
Acepta los mismos campos que el endpoint de creación. Todos los campos son opcionales — solo se actualizarán los campos proporcionados.
Ejemplo de solicitud
cURL:
curl -X PUT "https://app.mypropjournal.com/api/v1/trades/fd07b82a-164c-4c24-885a-7f4db54dab62" \
-H "Authorization: Bearer mpj_tu_clave_api_aqui" \
-H "Content-Type: application/json" \
-d '{
"exit_price": 250.00,
"exit_time": "14:30:00",
"exit_date": "2024-01-15",
"status": "win"
}'
Eliminar una operación
Elimina permanentemente una operación y sus ejecuciones asociadas.
Endpoint: DELETE /api/v1/trades/{id}
Advertencia de Eliminación en Cascada
Eliminar una operación eliminará permanentemente en cascada los siguientes datos relacionados:
- Todas las ejecuciones asociadas con esta operación
- Todos los análisis de operaciones vinculados a esta operación
- Todas las asociaciones de etiquetas para esta operación
Esta acción no se puede deshacer. La respuesta de la API incluirá advertencias sobre qué datos fueron afectados.
Ejemplo de solicitud
cURL:
curl -X DELETE "https://app.mypropjournal.com/api/v1/trades/fd07b82a-164c-4c24-885a-7f4db54dab62" \
-H "Authorization: Bearer mpj_tu_clave_api_aqui"
Ejemplo de respuesta
{
"success": true,
"deleted_id": "fd07b82a-164c-4c24-885a-7f4db54dab62"
}
Respuestas de error
400 Bad Request
Datos o parámetros de solicitud inválidos:
{
"error": "Validación fallida",
"code": "VALIDATION_ERROR",
"details": {
"entry_price": "Debe ser un número positivo",
"side": "Debe ser 'long' o 'short'"
}
}
401 Unauthorized
Clave API faltante o inválida:
{
"error": "Clave API inválida",
"code": "INVALID_API_KEY"
}
404 Not Found
La operación no existe o no te pertenece:
{
"error": "Operación no encontrada",
"code": "NOT_FOUND"
}
Consulta la página Paginación y errores para la documentación completa de errores.