Creates a new contact.
Usage Examples
Create a contact with minimal data:
POST /api/v1/network/contacts
{
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
Create with external reference for CRM sync:
{
"externalRefs": [
{
"namespace": "salesforce",
"id": "003ABC123"
}
],
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@acme.com",
"phone": "+46701234567",
"primaryLanguage": "en",
"tags": ["vip", "enterprise"],
"strategy": "Focus on commercial real estate in Stockholm"
}
ExternalRefs Best Practices
- Use consistent namespace values to identify the source system (e.g., "salesforce", "pipedrive", "hubspot")
- Each namespace+id combination must be unique within your organization - duplicates return 409 Conflict
- You can store multiple external references per contact (one per CRM system)
- Store the returned
idin your CRM to enable efficient lookups and updates
Validation Rules
email: Must be a valid email address formatprimaryLanguage: Must be a valid ISO 639-1 language code (e.g., "en", "sv", "de")tags: Array of strings, no length limit- All text fields have maximum lengths (see request schema)
Response
Returns 201 Created with:
Locationheader pointing to the new resource URI- Full contact object in response body with assigned
idandetag
Contact data to create. All fields are optional except for at least one identifier (name, email, or phone).
Request to create a new contact.
- Type: array object[] ·connections
List of company connections (employments).
A link between a contact and a company, used when creating or updating contacts.
- Type: null | stringemailmax length:255
Email address. Must be unique within your organization.
- Type: array object[] ·external
Refs External references to this contact in other systems (e.g. CRM IDs).
Represents an external system reference (e.g., Salesforce, HubSpot, Pipedrive). Supports multiple CRM systems simultaneously.
- Type: null | stringfirst
Name max length:255First name.
- Type: null | stringlast
Name max length:255Last name.
- Type: null | stringlinked
In Url max length:500LinkedIn profile URL in the format https://www.linkedin.com/in/{slug}.
- Type: null | stringphonemax length:50
Phone number.
- Type: null | stringprimary
Language max length:10ISO 639-1 language code (e.g. 'en', 'sv').
- Type: null | stringstrategy
Investment strategy or description.
- Type: array string[]
List of tags or labels.
- application/json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
curl https://app.propstreet.com/api/v1/network/contacts \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"externalRefs": [
{
"namespace": "",
"id": ""
}
],
"firstName": null,
"lastName": null,
"email": null,
"phone": null,
"linkedInUrl": null,
"primaryLanguage": null,
"tags": [
""
],
"strategy": null,
"connections": [
{
"company": {
"kind": "existing",
"id": ""
},
"jobTitle": null,
"primary": true
}
]
}'
{
"id": "string",
"uri": null,
"externalRefs": [
{
"namespace": "string",
"id": "string"
}
],
"firstName": null,
"lastName": null,
"email": null,
"phone": null,
"linkedInUrl": null,
"emails": [
{
"address": "string",
"type": null,
"isPrimary": true
}
],
"phones": [
{
"number": "string",
"type": null,
"isPrimary": true
}
],
"primaryLanguage": null,
"tags": [
"string"
],
"strategy": null,
"primaryCompanyId": null,
"companies": [
{
"id": "string",
"uri": null,
"name": "string",
"jobTitle": null,
"isPrimary": true
}
],
"profilePictureUrl": null,
"createdUtc": "2026-05-18T20:22:36.959Z",
"updatedUtc": "2026-05-18T20:22:36.959Z",
"deletedUtc": null,
"etag": "string",
"changeType": null,
"changeOrigin": null
}