curl --request POST \
--url https://{organization}.rescueconsole.com/api/registry/flags \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject_type": "person",
"flag_type": "falsified_application",
"severity": "moderate",
"visibility": "network",
"narrative": "Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.",
"identifiers": {
"name": {
"first": "Jordan",
"last": "Ellis"
},
"email": "jordan.ellis@example.org",
"phone": "207-555-0100",
"phone_country": "1",
"address": {
"line1": "12 Elm Street",
"city": "Portland",
"administrative_area": "ME",
"postal_code": "04101",
"country": "US"
},
"date_of_birth": "1987-03-04"
},
"evidence_refs": [
"Application 2026-0311, Contoso adoption files"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject_type: 'person',
flag_type: 'falsified_application',
severity: 'moderate',
visibility: 'network',
narrative: 'Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.',
identifiers: {
name: {first: 'Jordan', last: 'Ellis'},
email: 'jordan.ellis@example.org',
phone: '207-555-0100',
phone_country: '1',
address: {
line1: '12 Elm Street',
city: 'Portland',
administrative_area: 'ME',
postal_code: '04101',
country: 'US'
},
date_of_birth: '1987-03-04'
},
evidence_refs: ['Application 2026-0311, Contoso adoption files']
})
};
fetch('https://{organization}.rescueconsole.com/api/registry/flags', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/registry/flags"
payload = {
"subject_type": "person",
"flag_type": "falsified_application",
"severity": "moderate",
"visibility": "network",
"narrative": "Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.",
"identifiers": {
"name": {
"first": "Jordan",
"last": "Ellis"
},
"email": "jordan.ellis@example.org",
"phone": "207-555-0100",
"phone_country": "1",
"address": {
"line1": "12 Elm Street",
"city": "Portland",
"administrative_area": "ME",
"postal_code": "04101",
"country": "US"
},
"date_of_birth": "1987-03-04"
},
"evidence_refs": ["Application 2026-0311, Contoso adoption files"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"originating_tenant_id": "<string>",
"subject_type": "person",
"identifiers": {
"microchip_hash": "<string>",
"email_hash": "<string>",
"phone_hash": "<string>",
"phone_hash_national": "<string>",
"phone_country": "<string>",
"name_parts": {
"prefix": "<string>",
"first": "<string>",
"last": "<string>",
"suffix": "<string>"
},
"name_alias": "<string>",
"animal_name": "<string>",
"species": "<string>",
"breed": "<string>",
"color": "<string>",
"sex": "<string>",
"address_area": {
"city": "<string>",
"administrative_area": "<string>",
"country": "<string>"
},
"dob_year": "<string>",
"dob_hash": "<string>"
},
"flag_type": "animal_abuse",
"severity": "advisory",
"status": "pending_review",
"visibility": "network",
"narrative": "<string>",
"evidence_refs": [
"<unknown>"
],
"moderation_metadata": {
"corroborations": 123,
"disputes": 123,
"insufficient_evidence": 123,
"corroborating_tenant_ids": [
"<string>"
],
"disputing_tenant_ids": [
"<string>"
]
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}File a flag
Files a safety flag about a person or an animal. It is shared ACROSS organizations: once it is vetted, every other organization using RescueConsole can read it, including the narrative, the evidence references, the identifiers as they are kept, and your organization’s name, contact email and contact phone.
A new flag is always pending_review, whatever you send. When its visibility is network, the people at every other organization who may review flags (write on Registry) are asked to: a notice on their bell and an email, saying the kind of flag, its severity and its subject type, never who it is about or what it says. They can open it to review it; no search returns it until two of them corroborate it and it becomes active. If you set visibility to private, no other organization is asked, or ever sees it.
The identifiers are what a search matches on, and they are kept masked. A microchip number, email address and phone number are kept only as a hash, so a search that already has one can match it, and the value itself is not stored. A date of birth is kept as its year plus a hash of the full date. An address is cut to its city, state or region, and country; the street lines and postal code are dropped. A name, an alias and an animal’s description are kept as written and shown in full. An identifier that is not allowed for the subject type is refused, not ignored.
The API has no route to edit or withdraw a flag once it is filed. Needs write on Registry.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/registry/flags \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject_type": "person",
"flag_type": "falsified_application",
"severity": "moderate",
"visibility": "network",
"narrative": "Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.",
"identifiers": {
"name": {
"first": "Jordan",
"last": "Ellis"
},
"email": "jordan.ellis@example.org",
"phone": "207-555-0100",
"phone_country": "1",
"address": {
"line1": "12 Elm Street",
"city": "Portland",
"administrative_area": "ME",
"postal_code": "04101",
"country": "US"
},
"date_of_birth": "1987-03-04"
},
"evidence_refs": [
"Application 2026-0311, Contoso adoption files"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject_type: 'person',
flag_type: 'falsified_application',
severity: 'moderate',
visibility: 'network',
narrative: 'Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.',
identifiers: {
name: {first: 'Jordan', last: 'Ellis'},
email: 'jordan.ellis@example.org',
phone: '207-555-0100',
phone_country: '1',
address: {
line1: '12 Elm Street',
city: 'Portland',
administrative_area: 'ME',
postal_code: '04101',
country: 'US'
},
date_of_birth: '1987-03-04'
},
evidence_refs: ['Application 2026-0311, Contoso adoption files']
})
};
fetch('https://{organization}.rescueconsole.com/api/registry/flags', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/registry/flags"
payload = {
"subject_type": "person",
"flag_type": "falsified_application",
"severity": "moderate",
"visibility": "network",
"narrative": "Applied to adopt from Contoso twice in March 2026 under two different names. Both applications gave the same reference phone number, and the landlord named on the first said they had never rented to the applicant.",
"identifiers": {
"name": {
"first": "Jordan",
"last": "Ellis"
},
"email": "jordan.ellis@example.org",
"phone": "207-555-0100",
"phone_country": "1",
"address": {
"line1": "12 Elm Street",
"city": "Portland",
"administrative_area": "ME",
"postal_code": "04101",
"country": "US"
},
"date_of_birth": "1987-03-04"
},
"evidence_refs": ["Application 2026-0311, Contoso adoption files"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"originating_tenant_id": "<string>",
"subject_type": "person",
"identifiers": {
"microchip_hash": "<string>",
"email_hash": "<string>",
"phone_hash": "<string>",
"phone_hash_national": "<string>",
"phone_country": "<string>",
"name_parts": {
"prefix": "<string>",
"first": "<string>",
"last": "<string>",
"suffix": "<string>"
},
"name_alias": "<string>",
"animal_name": "<string>",
"species": "<string>",
"breed": "<string>",
"color": "<string>",
"sex": "<string>",
"address_area": {
"city": "<string>",
"administrative_area": "<string>",
"country": "<string>"
},
"dob_year": "<string>",
"dob_hash": "<string>"
},
"flag_type": "animal_abuse",
"severity": "advisory",
"status": "pending_review",
"visibility": "network",
"narrative": "<string>",
"evidence_refs": [
"<unknown>"
],
"moderation_metadata": {
"corroborations": 123,
"disputes": 123,
"insufficient_evidence": 123,
"corroborating_tenant_ids": [
"<string>"
],
"disputing_tenant_ids": [
"<string>"
]
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Body
Whether the flag is about a person or an animal.
person, animal animal_abuse, neglect, fraud, abandonment, falsified_application, other advisory, moderate, severe Why the flag was raised. Required, and shown in full to every organization that can see the flag.
1What the flag can be found by. At least one key. A person may carry name, name_alias, email, phone, phone_country, address, date_of_birth and microchip_number. An animal may carry microchip_number, animal_name, species, breed, color, sex and name_alias. Any other key is refused. After masking at least one searchable value must be left: a street address alone is refused.
Show child attributes
Show child attributes
network: other organizations can see it once it is active. private: only your organization ever sees it.
network, private References to your evidence, kept as you send them and shown to every organization that can see the flag.
Response
The flag, as it was filed, with its identifiers masked.
The ID of the organization that filed it.
Whether the flag is about a person or an animal.
person, animal The identifiers as they are kept. Only the keys the flag was filed with are present.
Show child attributes
Show child attributes
animal_abuse, neglect, fraud, abandonment, falsified_application, other advisory, moderate, severe pending_review until two other organizations corroborate it (then active), or two dispute it (then disputed). Nothing sets revoked at present.
pending_review, active, disputed, revoked network: other organizations can see it once it is active. private: only your organization ever sees it.
network, private The tally of other organizations' reviews.
Show child attributes
Show child attributes