In the app
Open the skill, fill in its inputs, and click Run. The rows appear in a table you can download. See Export data.From the API
Before you start, create an API key in Settings → API Keys with theskills:invoke scope (and runs:read to read background runs). See API keys.
To see what a skill takes and returns, read its contract with GET /v1/skills/{slug}: input_schema lists the inputs, output_json_schema the row shape.
Wait for the rows
POST /v1/skills/{slug}/run runs the skill and answers when it finishes. Put the inputs at the top level of the body:
data. If your account already has as many runs in progress as it may, this call does not wait: it returns 429 with Retry-After. Run in the background instead.
Run in the background
POST /v1/skills/{slug}/runs answers at once with a run_id. Inputs go under inputs. If your account is busy, the run waits in a queue.
GET /v1/runs/{run_id} until status is no longer queued or running, or set webhook_url and Valendata sends you the finished run. See Webhooks. In a finished background run, the rows are in rows.
To stop a run, call POST /v1/runs/{run_id}/cancel. To list a skill’s past runs, call GET /v1/skills/{slug}/runs.
Run settings
These go next to the inputs and are not inputs themselves:
Inputs are checked before anything runs. A missing input, a wrong type, or an unknown name returns
422 with every problem listed, and nothing is charged. See Errors and limits.
From an AI assistant
Each skill is a tool namedskill_<slug>. See Connect your AI assistant.

