Interview100x partner API v1
Quickstart
Create a practice invite, send the link, and watch the person land in practice — first in test mode.
Set INTERVIEW_API_KEY to your partner key (test keys start with i100x_test_). Every sample runs as written.
1. Check your key
curl
curl -sS "${INTERVIEW_BASE:-https://www.interview100x.com}/api/partner/v1/me" \
-H "Authorization: Bearer $INTERVIEW_API_KEY"2. Create a practice invite
The job's description is read once to set up the person's practice. external_ref is your id for the person; repeating it hands back the same live invite.
curl
curl -sS -X POST "${INTERVIEW_BASE:-https://www.interview100x.com}/api/partner/v1/practice-invites" \
-H "Authorization: Bearer $INTERVIEW_API_KEY" \
-H "Idempotency-Key: practice-crm-42" \
-H "Content-Type: application/json" \
-d '{
"email": "lee.park@example.com",
"full_name": "Lee Park",
"external_ref": "crm-42",
"sub_partner_ref": "spring-cohort",
"job": {
"title": "Product Manager",
"company_label": "Globex",
"description": "Own the payments roadmap with engineering and design. Ship two launches a quarter.",
"country": "CA"
}
}'Node
const base = process.env.INTERVIEW_BASE || "https://www.interview100x.com";
const res = await fetch(`${base}/api/partner/v1/practice-invites`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTERVIEW_API_KEY}`,
"Idempotency-Key": "practice-crm-42-node",
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "lee.park@example.com",
"full_name": "Lee Park",
"external_ref": "crm-42",
"sub_partner_ref": "spring-cohort",
"job": {
"title": "Product Manager",
"company_label": "Globex",
"description": "Own the payments roadmap with engineering and design. Ship two launches a quarter.",
"country": "CA"
}
}),
});
// Send invite.url to this person only: it is their personal practice link.
console.log(JSON.stringify(await res.json()));Python
import json, os, urllib.request
base = os.environ.get("INTERVIEW_BASE", "https://www.interview100x.com")
body = {
"email": "lee.park@example.com",
"full_name": "Lee Park",
"external_ref": "crm-42",
"sub_partner_ref": "spring-cohort",
"job": {
"title": "Product Manager",
"company_label": "Globex",
"description": "Own the payments roadmap with engineering and design. Ship two launches a quarter.",
"country": "CA"
}
}
req = urllib.request.Request(
base + "/api/partner/v1/practice-invites",
data=json.dumps(body).encode(),
method="POST",
headers={
"Authorization": "Bearer " + os.environ["INTERVIEW_API_KEY"],
"Idempotency-Key": "practice-crm-42-python",
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(req) as res:
print(json.dumps(json.load(res)))The answer carries the personal url (send it to this person only), when it expires, and the offer your partnership can make right now.
3. Follow the invite
curl
curl -sS "${INTERVIEW_BASE:-https://www.interview100x.com}/api/partner/v1/practice-invites/$PRACTICE_INVITE_ID" \
-H "Authorization: Bearer $INTERVIEW_API_KEY"Node
const base = process.env.INTERVIEW_BASE || "https://www.interview100x.com";
const res = await fetch(`${base}/api/partner/v1/practice-invites/${process.env.PRACTICE_INVITE_ID}`, {
headers: { Authorization: `Bearer ${process.env.INTERVIEW_API_KEY}` },
});
console.log(JSON.stringify(await res.json()));Python
import json, os, urllib.request
base = os.environ.get("INTERVIEW_BASE", "https://www.interview100x.com")
req = urllib.request.Request(
base + "/api/partner/v1/practice-invites/" + os.environ["PRACTICE_INVITE_ID"],
headers={"Authorization": "Bearer " + os.environ["INTERVIEW_API_KEY"]},
)
with urllib.request.urlopen(req) as res:
print(json.dumps(json.load(res)))The status moves from created to opened (they visited the link) to signed_up (they signed in). Subscribe a webhook to hear about it instead of polling. In test mode the link opens a test page, /test/practice/{token}, with buttons that simulate sign-up, a plan and a practice session.
4. Read your monthly counts
curl
curl -sS "${INTERVIEW_BASE:-https://www.interview100x.com}/api/partner/v1/stats?month=2026-09" \
-H "Authorization: Bearer $INTERVIEW_API_KEY"A month is published on the 1st of the month after next; before that the stats answer 422.