createContact
createContact creates a new Contact party — a person or organization that UTA interacts with but does not represent. Contacts are often business contacts like buyers, managers, attorneys, or venue operators.
Required Fields
| Field | Type | Notes |
|---|---|---|
names | [NameInput!] | At least one name is required |
type | PartyType | PERSON or ORGANIZATION |
Contact is the most flexible of the three party create mutations — it has only two required fields, making it straightforward to create a minimal record and enrich it later.
Basic Example
mutation CreateContact {
createContact(contactCreateInput: {
names: [
{
givenName: "Maria"
familyName: "Gonzalez"
name: "Maria Gonzalez"
type: FORMAL
}
]
type: PERSON
}) {
id
names {
name
}
}
}Creating a Contact with Communication Details
mutation CreateContactWithDetails {
createContact(contactCreateInput: {
names: [
{
givenName: "Maria"
familyName: "Gonzalez"
name: "Maria Gonzalez"
type: FORMAL
}
]
type: PERSON
emails: [
{
email: "maria@example.com"
primary: true
}
]
phones: [
{
countryCode: "1"
number: "3105550199"
primary: true
}
]
addresses: [
{
country: US
locality: "Los Angeles"
region: "CA"
postalCode: "90001"
}
]
}) {
id
names {
name
}
emails {
email
}
}
}Associating a Contact with Clients
Contacts can be linked to one or more existing clients using clientIds. This draws an inbound relationship from the client to the contact.
You will need the IDs of the existing client parties. These can be retrieved by querying for parties with an active Client role.
mutation CreateContactLinkedToClient {
createContact(contactCreateInput: {
names: [
{
givenName: "Maria"
familyName: "Gonzalez"
name: "Maria Gonzalez"
type: FORMAL
}
]
type: PERSON
emails: [
{
email: "maria@example.com"
primary: true
}
]
clientIds: [
{ id: "<client-party-id>" }
]
}) {
id
names {
name
}
}
}Organization Contact Example
When type is ORGANIZATION, use employsAppointments instead of appointments for employee linkages:
mutation CreateContactOrg {
createContact(contactCreateInput: {
names: [
{
name: "Acme Talent Management"
type: FORMAL
}
]
type: ORGANIZATION
emails: [
{
email: "info@acmetalent.example.com"
primary: true
}
]
onlineAddresses: [
{
url: "https://acmetalent.example.com"
type: WEBSITE
}
]
}) {
id
names {
name
}
}
}Optional Fields Reference
| Field | Type | Notes |
|---|---|---|
id | UUID | Override the auto-generated ID |
verified | Boolean | Mark record as verified (default: false) |
financial | Boolean | Flag as a financial record (default: false) |
noMats | Boolean | Suppress materials requests (default: false) |
friendlyName | String | Informal display name |
note | String | Internal note |
addresses | [AddressInput!] | Physical addresses |
emails | [EmailInput!] | Email addresses |
phones | [PhoneInput!] | Phone numbers |
onlineAddresses | [OnlineAddressInput!] | Websites, social handles |
appointments | [AppointmentInput!] | PERSON type only — agent/employee appointments |
employsAppointments | [EmploysAppointmentInput!] | ORGANIZATION type only — employee appointments |
personalInfo | PersonalInfoInput | DOB, gender, ethnicity, pronouns, etc. |
biographies | [BiographyInput!] | Bio text blocks |
legalNotices | [LegalNoticeInput!] | Legal notices |
externalRecords | [ExternalRecordInput!] | Third-party system IDs |
assets | [AssetInput!] | Associated media assets |
clientIds | [ConnectableInput!] | Existing clients this contact is linked to |
clientExternalAssignmentIds | [ConnectableInput!] | External assignment IDs |
involvedInAccountFlagIds | [ConnectableInput!] | Account flags |
operatesEventSeriesIds | [ConnectableInput!] | Event series this contact operates |
operatesVenueIds | [ConnectableInput!] | Venues this contact operates |
languageIds | [ConnectableInput!] | Spoken languages |
participantGroupMemberships | [ParticipantGroupMembershipCreateInput!] | Participant group memberships |
No Draft Mode
Unlike createClient and createTalent, createContact does not support a draft flag. Contacts are created as fully active records.