Create Trip
curl --request POST \
--url https://api.example.com/viajes/create_trip.php \
--header 'Content-Type: <content-type>' \
--data '
{
"usuario_id": 123,
"tipo_servicio": "<string>",
"origen": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
},
"destino": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
}
}
'import requests
url = "https://api.example.com/viajes/create_trip.php"
payload = {
"usuario_id": 123,
"tipo_servicio": "<string>",
"origen": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
},
"destino": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
}
}
headers = {"Content-Type": "<content-type>"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>'},
body: JSON.stringify({
usuario_id: 123,
tipo_servicio: '<string>',
origen: {direccion: '<string>', latitud: 123, longitud: 123, referencia: '<string>'},
destino: {direccion: '<string>', latitud: 123, longitud: 123, referencia: '<string>'}
})
};
fetch('https://api.example.com/viajes/create_trip.php', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/viajes/create_trip.php",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'usuario_id' => 123,
'tipo_servicio' => '<string>',
'origen' => [
'direccion' => '<string>',
'latitud' => 123,
'longitud' => 123,
'referencia' => '<string>'
],
'destino' => [
'direccion' => '<string>',
'latitud' => 123,
'longitud' => 123,
'referencia' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/viajes/create_trip.php"
payload := strings.NewReader("{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/viajes/create_trip.php")
.header("Content-Type", "<content-type>")
.body("{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/viajes/create_trip.php")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request.body = "{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"400": {},
"404": {},
"500": {},
"success": true,
"message": "<string>",
"trip": {
"id": 123,
"usuario_id": 123,
"conductor_id": 123,
"tipo_servicio": "<string>",
"estado": "<string>",
"origen": {},
"destino": {},
"precio_estimado": 123,
"distancia_km": 123,
"duracion_estimada_minutos": 123,
"fecha_solicitud": "<string>"
}
}Trip Endpoints
Create Trip
Request a new ride
POST
/
viajes
/
create_trip.php
Create Trip
curl --request POST \
--url https://api.example.com/viajes/create_trip.php \
--header 'Content-Type: <content-type>' \
--data '
{
"usuario_id": 123,
"tipo_servicio": "<string>",
"origen": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
},
"destino": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
}
}
'import requests
url = "https://api.example.com/viajes/create_trip.php"
payload = {
"usuario_id": 123,
"tipo_servicio": "<string>",
"origen": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
},
"destino": {
"direccion": "<string>",
"latitud": 123,
"longitud": 123,
"referencia": "<string>"
}
}
headers = {"Content-Type": "<content-type>"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>'},
body: JSON.stringify({
usuario_id: 123,
tipo_servicio: '<string>',
origen: {direccion: '<string>', latitud: 123, longitud: 123, referencia: '<string>'},
destino: {direccion: '<string>', latitud: 123, longitud: 123, referencia: '<string>'}
})
};
fetch('https://api.example.com/viajes/create_trip.php', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/viajes/create_trip.php",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'usuario_id' => 123,
'tipo_servicio' => '<string>',
'origen' => [
'direccion' => '<string>',
'latitud' => 123,
'longitud' => 123,
'referencia' => '<string>'
],
'destino' => [
'direccion' => '<string>',
'latitud' => 123,
'longitud' => 123,
'referencia' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/viajes/create_trip.php"
payload := strings.NewReader("{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/viajes/create_trip.php")
.header("Content-Type", "<content-type>")
.body("{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/viajes/create_trip.php")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request.body = "{\n \"usuario_id\": 123,\n \"tipo_servicio\": \"<string>\",\n \"origen\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n },\n \"destino\": {\n \"direccion\": \"<string>\",\n \"latitud\": 123,\n \"longitud\": 123,\n \"referencia\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"400": {},
"404": {},
"500": {},
"success": true,
"message": "<string>",
"trip": {
"id": 123,
"usuario_id": 123,
"conductor_id": 123,
"tipo_servicio": "<string>",
"estado": "<string>",
"origen": {},
"destino": {},
"precio_estimado": 123,
"distancia_km": 123,
"duracion_estimada_minutos": 123,
"fecha_solicitud": "<string>"
}
}Endpoint
POST /viajes/create_trip.php
Headers
string
required
Must be
application/jsonRequest Body
integer
required
Passenger user ID making the request
string
required
Service type requestedPossible values:
motocicleta- Motorcycle taxiauto- Car servicemototaxi- Motorcycle taxi with passenger cabin
object
required
object
required
Response
boolean
required
Trip creation success status
string
Success or error message
object
Created trip object
Show trip structure
Show trip structure
integer
Unique trip identifier
integer
Passenger user ID
integer
Assigned driver ID (null if not yet assigned)
string
Service type
string
Trip status:
pendiente, aceptado, en_ruta, en_curso, completado, canceladoobject
Origin location details
object
Destination location details
number
Estimated trip price in COP
number
Estimated distance in kilometers
integer
Estimated duration in minutes
string
Trip request timestamp (ISO 8601)
Request Example
curl -X POST https://76.13.114.194/viajes/create_trip.php \
-H "Content-Type: application/json" \
-d '{
"usuario_id": 456,
"tipo_servicio": "motocicleta",
"origen": {
"direccion": "Carrera 15 #85-30, Bogotá",
"latitud": 4.6814,
"longitud": -74.0479,
"referencia": "Frente al Centro Comercial"
},
"destino": {
"direccion": "Calle 72 #10-20, Bogotá",
"latitud": 4.6533,
"longitud": -74.0602,
"referencia": "Edificio de oficinas"
}
}'
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<Map<String, dynamic>> createTrip({
required int usuarioId,
required String tipoServicio,
required Map<String, dynamic> origen,
required Map<String, dynamic> destino,
}) async {
final response = await http.post(
Uri.parse('https://76.13.114.194/viajes/create_trip.php'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'usuario_id': usuarioId,
'tipo_servicio': tipoServicio,
'origen': origen,
'destino': destino,
}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
if (data['success'] == true) {
return data['trip'];
} else {
throw Exception(data['message']);
}
}
throw Exception('Failed to create trip');
}
// Usage:
final trip = await createTrip(
usuarioId: 456,
tipoServicio: 'motocicleta',
origen: {
'direccion': 'Carrera 15 #85-30, Bogotá',
'latitud': 4.6814,
'longitud': -74.0479,
'referencia': 'Frente al Centro Comercial',
},
destino: {
'direccion': 'Calle 72 #10-20, Bogotá',
'latitud': 4.6533,
'longitud': -74.0602,
'referencia': 'Edificio de oficinas',
},
);
async function createTrip(tripData) {
const response = await fetch('https://76.13.114.194/viajes/create_trip.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(tripData),
});
const data = await response.json();
if (data.success) {
return data.trip;
}
throw new Error(data.message);
}
// Usage:
const trip = await createTrip({
usuario_id: 456,
tipo_servicio: 'motocicleta',
origen: {
direccion: 'Carrera 15 #85-30, Bogotá',
latitud: 4.6814,
longitud: -74.0479,
referencia: 'Frente al Centro Comercial',
},
destino: {
direccion: 'Calle 72 #10-20, Bogotá',
latitud: 4.6533,
longitud: -74.0602,
referencia: 'Edificio de oficinas',
},
});
Response Example
{
"success": true,
"message": "Viaje creado exitosamente",
"trip": {
"id": 789,
"usuario_id": 456,
"conductor_id": null,
"tipo_servicio": "motocicleta",
"estado": "pendiente",
"origen": {
"direccion": "Carrera 15 #85-30, Bogotá",
"latitud": 4.6814,
"longitud": -74.0479,
"referencia": "Frente al Centro Comercial"
},
"destino": {
"direccion": "Calle 72 #10-20, Bogotá",
"latitud": 4.6533,
"longitud": -74.0602,
"referencia": "Edificio de oficinas"
},
"precio_estimado": 18500,
"precio_final": null,
"distancia_km": 4.2,
"duracion_estimada_minutos": 15,
"fecha_solicitud": "2024-03-15T14:30:00.000Z",
"fecha_aceptacion": null,
"fecha_inicio": null,
"fecha_fin": null
}
}
{
"success": false,
"message": "No hay conductores disponibles en esta área"
}
{
"success": false,
"message": "Coordenadas de origen inválidas"
}
Trip Status Flow
After creation, a trip goes through the following states:1
pendiente
Trip created, waiting for driver acceptance
2
aceptado
Driver accepted the trip
3
en_ruta
Driver is on the way to pick up passenger
4
en_curso
Passenger picked up, trip in progress
5
completado
Trip successfully completed
Service Types
Motocicleta
Standard motorcycle taxi for quick trips
Auto
Car service for comfort and multiple passengers
Mototaxi
Motorcycle taxi with passenger cabin
Pricing
The estimated price is calculated based on:- Base fare: Starting price
- Distance: Price per kilometer
- Duration: Price per minute (peak hours)
- Service type: Different rates for moto/auto
- Demand: Dynamic pricing during high demand
Error Responses
Bad Request
Invalid request data or coordinates
Not Found
User not found
Internal Server Error
Server error during trip creation
Notes
After creating a trip, use the Trip Status endpoint to monitor the trip state and driver assignment.
Ensure the origin and destination coordinates are accurate. Invalid coordinates will result in failed trip requests.
See Also
- Trip Status - Get trip status and updates
- Cancel Trip - Cancel a trip
- Trip History - View past trips
- Trip Pricing - Calculate trip estimates
⌘I