---
title: "Build a rubric + screening link from a job description"
method: POST
path: "/api/public/v1/artifacts"
tags: ["Public API v1 — Artifacts", "Public API v1 — Artifacts"]
---

# Build a rubric + screening link from a job description

`POST /api/public/v1/artifacts`

## Request

- Base URL: `https://api.thebetterhire.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.thebetterhire.ai/api/public/v1/artifacts`
- Auth: HTTP bearer

Extracts a real competency rubric from the job description and mints a reusable candidate-screening link, exactly as the campaign console's scout does for a live req. Every artifact lands under BetterHire's house workspace (this is an outbound-campaign primitive, not a per-customer role), so an API key only needs write access — not an existing organization role or job board.

## Request body

- ArtifactRequest: A job posting to turn into a rubric + candidate screening link.
  - `company_name` string, required: The hiring company's display name.
  - `role_title` string, required: The role's title.
  - `job_description` string, required: Full job description text. Needs enough real content for a competency rubric — a one-line summary will be rejected.
  - `lane` 'agency' | 'company': 'agency' for a staffing/recruiting firm's own req, 'company' for a direct employer's req.
  - `contact_name` string, nullable: Recruiter/decision-maker name, if known.
  - `contact_email` string, nullable: Recruiter/decision-maker email, if known.
  - `country` string, nullable
  - `req_url` string, nullable: Source posting URL — used for dedup, never displayed raw.
  - `company_domain` string, nullable

## Response `201`

Successful Response

- ArtifactResponse
  - `job_role_id` string, required
  - `rubric_summary` RubricCompetency[], required
    - `name` string, required
    - `description` string, required
  - `preview_url` string, required: The tracked /i/{token} founder-preview page — rubric plus the forwardable candidate link, this is what an outreach email should carry.
  - `screening_link` string, required: The raw /screen/{token} candidate entry link — one link, one fresh AI interview per candidate who clicks it.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api.md) · [All operations](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/revisions/c8ad03e900ea?raw)
