plandex-ai/plandex · error

Error getting org:

Error message

Error getting org: 

What it means

InviteUserHandler calls db.GetOrg(auth.OrgId) to load the caller's organization before processing an invite. If the query fails, the handler responds 500 with 'Error getting org: <err>'. This is a server-side data-access failure, not a client input problem.

Source

Thrown at app/server/handlers/invites.go:40

	if os.Getenv("GOENV") == "development" && os.Getenv("LOCAL_MODE") == "1" {
		writeApiError(w, shared.ApiError{
			Type:   shared.ApiErrorTypeOther,
			Status: http.StatusForbidden,
			Msg:    "Local mode is not supported for invites",
		})
		return
	}

	auth := Authenticate(w, r, true)
	if auth == nil {
		return
	}

	org, err := db.GetOrg(auth.OrgId)

	if err != nil {
		log.Printf("Error getting org: %v\n", err)
		http.Error(w, "Error getting org: "+err.Error(), http.StatusInternalServerError)
		return
	}

	if org.IsTrial {
		writeApiError(w, shared.ApiError{
			Type:   shared.ApiErrorTypeTrialActionNotAllowed,
			Status: http.StatusForbidden,
			Msg:    "Trial user can't invite other users",
		})

		return
	}

	currentUserId := auth.User.Id

	var req shared.InviteRequest
	err = json.NewDecoder(r.Body).Decode(&req)
	if err != nil {

View on GitHub (pinned to e2d772072e)

Solutions

  1. Read the underlying cause after 'Error getting org: ' in the response/log and fix that specific DB error
  2. Verify DATABASE_URL and that Postgres is reachable from the server (pg_isready, connection limits)
  3. Run pending Plandex database migrations, then retry
  4. If the token references a deleted org, sign out and back in to obtain a fresh org context; retry on transient failures
Defensive patterns

Strategy: retry

Validate before calling

// Pre-check: confirm your token resolves to an existing org via a cheap endpoint before inviting
org, err := client.GetCurrentOrg(ctx)
if err != nil || org == nil {
    return fmt.Errorf("org unavailable, aborting invite: %w", err)
}

Try / catch

err := client.InviteUser(ctx, email, orgRoleId)
if err != nil && strings.Contains(err.Error(), "Error getting org") {
    // 500 — server DB issue; retry with backoff before surfacing to the user
    return retryWithBackoff(func() error { return client.InviteUser(ctx, email, orgRoleId) })
}

Prevention

When it happens

Trigger: The orgs row for auth.OrgId cannot be fetched: Postgres is unreachable, the connection pool is exhausted, the query fails/times out, or the orgs table schema is missing or out of date. Note a nonexistent org may also surface as an error here depending on GetOrg's implementation.

Common situations: DATABASE_URL misconfigured or Postgres down in the deployment; database migration not run after upgrade; stale auth token referencing a deleted org; transient network partition between server and DB.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05). Data as JSON: /api/errors/419ee6bdee1e4582. Report an issue: GitHub.