Giant Context
Giant ContextAsk for early access

People

The project's people — everyone a project knows, whether or not a CRM app is installed. A person's email is an identifier pointing at them, never a column; subscription lives on the address. The CRM app is a workspace over this surface.


POST

Approve the compiled segment for consumption

/organizations/{organizationId}/projects/{projectId}/segments/{segmentId}/approve
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
segmentIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.approveSegment({  organizationId: orgs[0].id,  projectId: projects[0].id,  segmentId: "segment-id",});
GET

Live membership preview — total, deliverable, sample

/organizations/{organizationId}/projects/{projectId}/segments/{segmentId}/preview
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
segmentIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });const { segments } = await gc.people.listSegments({  organizationId: orgs[0].id,  projectId: projects[0].id,});
const preview = await gc.people.getSegmentPreview({  organizationId: orgs[0].id,  projectId: projects[0].id,  segmentId: segments[0].id,});
POST

Erase a person — sever, scrub, retain

/organizations/{organizationId}/projects/{projectId}/people/{personId}/erasures
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.erasePerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person-id",});
PUT

Set one custom field on a person, merging into properties

/organizations/{organizationId}/projects/{projectId}/people/{personId}/fields
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
BodyRequired
keyRequired
string
valueRequired
any
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.setPersonField({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person-123",  data: { customField: "value" }});
GET

A person's timeline of happenings, newest first

/organizations/{organizationId}/projects/{projectId}/people/{personId}/edges
Parameters
page
query · number
pageSize
query · number
lite
query · string
limit
query · integer
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { edges } = await gc.people.listPersonEdges({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person_123",});
POST

Tag one person with a single free-form string, idempotent, returns the person

/organizations/{organizationId}/projects/{projectId}/people/{personId}/tags
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
BodyRequired
tagRequired
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.tagPerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person_123",  data: { tags: ["vip"] }});
DELETE

Remove one tag from a person, returns the person

/organizations/{organizationId}/projects/{projectId}/people/{personId}/tags
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
BodyRequired
tagRequired
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.untagPerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person-id",  data: { tag: "example-tag" }});
GET

Every property key the project's people carry, with counts

/organizations/{organizationId}/projects/{projectId}/people/property-keys
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { keys } = await gc.people.getPersonPropertyKeys({  organizationId: orgs[0].id,  projectId: projects[0].id,});
POST

Merge a drifted property key into its canonical name

/organizations/{organizationId}/projects/{projectId}/people/property-keys
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
BodyRequired
toKeyRequired
string
fromKeyRequired
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.mergePersonPropertyKeys({  organizationId: orgs[0].id,  projectId: projects[0].id,  data: {}});
GET

One segment — description, compiled tree, gates

/organizations/{organizationId}/projects/{projectId}/segments/{segmentId}
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
segmentIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const segment = await gc.people.getSegment({  organizationId: orgs[0].id,  projectId: projects[0].id,  segmentId: "segment-id",});
PUT

Update a segment; a new description clears both gates

/organizations/{organizationId}/projects/{projectId}/segments/{segmentId}
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
segmentIdRequired
path · string
BodyRequired
name
string
description
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.updateSegment({  organizationId: orgs[0].id,  projectId: projects[0].id,  segmentId: "segment-id",  data: {},});
DELETE

Delete a segment definition

/organizations/{organizationId}/projects/{projectId}/segments/{segmentId}
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
segmentIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.deleteSegment({  organizationId: orgs[0].id,  projectId: projects[0].id,  segmentId: "segment-id",});
GET

Get one person with all fields, tags and the CRM company overlay

/organizations/{organizationId}/projects/{projectId}/people/{personId}
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const person = await gc.people.getPerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person-id",});
PATCH

Update person

/organizations/{organizationId}/projects/{projectId}/people/{personId}
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
personIdRequired
path · string
BodyRequired
tags
array
email
string
phone
string
title
string
locale
union
source
union
status
union
lastName
string
companyId
string
firstName
string
department
string
properties
object
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.updatePerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  personId: "person-123",  data: { name: "Jane Doe" }});
GET

Resolve a person by email address

/organizations/{organizationId}/projects/{projectId}/people/by-email
Parameters
emailRequired
query · string
organizationIdRequired
path · string
projectIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { person } = await gc.people.getPersonByEmail({  organizationId: orgs[0].id,  projectId: projects[0].id,  email: "test@example.com",});
POST

Identify: name the person behind an email

/organizations/{organizationId}/projects/{projectId}/people/identify
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
BodyRequired
emailRequired
string
traits
object
visitorId
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const result = await gc.people.identify({  organizationId: orgs[0].id,  projectId: projects[0].id,  data: { email: "user@example.com", name: "Alice" }});
GET

The deletion ledger, newest first

/organizations/{organizationId}/projects/{projectId}/erasures
Parameters
page
query · number
pageSize
query · number
lite
query · string
organizationIdRequired
path · string
projectIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { erasures } = await gc.people.listErasures({  organizationId: orgs[0].id,  projectId: projects[0].id,});
GET

The project's segments — saved, compiled views over people

/organizations/{organizationId}/projects/{projectId}/segments
Parameters
page
query · number
pageSize
query · number
lite
query · string
organizationIdRequired
path · string
projectIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { segments } = await gc.people.listSegments({  organizationId: orgs[0].id,  projectId: projects[0].id,});
POST

Create a segment from a plain-language description

/organizations/{organizationId}/projects/{projectId}/segments
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
BodyRequired
nameRequired
string
descriptionRequired
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { segment } = await gc.people.createSegment({  organizationId: orgs[0].id,  projectId: projects[0].id,  data: {    name: "New Segment"  }});
GET

List a project's people, alphabetical by last name, search supported

/organizations/{organizationId}/projects/{projectId}/people
Parameters
page
query · number
pageSize
query · number
lite
query · string
sort
query · string
search
query · string
status
query · string
source
query · string
title
query · string
department
query · string
locale
query · string
organizationIdRequired
path · string
projectIdRequired
path · string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { people } = await gc.people.listPeople({  organizationId: orgs[0].id,  projectId: projects[0].id,});
POST

Create person

/organizations/{organizationId}/projects/{projectId}/people
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
BodyRequired
tags
array
email
string
phone
string
title
string
locale
union
source
union
status
union
lastNameRequired
string
companyId
string
firstNameRequired
string
department
string
properties
object
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const { person } = await gc.people.createPerson({  organizationId: orgs[0].id,  projectId: projects[0].id,  data: {    name: "John Doe",    email: "john.doe@example.com"  }});
POST

Track: record a happening as an edge

/organizations/{organizationId}/projects/{projectId}/edges
Parameters
organizationIdRequired
path · string
projectIdRequired
path · string
BodyRequired
facts
object
object
object
statementRequired
string
visitorIdRequired
string
SDK
import { createGiantContext } from "@giantcontext/sdk-typescript";
const gc = createGiantContext({ apiKey: process.env.GIANTCONTEXT_API_KEY! });
const { organizations: orgs } = await gc.me.listMyOrganizations();const { projects } = await gc.projects.listProjects({ organizationId: orgs[0].id });
const response = await gc.people.track({  organizationId: orgs[0].id,  projectId: projects[0].id,  data: { event: "test_event" }});

BuiltAutonomously With AI
This content was built autonomously. Giant Context analyzed the site, determined what was missing, created and submitted an idea and draft, which Giant Context staff accepted and published.
Giant Context
Product
  • How It Works
  • Mind
  • Create
  • Capture
  • Nurture
  • Optimize
  • Publishing
  • Pricing
  • Use Cases

© 2026 Giant Context
Privacy PolicyTermsCookie PolicyAcceptable Use
Powered by
People | Giant Context