Skip to content

Create guest

Endpoint

POST /organizations/{org_id}/guests

Creates a new guest in your organization. If the email already exists as a guest globally, Tallyfy adds that guest to your organization instead of creating a duplicate.

Request

Replace {org_id} with your Organization ID.

Headers

  • Authorization: Bearer {your_access_token}
  • Accept: application/json
  • X-Tallyfy-Client: APIClient
  • Content-Type: application/json

Body (JSON)

FieldTypeRequiredDescription
emailstringYesGuest’s email address. Must pass RFC/DNS validation and can’t belong to an existing org member.
first_namestringNoMax 200 characters.
last_namestringNoMax 200 characters.
phone_1stringNoMax 20 characters.
phone_2stringNoMax 20 characters.
company_namestringNoMax 200 characters.
company_urlstringNoMust be a valid URL.
contact_urlstringNoMust be a valid URL.
image_urlstringNoMust be a valid URL.
opportunity_urlstringNoMust be a valid URL.
opportunity_namestringNoMax 200 characters.
timezonestringNoE.g., America/Chicago.
statusstringNoMax 200 characters.
external_sync_sourcestringNoOnly salesforce is accepted.
external_date_creationstringNoFormat: Y-m-d H:i:s.

Minimal example:

{
"email": "new.guest@contractor.com"
}

Fuller example:

{
"email": "client.contact@acme.com",
"first_name": "Client",
"last_name": "Contact",
"company_name": "ACME Corp",
"phone_1": "+1-212-555-0123"
}

Code samples

const accessToken = 'YOUR_PERSONAL_ACCESS_TOKEN';
const orgId = 'YOUR_ORGANIZATION_ID';
const apiUrl = `https://go.tallyfy.com/api/organizations/${orgId}/guests`;
const guestData = {
email: "external.partner@partnerco.com",
first_name: "External",
last_name: "Partner",
company_name: "Partner Co"
};
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Accept': 'application/json',
'X-Tallyfy-Client': 'APIClient',
'Content-Type': 'application/json'
},
body: JSON.stringify(guestData)
});
const data = await response.json();
if (!response.ok) {
console.error('Failed:', response.status, data);
} else {
console.log('Created guest:', JSON.stringify(data, null, 2));
}

Response

A successful request returns a 201 Created status and a JSON object with the new guest’s data.

{
"data": {
"id": 4523,
"email": "external.partner@partnerco.com",
"last_accessed_at": null,
"last_known_ip": null,
"last_known_country": null,
"first_name": "External",
"last_name": "Partner",
"created_at": "2025-01-15 10:30:00",
"deleted_at": null,
"link": "https://go.tallyfy.com/...",
"details": {
"status": null,
"phone_1": null,
"phone_2": null,
"timezone": null,
"image_url": null,
"contact_url": null,
"company_url": null,
"opportunity_url": null,
"company_name": "Partner Co",
"opportunity_name": null,
"external_sync_source": null,
"external_date_creation": null,
"cadence_days": null,
"associated_members": null,
"last_city": null,
"last_country": null,
"last_accessed_at": null,
"disabled_at": null,
"disabled_by": null,
"reactivated_at": null,
"reactivated_by": null
}
}
}

If the email belongs to an existing org member, you’ll get a 422 Unprocessable Entity error. If the email already exists as a guest globally, the guest is added to your organization rather than duplicated.


Code Samples > Managing guests

Tallyfy’s API lets you manage external guest users—who participate in tasks without full accounts—by creating listing retrieving updating and deleting them using their URL-encoded email address as the identifier across organization-scoped endpoints.

Guests > Update guest

Tallyfy’s PUT endpoint at /organizations/[org_id]/guests/[guest_email] lets you update only the associated_members field for an existing guest by sending an array of member IDs and returns the full guest record with a 201 status on success.

Guests > Get guest

Tallyfy’s API lets you retrieve detailed information about a specific guest user by making a GET request to /organizations/[org_id]/guests/[guest_email] with the email URL-encoded and you can optionally include completion statistics by passing the with=stats query parameter.

Members > Invite member

Tallyfy’s API lets you invite new users to your organization by sending a POST request with their email and name and role and a personal message to the /users/invite endpoint which returns the invited user’s profile with a status of “invited” until they accept.