Skip to content

Signup API

Creates a DiscoLike user and organization for a work email without any browser interaction. Built for AI agents acting on behalf of a person: the agent calls this once, the person receives a confirmation email, and they log in at app.discolike.com to pick a plan and issue API keys. Per-agent instructions: Agent signup guide.

POST https://api.discolike.com/v1/public/signup

No authentication. Rate limited per IP.

FieldTypeRequiredDescription
emailStringYesThe person’s work email. Free-mail and disposable domains are rejected. Becomes the login and determines the organization domain
first_nameStringYes1-40 characters after trimming and Unicode NFC normalization; must contain a letter and may not contain angle brackets or control characters
last_nameStringYes1-40 characters after trimming and Unicode NFC normalization; must contain a letter and may not contain angle brackets or control characters
agentStringNoName of the agent or framework making the call, e.g. claude-code. Defaults to the User-Agent header
FieldTypeDescription
statusStringcreated
emailStringNormalized email the account was created for
org_domainStringOrganization domain derived from the email
org_statusStringcreated when a new organization was made, joined when one already existed for the domain
next_stepStringInstruction to relay to the account owner
  • The person receives a confirmation email from DiscoLike. Google or Microsoft sign-in with the same email also works and skips the confirmation step.
  • On first login they accept the terms of service and complete their profile.
  • The account has no plan yet. API keys are issued from the app after choosing a plan; see Authentication.
  • If an organization already exists for the email domain, the person joins it as a member.
StatusMeaning
409An account for this email already exists. Log in at app.discolike.com
422Email domain rejected (free-mail, disposable, or not eligible), or first_name/last_name fails validation: "<field> must contain a letter and no angle brackets or control characters" or "<field> must be between 1 and 40 characters" — a domain rejection returns detail as a plain string, while a name validation failure returns FastAPI’s list of error objects, with the message in each msg (pydantic prefixes it Value error, )
429Rate limited
502Account creation failed upstream. Safe to retry later
Terminal window
curl -X POST "https://api.discolike.com/v1/public/signup" \
-H "Content-Type: application/json" \
-d '{"email": "jane@acme.com", "first_name": "Jane", "last_name": "Doe", "agent": "claude-code"}'
{
"status": "created",
"email": "jane@acme.com",
"org_domain": "acme.com",
"org_status": "created",
"next_step": "A confirmation email was sent to jane@acme.com. Log in at https://app.discolike.com. Google or Microsoft sign-in with this email also works, no password needed."
}
Terminal window
discolike signup --email jane@acme.com --first-name Jane --last-name Doe
from discolike import signup
result = signup(email="jane@acme.com", first_name="Jane", last_name="Doe")
print(result.next_step)