Create requirement
curl --request POST \
--url https://app.yampi.ai/api/v1/accounts/{account_id}/requirements \
--header 'Content-Type: application/json' \
--header 'api_access_token: <api-key>' \
--data '
{
"requirement": {
"category": "<string>",
"title": "<string>",
"urgent": true,
"description": "<string>",
"priority": "<string>",
"property_id": 123,
"reporter_contact_id": 123,
"conversation_id": 123
}
}
'const options = {
method: 'POST',
headers: {api_access_token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requirement: {
category: '<string>',
title: '<string>',
urgent: true,
description: '<string>',
priority: '<string>',
property_id: 123,
reporter_contact_id: 123,
conversation_id: 123
}
})
};
fetch('https://app.yampi.ai/api/v1/accounts/{account_id}/requirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.yampi.ai/api/v1/accounts/{account_id}/requirements"
payload = { "requirement": {
"category": "<string>",
"title": "<string>",
"urgent": True,
"description": "<string>",
"priority": "<string>",
"property_id": 123,
"reporter_contact_id": 123,
"conversation_id": 123
} }
headers = {
"api_access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"category": "<string>",
"id": 123,
"display_id": 123,
"account_id": 123,
"requirement_type": "<string>",
"status": "<string>",
"priority": "<string>",
"source": "<string>",
"title": "<string>",
"description": "<string>",
"responsible_party": "<string>",
"tenant_share_percent": 123,
"approval_status": "<string>",
"approval_forced": true,
"cost_estimate": 123,
"classification": {},
"property_id": 123,
"conversation_id": 123,
"assignee_id": 123,
"reporter_contact_id": 123,
"duplicate_of_id": 123,
"approval_required": true,
"sign_off_required": true,
"owner_portal_enabled": true,
"classification_editable": true,
"approval_requested_at": "<string>",
"classification_options": [
{
"id": "<string>",
"types": [
{
"id": "<string>",
"approval_threshold": 123,
"classification": {
"required": [
"<string>"
],
"optional": [
"<string>"
]
},
"termination_canons": {},
"resolution_business_days": 123
}
]
}
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{}{}Requirements
Create requirement
File a requirement from the dashboard (manual radicación). Routing, priority defaults and legal deadlines come from the rule pack, not the form.
POST
/
api
/
v1
/
accounts
/
{account_id}
/
requirements
Create requirement
curl --request POST \
--url https://app.yampi.ai/api/v1/accounts/{account_id}/requirements \
--header 'Content-Type: application/json' \
--header 'api_access_token: <api-key>' \
--data '
{
"requirement": {
"category": "<string>",
"title": "<string>",
"urgent": true,
"description": "<string>",
"priority": "<string>",
"property_id": 123,
"reporter_contact_id": 123,
"conversation_id": 123
}
}
'const options = {
method: 'POST',
headers: {api_access_token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requirement: {
category: '<string>',
title: '<string>',
urgent: true,
description: '<string>',
priority: '<string>',
property_id: 123,
reporter_contact_id: 123,
conversation_id: 123
}
})
};
fetch('https://app.yampi.ai/api/v1/accounts/{account_id}/requirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.yampi.ai/api/v1/accounts/{account_id}/requirements"
payload = { "requirement": {
"category": "<string>",
"title": "<string>",
"urgent": True,
"description": "<string>",
"priority": "<string>",
"property_id": 123,
"reporter_contact_id": 123,
"conversation_id": 123
} }
headers = {
"api_access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"category": "<string>",
"id": 123,
"display_id": 123,
"account_id": 123,
"requirement_type": "<string>",
"status": "<string>",
"priority": "<string>",
"source": "<string>",
"title": "<string>",
"description": "<string>",
"responsible_party": "<string>",
"tenant_share_percent": 123,
"approval_status": "<string>",
"approval_forced": true,
"cost_estimate": 123,
"classification": {},
"property_id": 123,
"conversation_id": 123,
"assignee_id": 123,
"reporter_contact_id": 123,
"duplicate_of_id": 123,
"approval_required": true,
"sign_off_required": true,
"owner_portal_enabled": true,
"classification_editable": true,
"approval_requested_at": "<string>",
"classification_options": [
{
"id": "<string>",
"types": [
{
"id": "<string>",
"approval_threshold": 123,
"classification": {
"required": [
"<string>"
],
"optional": [
"<string>"
]
},
"termination_canons": {},
"resolution_business_days": 123
}
]
}
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{}{}Response
Success
Per-type terms decided at triage beyond responsible_party and cost_estimate (custom_attributes.classification). Keys vary by type — e.g. payment_reason, property_tenancy_id, billing_cycle_id, termination_cause, delivery_date, termination_amount, document_kind, complaint_target, complaint_merit, complaint_response.