WitNote / docs /reference /profiles.md
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
# Profiles
Profiles are browser user data directories. They hold cookies, local storage, history, and other durable browser state.
In PinchTab:
- profiles exist even when no instance is running
- one profile can have at most one active managed instance at a time
- profile IDs and names are both useful, but some endpoints require the profile ID specifically
## List Profiles
```bash
curl http://localhost:9867/profiles
# CLI Alternative
pinchtab profiles
# Response
[
{
"id": "prof_278be873",
"name": "work",
"created": "2026-02-27T20:37:13.599055326Z",
"diskUsage": 534952089,
"sizeMB": 510.17,
"running": false,
"source": "created",
"useWhen": "Use for work accounts",
"description": ""
}
]
```
Notes:
- `GET /profiles` excludes temporary auto-generated instance profiles by default
- use `GET /profiles?all=true` to include temporary profiles
- `pinchtab profiles` exists, but the HTTP API is the more reliable source of truth for structured output
## Get One Profile
```bash
curl http://localhost:9867/profiles/prof_278be873
# Response
{
"id": "prof_278be873",
"name": "work",
"path": "/path/to/profiles/work",
"pathExists": true,
"created": "2026-02-27T20:37:13.599055326Z",
"diskUsage": 534952089,
"sizeMB": 510.17,
"source": "created",
"chromeProfileName": "Your Chrome",
"accountEmail": "admin@example.com",
"accountName": "Luigi",
"hasAccount": true,
"useWhen": "Use for work accounts",
"description": ""
}
```
`GET /profiles/{id}` accepts either the profile ID or the profile name.
## Create A Profile
```bash
curl -X POST http://localhost:9867/profiles \
-H "Content-Type: application/json" \
-d '{"name":"scraping-profile","description":"Used for scraping","useWhen":"Use for ecommerce scraping"}'
# Response
{
"status": "created",
"id": "prof_0f32ae81",
"name": "scraping-profile"
}
```
Notes:
- there is no `pinchtab profile create` CLI command
- both `POST /profiles` and `POST /profiles/create` work for creating profiles
## Update A Profile
```bash
curl -X PATCH http://localhost:9867/profiles/prof_278be873 \
-H "Content-Type: application/json" \
-d '{"description":"Updated description","useWhen":"Updated usage note"}'
# Response
{
"status": "updated",
"id": "prof_278be873",
"name": "work"
}
```
You can also rename the profile:
```bash
curl -X PATCH http://localhost:9867/profiles/prof_278be873 \
-H "Content-Type: application/json" \
-d '{"name":"work-renamed"}'
```
Important:
- `PATCH /profiles/{id}` requires the profile ID
- using the profile name in that path returns an error
- a rename changes the generated profile ID because IDs are derived from the name
## Delete A Profile
```bash
curl -X DELETE http://localhost:9867/profiles/prof_278be873
# Response
{
"status": "deleted",
"id": "prof_278be873",
"name": "work"
}
```
`DELETE /profiles/{id}` also requires the profile ID.
## Start Or Stop By Profile
Start the active instance for a profile:
```bash
curl -X POST http://localhost:9867/profiles/prof_278be873/start \
-H "Content-Type: application/json" \
-d '{"headless":true}'
# Response
{
"id": "inst_ea2e747f",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9868",
"headless": true,
"status": "starting"
}
```
Stop the active instance for a profile:
```bash
curl -X POST http://localhost:9867/profiles/prof_278be873/stop
# Response
{
"status": "stopped",
"id": "prof_278be873",
"name": "work"
}
```
For these orchestrator routes, the path can be a profile ID or profile name.
## Check Whether A Profile Has A Running Instance
```bash
curl http://localhost:9867/profiles/prof_278be873/instance
# Response
{
"name": "work",
"running": true,
"status": "running",
"port": "9868",
"id": "inst_ea2e747f"
}
```
## Additional Profile Operations
### Reset A Profile
```bash
curl -X POST http://localhost:9867/profiles/prof_278be873/reset
```
This route requires the profile ID.
### Import A Profile
```bash
curl -X POST http://localhost:9867/profiles/import \
-H "Content-Type: application/json" \
-d '{"name":"imported-profile","sourcePath":"/path/to/existing/profile"}'
```
### Get Logs
```bash
curl http://localhost:9867/profiles/prof_278be873/logs
curl 'http://localhost:9867/profiles/work/logs?limit=50'
```
`logs` accepts either the profile ID or the profile name.
### Get Analytics
```bash
curl http://localhost:9867/profiles/prof_278be873/analytics
curl http://localhost:9867/profiles/work/analytics
```
`analytics` also accepts either the profile ID or the profile name.
## Related Pages
- [Instances](./instances.md)
- [Tabs](./tabs.md)
- [Config](./config.md)