SilkTrain / Developer guide

Bring a project from your tools into SilkTrain

Read your organization's briefs, compare proposal terms and prepare a draft using HTTP, JavaScript, the command line or an MCP-compatible assistant. A buyer signs in to check the scope and publish a draft. Contract awards and payments require the normal authenticated workroom.

Download the OpenAPI contract. Read GET /api/v1/capabilities using an organization key to discover its permissions and the actions a person completes in the workroom.

Connect an organization

An active organization owner with verified email, two-factor sign-in and a signed organization agreement can issue a key. Select draft access only if the connected tool needs it. Copy the displayed secret to your secret manager. Keys expire after 90 days and can be revoked immediately. Manage access keys.

HTTP endpoints

The production base URL is https://app.silktrain.ai/api/v1. Use Accept: application/json and Authorization: Bearer <key> for private calls. Keep tokens on your server.

CLI, SDK and MCP

Download the JavaScript client and use Node 22 or later. Set SILKTRAIN_API_TOKEN through your environment or secret manager. The default origin is the production SilkTrain app. Set SILKTRAIN_API_URL only when testing against a trusted deployment.

node hiring.mjs workflows
node hiring.mjs briefs
node hiring.mjs shortlist 12
node hiring.mjs draft brief.json

Example brief.json. Replace the example UUID for each distinct draft.

{
  "idempotency_key": "ad89259f-e463-437c-beb5-780cc162df41",
  "service": "training-evaluation",
  "workflow": "preference-data",
  "mode": "fixed",
  "title": "Review support-answer pairs",
  "outcome": "Rank a pilot batch using the agreed rubric.",
  "acceptance": "Deliver reviewed pairs and explain disagreements.",
  "tools": "Client-managed annotation workspace"
}

For MCP, configure your client to launch node with arguments /absolute/path/hiring.mjs and mcp. Pass the secret through the process environment. The local server exposes five hiring tools over standard input/output. A draft remains private until the buyer publishes it.

import { createHiringClient } from './hiring.mjs';
const client = createHiringClient();
const firstPage = await client.briefs({ limit: 10 });

A 401 response means the key expired, was revoked, or lost its owner privileges. A 403 means the key lacks the required access. Correct invalid fields after 422 and back off after 429.