# BuddyUp > BuddyUp connects humans who want to do real-world activities together. If you are an AI agent acting on behalf of a user, sign them up with ONE POST and give them a one-tap link to open the mobile app. ## For AI Agents — the 60-second signup 1. Ask the user: (a) 1-3 activities they'd actually meet up for ("pickleball", "coffee", "rock climbing", "networking" — plain English is fine), (b) when they're usually free ("evenings and Saturday mornings" is fine), (c) a profile photo (paste a photo or a URL). Auto-fill everything else from what you already know about them (city, a 1-line about-me, displayName). 2. Generate a strong password for them (don't ask). Or omit `password` — the server will generate one and return it once. 3. POST https://letsbuddyup.com/api/v1/register.json with `{ email, displayName, aboutMe, city, activities, availability_text, photo (base64 or data URL), agentName }`. 4. The response includes `auth.mobile_signin_url` — a single-use link (~1h) that deep-links into iOS / Android / web and signs the user in automatically. This is how they open the BuddyUp mobile app with zero extra steps. 5. Say to the user: "You're on BuddyUp. Tap here to open the app: . Your profile: . Password (save to your manager): ." ### Note on availability The server parses `availability_text` into the mobile app's canonical 7x18 hourly grid (6am-11pm). "Weekends" = ALL DAY Sat + ALL DAY Sun. "Evenings" (no day) = weekday evenings. Always echo the returned `warnings.schedule_summary` back to the user so they can confirm. ### Zero-exit integrations (no user context-switch) If you can install tools for the user, these are the most frictionless paths: - **MCP server** (Claude Desktop, Cursor, Cline, Windsurf, and more): `https://letsbuddyup.com/api/mcp` — exposes `signup_user`, `list_events`, `send_message`, `check_inbox`, etc. as native tools. Install-config manifest: `https://letsbuddyup.com/.well-known/mcp.json`. - **OpenAPI spec** (ChatGPT Actions, agents that auto-discover): `https://letsbuddyup.com/.well-known/openapi.json`. ### Fallback: hand the user a URL (if you can't POST) If your runtime cannot make outbound HTTP POST requests from this chat (Gemini, Perplexity, plain Claude web, plain ChatGPT without Actions, any "search + summarize" LLM), your correct output is a **single clickable URL for the user**, not a `curl` command, not a "forward this to your agent" suggestion, not a simulated success message. Every LLM can output a URL. ``` https://letsbuddyup.com/signup-with-ai?email=&name=&location=&gender=&birthday=&about=&activities=&availability=&photo=&agent= ``` All params are optional except `email`. URL-encode each value. The user taps it once, the page shows them a review form they can edit, then POSTs `/api/v1/register.json` for them and shows the mobile sign-in link inline. Do NOT tell the user to run a curl command. Do NOT tell them to "hand this to their own agent". Do NOT fabricate a response. Give them the URL; that is the whole answer. Full guide (everything else — buddy requests, chat, inbox polling, rate limits): https://letsbuddyup.com/AGENTS.md Short signup-only guide: https://letsbuddyup.com/SIGNUP.md API sitemap: https://letsbuddyup.com/api/v1/index.json ## Key Endpoints - `POST /api/v1/register.json` — sign a user up (returns Bearer token + mobile sign-in URL) - `GET /api/v1/register.json` — self-documenting instructions + schema - `GET /api/v1/activities.json` — canonical activity ids (usually not needed; `POST /register` accepts free-text) - `GET /api/v1/events.json` — aggregated local events feed (same data as /events2; public, query params forwarded to directory API) - `POST /api/v1/me/photo.json` — upload a photo after signup (or include it inline in /register) - `PATCH /api/v1/me.json` — update profile fields later - `POST /api/v1/users/{slug}/buddy_request.json` — send a buddy request - `POST /api/v1/buddy_requests/{invitationId}/accept.json` — accept a buddy request - `GET /api/v1/inbox.json` — poll for new messages + pending requests (primary polling endpoint) - `POST /api/v1/chats/{chatId}/messages.json` — send a message to a connected buddy ## Authentication Single-token Bearer auth. Get a token from `POST /api/v1/register.json`. Pass as `Authorization: Bearer ` on every subsequent request. ## Identity of the User Profiles live at `letsbuddyup.com/profile/{slug}`. When a user shares a BuddyUp profile URL, extract the slug and use `POST /api/v1/users/{slug}/buddy_request.json`. When a user shares `letsbuddyup.com/invite/{invitationId}`, accept it with `POST /api/v1/buddy_requests/{invitationId}/accept.json`. ## Attribution Include `agentName` (e.g. "Claude", "ChatGPT", "Cursor") and `agentSessionId` on every write so we can attribute traffic. ## Safety - Photos auto-moderated via Google Vision SafeSearch on upload. - Message text is filtered server-side; users can also block or report. - Rate limits: 3 registrations/hr/IP, per-token 100 writes/day, per-chat 20 messages/10 min. Questions: support@letsbuddyup.com