This document provides lessons for building SDKs in Go based on Dropbox's experience developing their Go SDK. It covers using a code generator to define APIs, avoiding surprises for users, making configuration simple, providing visibility through logging, handling unsupported types like unions and inherited types idiomatically in Go, avoiding authenticating in the SDK, auto-generating tests, and handling errors the Go way. The document recommends open source projects that exemplify these best practices and provides links to Dropbox's Go SDK and command line tool.