Manage your Resumex resume directly from Telegram or any OpenClaw-connected chat. Read, add, edit, and delete experience, education, skills, projects, achievements, and profile details — all through natural conversation. Tailor your resume to a job description using your own AI. Send your resume summary to Telegram. All AI processing runs on your agent; Resumex is a pure data API.
Connect your Resumex account and manage your entire resume through natural conversation — in Telegram, or any OpenClaw-connected channel.
Architecture in one line: Resumex stores your data. Your agent's LLM does all the thinking. Your Telegram bot delivers messages.
Step 1 — Get your API key:
rx_...Step 2 — Set environment variables in your OpenClaw agent:
RESUMEX_API_KEY=rx_your_key_here
TELEGRAM_BOT_TOKEN=your_telegram_bot_token # optional — needed for Telegram delivery
TELEGRAM_CHAT_ID=your_chat_id # optional — your personal Telegram chat ID
Get your Telegram Bot Token: Message @BotFather →
/newbot→ copy the token. Get your Chat ID: Message @userinfobot on Telegram → it replies with your chat ID. API reference: resumex.dev/api-docs
Write naturally — no special syntax required:
| Say... | Effect |
|---|---|
| "Show my resume" | Display full resume summary |
| "What's my profile?" | Show personal info section |
| "Update my phone to +91 98765 43210" | Edit phone field |
| "Change my location to Pune, India" | Edit location |
| "Update my LinkedIn URL" | Edit LinkedIn |
| "Rewrite my summary for a senior backend role" | AI rewrites summary, saves it |
| Say... | Effect |
|---|---|
| "Add a job: SWE at Google, Jan 2024–Present" | Add new experience entry |
| "Update my role at Infosys — change end date to Dec 2023" | Edit existing experience |
| "Remove my internship at XYZ" | Delete experience entry |
| "Show my experience" | List all work history |
| Say... | Effect |
|---|---|
| "Add B.Tech CS at SPPU, 2019–2023, CGPA 8.5" | Add education entry |
| "Update my degree at SPPU — fix the end year to 2024" | Edit education entry |
| "Remove my 10th standard entry" | Delete education entry |
| Say... | Effect |
|---|---|
| "Add Python, Docker, Redis to my skills" | Add to default Skills category |
| "Add React under Frameworks" | Add to named category |
| "Remove Docker from my skills" | Delete a specific skill |
| "Delete the Frameworks category" | Delete entire skill group |
| Say... | Effect |
|---|---|
| "Add a project: RAG Chatbot — built with LangChain..." | Add project entry |
| "Update my RAG Chatbot project description" | Edit project |
| "Remove the Code Cleaner project" | Delete project entry |
| Say... | Effect |
|---|---|
| "Add achievement: Winner at Smart India Hackathon 2024" | Add achievement entry |
| "Remove the football achievement" | Delete achievement entry |
| Say... | Effect |
|---|---|
| "Tailor my resume for: [paste JD]" | AI rewrites summary + experience bullets to match JD |
| "Send me my resume on Telegram" | Sends formatted resume summary to your Telegram |
All API calls go to https://resumex.dev/api/v1/agent with header Authorization: Bearer $RESUMEX_API_KEY.
Two safe update methods:
{"patch": {...}} → updates only specified fields. Use for profile fields and skills. Always prefer PATCH over POST when possible.{"workspace": <full_json>} → replaces the entire workspace. Required when modifying arrays (experience, education, projects, achievements). Always fetch fresh data immediately before a POST.resumex_get — Fetch resumecurl -s -X GET https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY"
Parse the response:
workspace = response.data
activeResume = workspace.resumes.find(r => r.id === workspace.activeResumeId)
resumeData = activeResume.data
resumeData contains: profile, experience[], education[], skills[], projects[], achievements[]
Display to user as clean Markdown, grouped by section.
resumex_update_profile — Edit profile fieldsEditable fields: fullName, email, phone, location, website, linkedin, github, summary
curl -s -X PATCH https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"patch": {"profile": {"phone": "+91 98765 43210"}}}'
✅ Phone updated to +91 98765 43210.resumex_rewrite_summary — AI-rewrite profile summaryresumex_get.resumeData.profile.summary for the requested role/tone.
curl -s -X PATCH https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"patch": {"profile": {"summary": "<rewritten summary>"}}}'
✅ Summary updated.resumex_add_experience — Add work experience{
"id": "exp-<unix_timestamp_ms>",
"company": "Google",
"role": "Software Engineer",
"location": "Bangalore, India",
"startDate": "Jan 2024",
"endDate": "Present",
"description": "• Built X achieving Y\n• Led Z resulting in W"
}
resumeData.experience[].curl -s -X POST https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workspace": <FULL_WORKSPACE_JSON>}'
✅ Added Software Engineer at Google.resumex_edit_experience — Edit an existing experience entry✅ Updated end date for Google → Dec 2024.resumex_delete_experience — Remove an experience entryresumeData.experience[].✅ Removed [Role] at [Company].resumex_add_education — Add education{
"id": "edu-<unix_timestamp_ms>",
"institution": "Savitribai Phule Pune University",
"degree": "B.Tech Computer Science",
"startDate": "2019",
"endDate": "2023",
"score": "8.5",
"scoreType": "CGPA"
}
resumeData.education[]. POST full workspace.✅ Added B.Tech CS at SPPU.resumex_edit_education — Edit an education entryresumex_delete_education — Remove an education entryresumeData.education[]. POST full workspace.✅ Removed [Degree] from [Institution].resumex_add_skill — Add skills"Skills".resumeData.skills[] (each item: {id, category, skills: string[]}).{ "id": "sk-<timestamp>", "category": "...", "skills": [...] } and append.curl -s -X PATCH https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"patch": {"skills": <UPDATED_SKILLS_ARRAY>}}'
✅ Added Python, Docker to Skills.resumex_delete_skill — Remove a skill or skill categoryskills[] array. If the category becomes empty, remove the whole category object.resumeData.skills[].✅ Removed Docker from Skills. or ✅ Deleted Frameworks category.resumex_add_project — Add a project{
"id": "proj-<unix_timestamp_ms>",
"name": "RAG-Based Smart Attendance Chatbot",
"description": "Built a Chat with your Data system using RAG to automate attendance queries, reducing admin time by 40%.",
"tags": ["RAG", "NLP", "Python"],
"link": "https://github.com/..."
}
resumeData.projects[]. POST full workspace.✅ Added project: RAG-Based Smart Attendance Chatbot.resumex_edit_project — Edit a projectresumex_delete_project — Remove a projectresumeData.projects[]. POST full workspace.✅ Removed project: [Name].resumex_add_achievement — Add an achievement{
"id": "ach-<unix_timestamp_ms>",
"title": "Winner — Smart India Hackathon 2024",
"description": "National-level hackathon with 500+ competing teams.",
"year": "2024"
}
resumeData.achievements[]. POST full workspace.✅ Added achievement: Winner — Smart India Hackathon 2024.resumex_delete_achievement — Remove an achievementresumeData.achievements[]. POST full workspace.✅ Removed achievement: [Title].resumex_tailor — Tailor resume to a job descriptionAll AI reasoning happens in your agent. Resumex only stores the final result.
resumex_get.curl -s -X PATCH https://resumex.dev/api/v1/agent \
-H "Authorization: Bearer $RESUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"patch": {
"profile": {"summary": "<rewritten>"},
"experience": [<rewritten experience array>]
}
}'
✅ Resume tailored for [Job Title] at [Company].resumex_send_telegram — Send resume to Telegramresumex_get.send_pdf.py for formatter logic).python3 {baseDir}/send_pdf.py \
--api-key "$RESUMEX_API_KEY" \
--chat-id "$TELEGRAM_CHAT_ID" \
--bot-token "$TELEGRAM_BOT_TOKEN"
TELEGRAM_BOT_TOKEN or TELEGRAM_CHAT_ID are not set, print the formatted resume to stdout and tell the user:
"Here's your resume summary. To get the full PDF, open resumex.dev/app → click Download PDF or press Ctrl+P → Save as PDF."
Note: Resumex does not generate PDFs server-side. The PDF workflow is:
Resumex data → your agent → Telegram message + portfolio link → user opens link → Ctrl+P → PDF
"company": "Google".| Error | Cause | Fix |
|---|---|---|
401 Invalid API Key | Key wrong or revoked | Dashboard → Resumex API → Regenerate Key |
404 No resume found | No active resume exists | Open resumex.dev/app and save your profile first |
HTTP 500 with SQL hint | Admin setup incomplete | Admin must run api_keys_setup.sql in Supabase |
| Telegram send fails | Bad token or chat ID | Verify TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID env vars |
| POST overwrites data | Stale workspace used | Always re-fetch before POST — see Rule #1 above |
RESUMEX_API_KEY is scoped to your account only.TELEGRAM_BOT_TOKEN lives in your OpenClaw environment — Resumex never sees it.TELEGRAM_CHAT_ID lives in your OpenClaw environment — Resumex never sees it.