# Droploft API

> Layer 3 raw HTTP: any endpoint not yet covered by a flow or resource verb.

- Skill: `langgenius/droploft-api` (Agent Skill)
- Install (CLI): `npx skillmds@latest add langgenius/droploft-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/langgenius/droploft-api/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: langgenius (https://skillmd.com/u/langgenius)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/langgenius/droploft-api

---


# Droploft v2 CLI — Raw API Skill

Use this when the higher-level layers don't cover what you need. The CLI takes care of authentication and the `/v1` prefix; you supply the method, path, and body.

## Usage

```bash
droploft api GET /v1/auth/me
droploft api GET /v1/documents
droploft api GET /v1/lofts/<id>/documents
droploft api POST /v1/documents --data '{"title":"x","content_hash":"...","original_bytes":12,"kind":"markdown"}'
droploft api PATCH /v1/documents/<id>/share-link --data '{"share_enabled":false}'
droploft api DELETE /v1/documents/<id>
```

Body forms:

- inline JSON: `--data '{"k":"v"}'`
- file:        `--data @./payload.json`

## Discovery

Before writing a `--data` body, look up the schema:

```bash
droploft schema search workspace
droploft schema get workspaces.create
```

## Patterns

### List + filter via jq-style flag

```bash
droploft api GET /v1/documents --jq '.[].id'
droploft api GET /v1/me/navigation --jq '.workspaces[].name'
```

### Explore an unfamiliar endpoint via verbose

```bash
droploft --verbose api GET /v1/lofts
# stderr shows method, URL, status, headers
```

## When NOT to use this skill

If a flow or resource verb already covers the operation, prefer it — those layers carry retries, polling, and human-friendly errors that raw `api` skips.

