mem0ai/mem0 · error · Error
organizationId and projectId must be set to access instructi
Error message
organizationId and projectId must be set to access instructions or categories
What it means
getProject() (which serves project instructions/categories) builds a URL from this.organizationId and this.projectId, which are only populated after the initialization ping returns them for your API key. If either is unset — ping hasn't resolved, or the key has no project context — the client throws instead of issuing a request to a malformed URL like /api/v1/orgs/organizations/null/projects/null/.
Source
Thrown at mem0-ts/src/client/mem0.ts:632
const response = await this._fetchWithErrorHandling(
`${this.host}/v1/batch/`,
{
method: "DELETE",
headers: this.headers,
body: JSON.stringify({ memories: memoriesBody }),
},
);
return response;
}
async getProject(options: ProjectOptions): Promise<ProjectResponse> {
const payloadKeys = Object.keys(options || {});
this._captureEvent("get_project", [payloadKeys]);
const { fields } = options;
await this._awaitIdentity();
if (!(this.organizationId && this.projectId)) {
throw new Error(
"organizationId and projectId must be set to access instructions or categories",
);
}
const params = new URLSearchParams();
fields?.forEach((field) => params.append("fields", camelToSnake(field)));
const response = await this._fetchWithErrorHandling(
`${this.host}/api/v1/orgs/organizations/${this.organizationId}/projects/${this.projectId}/?${params.toString()}`,
{
headers: this.headers,
},
);
return response;
}
async updateProject(
prompts: PromptUpdatePayload,View on GitHub (pinned to 001c235229)
Solutions
- Use an API key tied to an organization and project in the Mem0 platform (check the dashboard for your org/project).
- Await a trivial client call first (or the client's initialization promise if exposed) so the ping has completed before getProject().
- If self-hosting without orgs/projects, don't use getProject — that route exists on the platform API surface only.
Example fix
// before
const client = new MemoryClient({ apiKey });
await client.getProject({ fields: ['instructions'] }); // org/project still null
// after
const client = new MemoryClient({ apiKey: PLATFORM_ORG_KEY });
await client.add(messages, { filters: { user_id: 'warmup' } }); // ping completes, identity set
await client.getProject({ fields: ['instructions'] }); Defensive patterns
Strategy: validation
Validate before calling
// Warm up identity before project calls: any first call awaits the ping
await client.users().catch(() => {});
// If your key has no org/project, getProject cannot work — verify via a raw ping:
const ping = await fetch(`${host}/v1/ping/`, { headers: { Authorization: `Token ${apiKey}` } }).then(r => r.json());
if (!ping.orgId || !ping.projectId) throw new Error('API key has no org/project context — use a platform key'); Type guard
const hasProjectIdentity = (ping: unknown): ping is { orgId: string; projectId: string } =>
isJsonObject(ping) && typeof ping.orgId === 'string' && typeof ping.projectId === 'string'; Try / catch
try {
await client.getProject({ fields: ['instructions'] });
} catch (e) {
if ((e as Error).message.includes('organizationId and projectId must be set')) {
throw new Error('getProject needs an org-scoped API key — check MEM0_API_KEY scope'); // config error, not transient
}
throw e;
} Prevention
- Use org/project-scoped platform keys whenever you touch instructions or categories.
- Trigger and await client initialization before any project-scoped call.
- Smoke-test getProject in CI for the exact key you will deploy with.
When it happens
Trigger: Calling getProject() before the async ping completes (this._awaitIdentity() resolved but the key returned no orgId/projectId), using an API key that belongs to no organization/project, or calling from a context where initialization failed silently.
Common situations: Personal/free-tier keys with no org; calling getProject immediately after construction before identity resolves; hosted key used where a platform org key is required.
Related errors
- organizationId and projectId must be set to update instructi
- Mem0 API key is required
- Mem0 API key cannot be empty
- Together API key is required
- Anthropic API key is required
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/93426c3741134319.
Report an issue: GitHub.