Se ejecuta enWrit Cloud
En esta página
Alguien ya lo construyó.
Un listado es un workflow o una automatización que alguien consiguió que funcionara, compartido como algo que puedes ejecutar. Lo instalas — gratis — enlazas tus propias credenciales y entradas a las ranuras que declara, y lo ejecutas: POST /api/marketplace/listings/{slug}/run. Ejecutas un listado; no lo lees.
explorar ▸ filtros
Encuentra uno que ya funcione.
GET /api/marketplace/listings acepta los filtros de abajo, y GET /api/marketplace/listings/{slug} lee uno entero. Los resultados llevan rendimiento medido, no adjetivos.
| Filtro | Valores |
|---|---|
q · category · tag | Texto libre, categoría, etiqueta. |
asset_type | workflow | automation |
sort | rank | fastest | success | on_time | newest | most_used |
capability_key · target_site | Qué hace, y en qué sitio lo hace. |
min_success_rate | Suelo de éxito medido. |
max_p50_latency_ms · max_p95_latency_ms | Techos de latencia medida. |
min_on_time_rate | Con qué frecuencia termina dentro de la base prometida. |
min_reputation_tier | rising | trusted | top |
verified_only · established_only | Limitar a creadores verificados o veteranos. |
limit · offset | limit 1–100, 24 por defecto. |
Qué te dice la ficha de un listado
Cada ficha lleva las mismas señales medidas, así que dos listados para el mismo trabajo se comparan directamente:
- Latencia, tasa de éxito y tasa de puntualidad — medidas sobre ejecuciones reales.
- Un aviso de pico de fallos cuando las ejecuciones recientes han empeorado.
- El nivel de reputación del creador.
- Su posición dentro del conjunto de capacidades en el que compite.
instalación ▸ gratis
Instalar es gratis, y es idempotente.
POST /api/marketplace/listings/{slug}/install pone el listado en tu cuenta. Llamarlo dos veces no lo instala dos veces — una instalación es idempotente por cuenta y listado. Lo que aterriza es una instantánea congelada y sin datos: los pasos más el manifest de ranuras que necesita, con las credenciales del creador retiradas al publicar.
En el marketplace no se vende nada. Instalar no cuesta nada, el creador no cobra nada, y una ejecución solo cuesta cómputo de la plataforma Writ — gratis y sin medir en tu propia máquina, medido por tiempo de ejecución en la flota cloud gestionada.
enlaces ▸ la costura
Enlazas tus propias credenciales. Ese es todo el diseño.
Un listado declara ranuras: el acceso que necesita, el secreto que necesita, las entradas que toma. No trae las del creador. Tú llenas las ranuras con cosas tuyas, y una ejecución las resuelve desde tus enlaces y desde ningún otro sitio. Lee las ranuras con GET /api/marketplace/installs/{slug}/manifest, antes o después de instalar.
| slot_kind | Qué va dentro |
|---|---|
persona | Una identidad de acceso guardada. Instalaciones de workflow y de automation. |
secret | Una referencia a un secreto de tu bóveda, nunca el valor. |
input | Un valor llano que el workflow toma. |
monitor_url | Instalaciones de automatización: la página a vigilar. |
notify_recipient | Instalaciones de automatización: adónde va el aviso. |
Poner y quitar uno
PUT /api/marketplace/installs/{slug}/bindings pone una ranura; DELETE con ?slot_kind= y ?slot_key= la limpia. El cuerpo son cinco campos:
slot_kind · slot_key | Qué ranura. Ambos obligatorios, al poner y al quitar. |
persona_id | Para una ranura persona. |
vault_secret_ref | Para una ranura secret — el nombre, no el secreto. |
input_value | Para una ranura input, monitor_url o notify_recipient. |
Un enlace de persona solo puede apuntar a una persona tuya. No hay forma de enlazar la identidad de acceso de otra persona, ni de que un listado llegue trayendo una.
Instalar, enlazar, ejecutar
Las cuatro llamadas en el orden en que las haces.
install-bind-run.sh
# 1. See what slots this listing needs before you install it.
curl https://api.usewrit.app/api/marketplace/installs/invoice-puller/manifest \
-H "Authorization: Bearer $WRIT_API_KEY"
# 2. Install. Free, and idempotent per account + listing.
curl -X POST https://api.usewrit.app/api/marketplace/listings/invoice-puller/install \
-H "Authorization: Bearer $WRIT_API_KEY"
# 3. Bind YOUR persona and YOUR secret into the slots it declared.
curl -X PUT https://api.usewrit.app/api/marketplace/installs/invoice-puller/bindings \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"slot_kind": "persona", "slot_key": "login", "persona_id": 12}'
curl -X PUT https://api.usewrit.app/api/marketplace/installs/invoice-puller/bindings \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"slot_kind": "input", "slot_key": "account_number", "input_value": "88213"}'
# 4. Run it. Everything it signs in with came from step 3.
curl -X POST https://api.usewrit.app/api/marketplace/listings/invoice-puller/run \
-H "Authorization: Bearer $WRIT_API_KEY" slot kinds
// A workflow install declares these slot kinds:
{ "slot_kind": "persona", "slot_key": "login", "persona_id": 12 }
{ "slot_kind": "secret", "slot_key": "api_key", "vault_secret_ref": "acme-key" }
{ "slot_kind": "input", "slot_key": "region", "input_value": "eu-west" }
// An automation install adds two more:
{ "slot_kind": "monitor_url", "slot_key": "watch", "input_value": "https://example.com/pricing" }
{ "slot_kind": "notify_recipient", "slot_key": "alerts", "input_value": "[email protected]" }
// Clearing one is a DELETE with the same two identifiers:
// DELETE /api/marketplace/installs/{slug}/bindings?slot_kind=input&slot_key=region after-the-run.sh
# Where this install sits against the creator's caps.
curl https://api.usewrit.app/api/marketplace/installs/invoice-puller/usage \
-H "Authorization: Bearer $WRIT_API_KEY"
# Everything you have installed.
curl https://api.usewrit.app/api/marketplace/installs -H "Authorization: Bearer $WRIT_API_KEY"
# A run went wrong — open a report.
curl -X POST https://api.usewrit.app/api/marketplace/installs/invoice-puller/report \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "The run signed in but returned no rows."}'
# Your own reports: open | reviewing | resolved | dismissed.
curl https://api.usewrit.app/api/marketplace/reports -H "Authorization: Bearer $WRIT_API_KEY" ejecución ▸ qué se garantiza
Qué promete una ejecución.
POST /api/marketplace/listings/{slug}/run ejecuta el listado en tu cuenta. Cuatro cosas se cumplen en cada ejecución:
- Usa tus enlaces, y solo tus enlaces — Personas, credenciales, secretos y entradas se resuelven desde lo que enlazaste. Nada llega del creador.
- Ejecuta la instantánea que instalaste — La instalación captura la receta tal como estaba ese día. Que el creador edite su workflow en vivo no cambia lo que tu instalación ejecuta.
- Una ranura obligatoria vacía la bloquea — La ejecución responde 422 en vez de arrancar y fallar a medio camino. Enlaza la ranura y vuelve a ejecutar.
- El listado en sí es gratis — No hay cargo por el listado ni comisión del creador en una ejecución. Lo que una ejecución puede costar es cómputo de la plataforma Writ: nada en tu propia máquina, tiempo de ejecución medido en la flota cloud gestionada.
El resto del ciclo de vida
Todo lo demás que puedes hacer con una instalación:
| Llamada | Qué hace |
|---|---|
GET /api/marketplace/installs | Todo lo que has instalado. |
GET /api/marketplace/installs/{slug}/usage | status y last_run_at, más los topes del creador con used, remaining y reset por ventana. |
POST /api/marketplace/installs/{slug}/sync | Mover tu instalación a la receta más nueva del creador. Requiere tu consentimiento — nunca ocurre sola. |
DELETE /api/marketplace/listings/{slug}/install | Desinstalar. Arrastra tus enlaces. |
Una instalación sigue funcionando aunque el listado se despublique después. Instalaste una instantánea, no un vínculo vivo al espacio del creador.
reseñas ▸ ejecuciones verificadas
Las reseñas vienen de quien lo ejecutó.
Solo quien instaló un listado y acumuló suficientes ejecuciones con éxito puede reseñarlo, y una organización tiene una reseña. Por eso las valoraciones siguen a las señales medidas en vez de separarse de ellas.
| Llamada | Qué hace |
|---|---|
GET /api/marketplace/listings/{slug}/reviews | Reseñas de cuentas que realmente lo ejecutaron, más el resumen de valoración. |
GET /api/marketplace/listings/{slug}/reviews/eligibility | Si ya puedes reseñar, y qué falta. |
POST /api/marketplace/listings/{slug}/reviews | Dejar la tuya. Una por organización. |
DELETE /api/marketplace/listings/{slug}/reviews/me | Retirarla. |
problemas ▸ reportes
Cuando no cumple.
Reporta la ejecución que salió mal. El creador y los administradores de la plataforma reciben aviso, y un listado que acumula reportes sin resolver se marca para revisión.
| Llamada | Qué hace |
|---|---|
POST /api/marketplace/installs/{slug}/report | Plantear un problema con una instalación, opcionalmente atado a la ejecución que falló. |
GET /api/marketplace/reports | Tus propios reportes, cada uno con status: open | reviewing | resolved | dismissed. |
publicar ▸ creadores
Publicar el tuyo.
POST /api/marketplace/publish necesita una cuenta verificada y accept_creator_agreement: true. Cualquier plan, Free incluido, puede publicar, y lo que publicas es una receta gratuita: tus personas, secretos y sesiones se retiran al publicar, así que lo que otros instalan nunca puede contenerlos. El cuerpo describe el activo y las barreras que quieres en cada ejecución.
| Campo | Qué hace |
|---|---|
asset_type | workflow | automation. |
workflow_id · automation_id | Lo que publicas. |
title · summary · category | title hasta 140 caracteres. |
keywords[] · tags[] · icon · cover_image_url | Cómo se encuentra y cómo se ve. |
intent | Hasta 60 caracteres — el trabajo que hace, en una línea. |
visibility | Quién puede ver el listado. |
baseline_duration_ms | La velocidad que prometes. La tasa de puntualidad se mide contra ella. |
marketplace_exec_policy | customer | cloud | local | creator — dónde puede ejecutarse. |
usage_limits | Topes por instalación, globales y de concurrencia, cada uno con su ventana y su modo. |
input_rules | Una regex por entrada, aplicada en cada ejecución de tu listado. |
Publicar una receta
La llamada de publicación, y las barreras que van con ella.
publish.sh
curl -X POST https://api.usewrit.app/api/marketplace/publish \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accept_creator_agreement": true,
"asset_type": "workflow",
"workflow_id": 41,
"title": "Invoice puller",
"summary": "Signs in and pulls every invoice since a date you pass in.",
"category": "finance",
"keywords": ["invoices", "accounting"],
"tags": ["billing"],
"intent": "Pull invoices from a billing portal",
"baseline_duration_ms": 18000,
"marketplace_exec_policy": "cloud",
"usage_limits": {
"per_buyer": { "count": 200, "window": "day", "mode": "enforce" },
"global": { "count": 20000, "window": "month", "mode": "enforce" },
"max_concurrent_per_buyer": { "count": 4, "mode": "enforce" }
},
"input_rules": {
"rules": {
"account_number": { "pattern": "^[0-9]{4,8}$", "message": "4 to 8 digits" }
}
}
}' limits + rules
// usage_limits — three independent caps, each with its own mode.
// mode: "off" | "warn" | "enforce"
// window: per_buyer "day" | "month" · global "day" | "month" | "lifetime"
{
"per_buyer": { "count": 200, "window": "day", "mode": "enforce" },
"global": { "count": 20000, "window": "month", "mode": "enforce" },
"max_concurrent_per_buyer": { "count": 4, "mode": "enforce" }
}
// input_rules — one regex per input or secret slot, checked on every run.
// flags: any subset of "i", "m", "s". message is what the runner is shown.
{
"rules": {
"account_number": { "pattern": "^[0-9]{4,8}$", "flags": "", "message": "4 to 8 digits" }
}
} pi ▸ ejecutar, no leer
La gente ejecuta un listado. No lo lee.
Si publicas una receta que te costó semanas afinar, compartirla no debería ser regalarla. Es una restricción de diseño, no una promesa — así que esto es exactamente cómo está montado:
- La instalación captura una instantánea sin datos — Lo que aterriza en la cuenta de otra persona es la forma de la receta, sin los datos contra los que se construyó.
- Ningún endpoint de instalación devuelve los pasos — No hay vía de lectura de la receta. Ni en el listado, ni en la instalación, ni en una ejecución.
- La vía de escritorio recibe una receta sellada — Cuando una ejecución corre en una máquina, esa máquina recibe una forma que solo ella puede abrir.
referencia ▸ siguiente
Alrededor del marketplace
Todos los endpoints de marketplace en un sitio.
→ AutenticaciónClaves, scopes y qué alcanza una clave de socio.
→ WorkflowsConstruir lo que vas a publicar.
→ Accesos y secretosPersonas y referencias de bóveda — a qué apunta un enlace.
→ Facturación y usoCómo se miden ejecuciones, páginas y tokens de IA.
→ Cuenta y equipoQuién en tu organización puede instalar y publicar.
→faq
Preguntas de marketplace, respondidas.
¿El creador recibe mi acceso cuando instalo su listado?
Si el creador cambia su workflow, ¿cambia mi instalación?
¿Cuánto cuesta un listado?
¿Qué hace falta para publicar algo?
¿Puede alguien ver los pasos de mi workflow?
¿Dónde se ejecuta un listado instalado?
fin ▸ instalar uno
Instala uno y enlaza tu propio acceso.
El manifest te dice qué ranuras pide un listado antes de que lo instales. Léelo primero, instala después.