A stable, versioned REST API for enterprise integration. Post demands, browse the engineer directory, track milestones, and receive signed webhooks.
All v1 endpoints require an API key. Create one on the Enterprise page, then send it as a Bearer token. Keys are only issued to employer / enterprise accounts.
Base URL: https://talengineer.us/api/v1/ent
Auth header: Authorization: Bearer TE_your_key_here
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/ent/demands | List your enterprise demands (paginated: page, limit). |
| POST | /api/v1/ent/demands | Create a demand. Body: title, description, budget, region. |
| GET | /api/v1/ent/talents | Browse the public engineer directory (no PII). Query: region, skills, page, limit. |
| GET | /api/v1/ent/demands/:id/milestones | List milestones for a demand you own. |
Configure a webhook URL per API key on the Enterprise page. When you save it, we generate a signing secret (shown once). We POST a signed JSON body to your URL on these events:
| Event | Description |
|---|---|
milestone.funded | An employer funded a milestone into escrow. |
milestone.released | Escrowed funds were released to the engineer. |
demand.assigned | An engineer was assigned to your demand. |
Every delivery is a JSON body with this shape. The signature is computed over the exact bytes of this body.
{
"event": "milestone.funded",
"payload": { "milestone_id": 123, "demand_id": 45 },
"timestamp": "2026-07-17T12:00:00.000Z"
}Each request carries an X-TalEngineer-Signature header: the hex HMAC-SHA256 of the raw body, keyed by your webhook secret. Recompute it and compare in constant time:
const crypto = require('crypto');
// Express: capture the RAW body for this route (e.g. express.raw),
// then verify before trusting the payload.
function verifyTalengineerWebhook(rawBody, headerSignature, webhookSecret) {
const expected = crypto
.createHmac('sha256', webhookSecret)
.update(rawBody) // the exact bytes we sent
.digest('hex');
// Constant-time compare to avoid timing attacks.
const a = Buffer.from(headerSignature || '', 'hex');
const b = Buffer.from(expected, 'hex');
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
// Usage inside your handler:
// const sig = req.headers['x-talengineer-signature'];
// if (!verifyTalengineerWebhook(req.rawBody, sig, process.env.TE_WEBHOOK_SECRET)) {
// return res.status(401).end();
// }Manage API keys & webhooksTalengineer is the first industrial-automation talent platform that AI agents can call directly.
POST /api/mcp is a stateless JSON-RPC 2.0 endpoint implementing the Model Context Protocol (MCP): initialize, tools/list and tools/call. Point Claude Desktop, an IDE agent, or any MCP-compatible client at it, and your agent can search engineers, check rate benchmarks, and prepare demand drafts for you.
Base URL: https://talengineer.us/api/mcp
Auth header: Authorization: Bearer TE_your_key_here
Authentication reuses your v1 API key — send it as a Bearer token, exactly like the REST endpoints above.
| Tool | Description |
|---|---|
search_engineers | Search the public engineer directory (no PII). Filters: track, region, skill, maxRate, limit. |
get_rates | Regional rate benchmarks, optionally filtered by region / specialty. |
get_certification_info | The certification system: 4 tracks × levels L1–L3, exam rules and validity. |
parse_demand | Parse a free-form project need (any language) into a structured demand draft. Nothing is saved. |
get_my_projects | List the projects owned by the API key account. |
get_milestone_status | Milestone / escrow status for a project you participate in. |
create_demand_draft | Save a demand as a private draft (status = draft) — never auto-published. |
Every tool is read-only except create_demand_draft, which only saves a private draft (status = draft). Drafts are never listed publicly, and publishing always requires a human click in the UI.
curl -X POST https://talengineer.us/api/mcp \
-H "Authorization: Bearer TE_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_engineers",
"arguments": { "region": "Monterrey", "skill": "Siemens S7", "limit": 3 }
}
}'