talkspresso
使用 Talkspresso REST API 管理 Talkspresso 业务(服务、约会、产品、客户、收入、日历)。当用户想要检查预订、创建服务、管理数字产品、查看收入、更新个人资料、安排会话或执行与其 Talkspresso 帐户相关的任何操作时使用。需要 TALKSPRESSO_API_KEY 环境变量。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~baron-talkspresso-talkspressocURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~baron-talkspresso-talkspresso/file -o baron-talkspresso-talkspresso.md## 概述(中文)
使用 Talkspresso REST API 管理 Talkspresso 业务(服务、约会、产品、客户、收入、日历)。当用户想要检查预订、创建服务、管理数字产品、查看收入、更新个人资料、安排会话或执行与其 Talkspresso 帐户相关的任何操作时使用。需要 TALKSPRESSO_API_KEY 环境变量。
## 原文
# Talkspresso
Manage a Talkspresso business via the REST API using `curl` and `jq`.
## Setup
The user needs a `TALKSPRESSO_API_KEY`. If missing:
1. Direct them to https://app.talkspresso.com/settings/api-keys to generate one
2. If they don't have a Talkspresso account, direct them to https://talkspresso.com/signup
3. Set it: `export TALKSPRESSO_API_KEY="tsp_..."`
If the user is new to Talkspresso, help them set up: profile, timezone, availability, first service.
## API Pattern
All calls follow this pattern:
```bash
# GET
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/ENDPOINT" | jq .data
# POST
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"value"}' \
"https://api.talkspresso.com/ENDPOINT" | jq .data
# PUT
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"value"}' \
"https://api.talkspresso.com/ENDPOINT" | jq .data
# DELETE
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/ENDPOINT" | jq .data
```
Use `jq .data` on every response. The API wraps all responses in `{ "data": ... }`.
## Quick Reference
### Profile
```bash
# Get profile
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/profile/me" | jq .data
# Update profile
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"expert_title":"Executive Coach","about":"Short bio","bio":"Full bio","categories":["coaching"]}' \
"https://api.talkspresso.com/profile" | jq .data
```
Key fields: `expert_title`, `about`, `bio`, `categories` (array), `handle` (URL slug), `profile_photo`.
### Services (Video Calls, Workshops)
```bash
# List services
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/service/me" | jq .data
# Create service
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title":"Strategy Call",
"short_description":"1-on-1 strategy session",
"long_description":"",
"price":100,
"duration":30,
"logistics":{"session_type":"single","capacity_type":"single","capacity":1}
}' \
"https://api.talkspresso.com/service" | jq .data
# Update service
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"New Title","price":150}' \
"https://api.talkspresso.com/service/SERVICE_ID" | jq .data
# Delete service
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/service/SERVICE_ID" | jq .data
```
Service types (via `logistics`):
- **1:1 call**: `{"capacity_type":"single","capacity":1}`
- **Group session**: `{"capacity_type":"group","capacity":10}`
- **Webinar**: `{"capacity_type":"group","capacity":50,"is_webinar":true}`
### Products (Digital Downloads)
```bash
# List products
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/product/me" | jq .data
# Create product
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title":"Leadership Guide",
"slug":"leadership-guide",
"short_description":"Comprehensive guide for emerging leaders",
"long_description":"Full description here...",
"price":29,
"product_type":"download",
"status":"active"
}' \
"https://api.talkspresso.com/product" | jq .data
# AI-generate product details from description
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"A guide about leadership for new managers","productType":"download"}' \
"https://api.talkspresso.com/product/generate-details" | jq .data
# Update product
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"price":39,"status":"active"}' \
"https://api.talkspresso.com/product/PRODUCT_ID" | jq .data
# Delete product
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/product/PRODUCT_ID" | jq .data
# Product analytics
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/product/analytics" | jq .data
# List purchases
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/product/purchases" | jq .data
```
Product types: `download`, `video`, `bundle`. Status: `draft`, `active`, `archived`.
### Appointments & Scheduling
```bash
# List appointments (upcoming by default)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/appointments/me?status=upcoming" | jq .data
# Get specific appointment
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/appointments/APT_ID" | jq .data
# Check available time slots
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-02-20","interval":30,"provider_id":"PROVIDER_ID"}' \
"https://api.talkspresso.com/appointments/slots" | jq .data
# Create appointment (does NOT send email)
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"client_name":"Jane Smith",
"client_email":"jane@example.com",
"service_id":"SERVICE_ID",
"scheduled_date":"2026-02-20",
"scheduled_time":"10:00",
"is_complimentary":true,
"skip_email":true
}' \
"https://api.talkspresso.com/appointments/invite" | jq .data
# Send the invitation email (after reviewing)
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' \
"https://api.talkspresso.com/appointments/APT_ID/resend-invite" | jq .data
# Approve pending booking
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/appointments/APT_ID/approve" | jq .data
# Cancel appointment
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/appointments/APT_ID/cancel" | jq .data
```
**Important:** Always create appointments with `skip_email: true` first. Show the user the details. Only send the invitation email after they confirm.
### Clients
```bash
# List clients (optional search)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/client/my?search=jane" | jq .data
# Get client details + booking history
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/client/CLIENT_ID/appointments" | jq .data
# Get session history (summaries, action items)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/client/CLIENT_ID/session-history" | jq .data
```
### Earnings
```bash
# Get transactions
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/transaction/my?limit=50" | jq .data
```
### Calendar & Availability
```bash
# Get calendar settings (timezone, availability windows)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
"https://api.talkspresso.com/calendar/me" | jq .data
# Update timezone
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"timezone":"America/New_York"}' \
"https://api.talkspresso.com/calendar" | jq .data
# Update availability windows
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"availability":{"Monday":{"is_selected":true,"start_time":"09:00","end_time":