Create contact Run in API Explorer
Create a contact attached to the calling agent. The body is a CreateUserInput; any of its arguments may be sent. An email a live contact already has is refused on email; a contact deleted at that email comes back.
Requires the contacts:write scope. Rate budget: 120 calls per 1 minute per credential (the write class).
Body
Required
A CreateUserInput, as the agent app's own mutation takes it.
-
The contact's email address. Matching an existing live contact is refused; matching a deleted one revives them.
-
The first name of the contact.
-
The last name of the contact.
-
The primary mobile phone number for the contact.
-
The primary home phone number for the contact.
-
The primary work phone number for the contact.
-
The first name of the contact's additional contact (usually a significant other).
-
The last name of the contact's additional contact.
-
The mobile phone number of the contact's additional contact.
-
The home phone number of the contact's additional contact.
-
The work phone number of the contact's additional contact.
-
The additional contact's email addresses, at most five.
-
The street the contact lives on.
-
The city the contact lives in.
-
The state the contact lives in.
-
The zipcode the contact lives in.
-
Where the contact came from, in your own words.
-
What the contact is here to do.
Values are
BUYER,BUYER_SELLER,SELLER, orOTHER. -
Whether the agent has favorited the contact.
-
Whether to send the contact price and status changes on the listings they are interested in.
-
Whether to send the contact Exclusives You May Like alerts.
-
Whether the contact has signed their buyer agreement.
-
Whether the contact has signed their listing agreement.
-
A note to file on the contact as it is created.
-
Your own id for the contact. Not enforced unique, and never read by RealScout beyond the external_user_key filter.
Responses
-
OK
-
The request is invalid;
fieldnames the offending input when there is one. A body that is not valid JSON is refused before the API runs, as a bare 400 with no body. -
Invalid or missing bearer token.
-
The credential was not granted the scope this call requires.
-
Not found, or not yours: the two are indistinguishable on purpose.
-
Rate limit exceeded;
Retry-Aftersays when to try again. -
Something went wrong on our side.
curl -X POST -H "Authorization: Bearer rs_agent_..." -H "Content-Type: application/json" -d '{"email":"nora@example.com","first_name":"Nora"}' https://www.realscout.com/api/agent/v1/contacts
{
"email": "string",
"first_name": "string",
"last_name": "string",
"primary_mobile_phone": "string",
"primary_home_phone": "string",
"primary_work_phone": "string",
"additional_first_name": "string",
"additional_last_name": "string",
"additional_mobile_phone": "string",
"additional_home_phone": "string",
"additional_work_phone": "string",
"additional_emails": [
"string"
],
"street": "string",
"city": "string",
"state": "string",
"zipcode": "string",
"lead_source": "string",
"contact_type": "BUYER",
"favorite": true,
"price_status_alerts_enabled": true,
"exclusives_alerts_enabled": true,
"buyer_agreement_signed": true,
"listing_agreement_signed": true,
"note": "string",
"tags": [
"string"
],
"external_user_key": "string"
}
{
"contact": {
"id": "VXNlci0xMjM=",
"first_name": "Nora",
"last_name": null,
"email": "nora@example.com",
"primary_mobile_phone": null,
"lead_source": null,
"external_user_key": null,
"tags": [],
"external_tags": [],
"realscout_tags": [],
"favorite": false,
"emailable": true,
"email_issue": null,
"status": {
"value": "UNDESIGNATED",
"reasons": null
},
"auto_nurture": {
"enabled": false,
"first_enabled_at": null
},
"created_at": "2026-08-20T14:05:00Z",
"updated_at": "2026-08-20T09:30:00Z",
"archived_at": null,
"last_active_at": null,
"last_login_at": null,
"sign_up_source": "agent",
"primary_home_phone": null,
"primary_work_phone": null,
"additional_first_name": "Sam",
"additional_last_name": "Nguyen",
"additional_mobile_phone": null,
"additional_home_phone": null,
"additional_work_phone": null,
"additional_emails": [
"sam@example.com"
],
"street": "123 Main St",
"city": "Sunnyvale",
"state": "CA",
"zipcode": "94086",
"contact_type": "BUYER",
"price_status_alerts_enabled": true,
"exclusives_alerts_enabled": true,
"scout_score": null,
"scout_score_change_7d": null,
"scout_score_change_30d": null,
"scout_score_calculated_on": null,
"realscout_url": "https://www.realscout.com/agent/contacts/VXNlci0xMjM=",
"scout_score_summary_7d": null,
"scout_score_summary_30d": null
}
}
{
"error": {
"code": "invalid_request",
"message": "email is required.",
"field": "email",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing credentials.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "missing_scope",
"message": "This call requires the contacts:write scope, which this credential was not granted.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "not_found",
"message": "No endpoint at POST /api/agent/v1/contacts.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Try again in 30 seconds.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "internal_error",
"message": "Something went wrong on our side.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}