Documentación API
Genera, firma y gestiona contratos legales programáticamente. API REST para cualquier stack y servidor MCP para agentes de IA.
Genera contratos
Crea contratos legales para 16 jurisdicciones con una sola llamada a la API.
IA integrada
Genera contratos desde descripciones en lenguaje natural con nuestro endpoint de IA.
Firma electrónica
Envía contratos para firma electrónica directamente desde la API.
16 países
Contratos adaptados a la legislación de México, Colombia, Argentina, Chile, España y más.
MCP nativo
Servidor MCP para integrar con agentes de IA compatibles con Model Context Protocol.
Sandbox incluido
Entorno de pruebas completo con API keys de test. Sin límites, sin costo.
Autenticación
La API usa API keys para autenticación. Incluye tu key en el headerAuthorizationde cada request.
Cómo obtener tu API key
- 1. Crea una cuenta en tucontrato.com
- 2. Ve a Configuración → API y desarrolladores
- 3. Genera una nueva API key
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxPrefijo tc_live_ — contratos reales con validez legal
Prefijo tc_test_ — pruebas sin límites, sin costo
Endpoints
Base URL: https://tucontrato.com/api/v2
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/v2/contracts | Crear un contrato nuevo con parámetros estructurados |
| POST | /api/v2/contracts/generate | Generar un contrato con IA desde lenguaje natural |
| GET | /api/v2/contracts | Listar contratos del usuario autenticado |
| GET | /api/v2/contracts/:id | Obtener detalles de un contrato específico |
| PATCH | /api/v2/contracts/:id | Actualizar cláusulas o datos de un contrato draft |
| DELETE | /api/v2/contracts/:id | Eliminar un contrato draft |
| POST | /api/v2/contracts/:id/sign | Enviar contrato para firma electrónica |
| GET | /api/v2/contracts/:id/pdf | Descargar contrato en formato PDF |
| GET | /api/v2/contract-types | Listar tipos de contrato disponibles por país |
| GET | /api/v2/countries | Listar países soportados con sus códigos ISO |
Todas las respuestas siguen el formato: { data, error, meta }
Quickstart
Ejemplos para crear tu primer contrato en cada lenguaje.
curl
curl -X POST https://tucontrato.com/api/v2/contracts \
-H "Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "arrendamiento",
"country": "MX",
"parties": {
"landlord": {
"name": "María García López",
"id_number": "GALM850101HDFRRL09",
"email": "maria@ejemplo.com"
},
"tenant": {
"name": "Carlos Rodríguez Pérez",
"id_number": "ROPC900215HMCDRR05",
"email": "carlos@ejemplo.com"
}
},
"terms": {
"property_address": "Av. Reforma 222, CDMX",
"monthly_rent": 15000,
"currency": "MXN",
"duration_months": 12,
"deposit_months": 1,
"start_date": "2026-05-01"
}
}'JavaScript / TypeScript
const response = await fetch('https://tucontrato.com/api/v2/contracts', {
method: 'POST',
headers: {
'Authorization': 'Bearer tc_live_xxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'servicios',
country: 'CO',
parties: {
provider: {
name: 'Ana Torres',
id_number: '1234567890',
email: 'ana@ejemplo.com',
},
client: {
name: 'Tech Corp SAS',
id_number: '900123456-7',
email: 'legal@techcorp.co',
},
},
terms: {
service_description: 'Desarrollo de aplicación web',
fee: 5000000,
currency: 'COP',
duration_months: 3,
payment_schedule: 'monthly',
},
}),
});
const { data, error } = await response.json();
console.log(data.id, data.preview_url);Python
import requests
response = requests.post(
"https://tucontrato.com/api/v2/contracts/generate",
headers={
"Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
json={
"prompt": "Necesito un NDA bilateral entre mi empresa "
"y un proveedor de software en Chile",
"country": "CL",
},
)
result = response.json()
contract = result["data"]
print(f"Contract ID: {contract['id']}")
print(f"Preview: {contract['preview_url']}")
# Send for signature
sign_response = requests.post(
f"https://tucontrato.com/api/v2/contracts/{contract['id']}/sign",
headers={
"Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
json={
"signers": [
{"email": "ceo@miempresa.cl", "role": "party_a"},
{"email": "contacto@proveedor.cl", "role": "party_b"},
]
},
)
print(sign_response.json())Servidor MCP
Model Context ProtocolEl servidor MCP permite que agentes de IA (Claude, ChatGPT, LangChain y otros) descubran e invoquen herramientas de TuContrato directamente, sin código intermedio.
Configuración
{
"mcpServers": {
"tucontrato": {
"url": "https://tucontrato.com/mcp",
"headers": {
"Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}Herramientas disponibles
| Tool | Descripción | Params |
|---|---|---|
| create_contract | Crea un contrato nuevo con tipo, país y parámetros de las partes y términos. | type, country, parties, terms |
| generate_contract_from_description | Genera un contrato a partir de una descripción en lenguaje natural. | prompt, country (optional) |
| list_contracts | Lista los contratos del usuario, con filtros opcionales. | status?, type?, limit?, offset? |
| get_contract | Obtiene los detalles completos de un contrato. | contract_id |
| update_contract | Actualiza cláusulas o datos de un contrato en estado draft. | contract_id, updates |
| send_for_signature | Envía un contrato para firma electrónica a las partes. | contract_id, signers[] |
| get_contract_types | Lista tipos de contrato disponibles, opcionalmente filtrados por país. | country? |
| get_supported_countries | Lista los países soportados con sus códigos ISO. | (none) |
Ejemplo: agente de IA crea un contrato
- 1. El usuario le dice al agente: “Necesito un NDA para Colombia”
- 2. El agente invoca
get_contract_typesconcountry: "CO" - 3. El agente recopila los datos necesarios del usuario
- 4. Invoca
create_contractcon los parámetros - 5. Retorna al usuario el enlace de preview y opción de firma
Límites y errores
Rate limits
| Plan | Req/min | Req/día |
|---|---|---|
| Gratis | 10 | 100 |
| Pro | 60 | 5,000 |
| Sandbox | 30 | 1,000 |
Códigos HTTP
| Código | Significado |
|---|---|
| 200 | OK |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden (plan) |
| 404 | Not Found |
| 429 | Rate Limited |
| 500 | Server Error |
Formato de error
{
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "El campo 'country' es requerido"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-07T12:00:00Z"
}
}Empieza a integrar hoy
Crea tu cuenta, genera una API key y lanza tu primer contrato en minutos. El sandbox es gratuito y sin límites de plan.