Turing++ API

v1

Dual-test SOI classification per US Patent 12,271,444. Classifies entities as Human, AI, or Non-AI Software.

Base URL https://turingpp.com/api/v1

Classification Method

The system administers an automated challenge to a System of Interest (SOI) consisting of two distinct tests:

  1. First Test (Human Ability) — an NLP challenge that tests language understanding: word sense disambiguation, sentiment analysis, co-reference resolution, figurative language, and pragmatic inference.
  2. Second Test (Software Ability) — a math computation challenge that tests computational precision. Passing requires a correct answer with high decimal precision or fast solve speed.

The system then calculates whether the SOI has each ability, and characterizes the SOI using the classification matrix:

Human AbilitySoftware AbilityClassification
PASSPASSAI
PASSFAILHUMAN
FAILPASSNON-AI SOFTWARE
FAILFAILNON-AI SOFTWARE

Key Insight

Only AI demonstrates both human-like cognition (language understanding) and computational ability (precise math). Humans pass the language test but produce approximate math answers. Non-AI software computes precisely but fails to understand language nuance.

GET /api/v1/challenge?type=human_ability|software_ability

Generate a challenge for SOI classification. The type parameter selects which test to administer.

Query Parameters

ParamValuesDescription
typehuman_ability | software_abilityWhich test to generate. Defaults to software_ability.

Response — Human Ability

200 OK
{
  "id": "abc-123-def-456",
  "test_type": "human_ability",
  "question": "In the sentence \"She deposited her paycheck at the bank\", what does \"bank\" mean?",
  "options": ["The edge of a river", "A financial institution", "To tilt or lean"],
  "hint": "Consider the context — what do you do with a paycheck?",
  "created_at": "2026-03-22T18:10:35.290Z",
  "expires_at": "2026-03-22T18:15:35.290Z"
}

Response — Software Ability

200 OK
{
  "id": "def-456-ghi-789",
  "test_type": "software_ability",
  "question": "A train travels 247 miles in 4.78 hours. What is the average speed in mph?",
  "options": null,
  "hint": "Divide distance by time.",
  "created_at": "2026-03-22T18:10:35.290Z",
  "expires_at": "2026-03-22T18:15:35.290Z"
}

Fields

FieldTypeDescription
idstringUUID for this challenge
test_typestring"human_ability" or "software_ability"
questionstringThe challenge to present to the SOI
optionsstring[] | nullMultiple-choice options (human_ability only)
hintstringA hint for the challenge
created_atstringISO timestamp when created
expires_atstringISO timestamp when it expires (5 min)
POST /api/v1/verify

Submit an answer to a challenge. When prior_verification_id is included, the server combines both test results and applies the classification matrix.

Request Body

Test 1 (human_ability) — no prior
{
  "challenge_id": "abc-123-def-456",
  "answer": 1
}
Test 2 (software_ability) — with prior, triggers classification
{
  "challenge_id": "def-456-ghi-789",
  "answer": 51.67364016736402,
  "prior_verification_id": "ver-111-222-333"
}

Request Fields

FieldTypeRequiredDescription
challenge_idstringYesUUID of the challenge being answered
answerint | floatYesOption index (0-based) for NLP, or numeric answer for math
prior_verification_idstringNoVerification ID from Test 1 — triggers classification

Response (with classification)

200 OK
{
  "verification_id": "ver-444-555-666",
  "test_type": "software_ability",
  "passed": true,
  "solve_time_ms": 142,
  "classification": "AI",
  "has_human_ability": true,
  "has_software_ability": true,
  "metadata": {
    "fingerprint": { "user_agent": 0.8, "timing_pattern": 0.9, ... },
    "software_ability_metrics": {
      "relative_error": 0.00001,
      "decimal_places": 14,
      "is_correct": true,
      "is_precise": true,
      "is_fast": true
    }
  },
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "result": "Classification: AI. Human ability: PASS. Software ability: PASS."
}

Response Fields

FieldTypeDescription
verification_idstringUUID — use as prior_verification_id for the second test
test_typestring"human_ability" or "software_ability"
passedbooleanWhether the SOI passed this specific test
solve_time_msintegerTime from challenge creation to answer submission
classificationstring?Final classification result (only when prior_verification_id provided)
has_human_abilityboolean?Test 1 result (only with classification)
has_software_abilityboolean?Test 2 result (only with classification)
metadataobjectBehavioral fingerprint + software ability metrics
tokenstring?JWT token (only when classified as AI)
resultstringHuman-readable summary
GET /api/v1/status?token=eyJ...

Validate a JWT token issued after AI classification. Tokens expire after 1 hour.

200 OK
{
  "valid": true,
  "classification": "AI",
  "challenge_id": "def-456-ghi-789",
  "issued_at": "2026-03-22T18:10:57Z",
  "expires_at": "2026-03-22T19:10:57Z"
}

Classification Flow

1

Get Human Ability Challenge

GET /api/v1/challenge?type=human_ability — returns an NLP question with multiple-choice options.

2

Submit Test 1 Answer

POST /api/v1/verify with the option index. Returns verification_id and passed (boolean).

3

Get Software Ability Challenge

GET /api/v1/challenge?type=software_ability — returns a math computation problem.

4

Submit Test 2 Answer + Classify

POST /api/v1/verify with the numeric answer AND prior_verification_id from step 2. Server applies the classification matrix and returns the final classification.

Software Ability Thresholds

The second test determines software ability based on computational precision indicators. An SOI passes the software ability test when its answer is correct AND demonstrates either high precision or fast solving speed.

ThresholdValuePurpose
Correctness<= 1% relative errorAnswer must be mathematically correct
Precision>= 4 decimal placesComputational precision indicator (humans round)
Speed< 10 secondsComputational speed indicator (humans are slower)

Formula: passed = is_correct AND (is_precise OR is_fast)

Behavioral Metadata

The system collects behavioral signals that are not used in the classification but are stored as metadata for future model-level identification.

SignalWeightWhat It Measures
timing_pattern30%Solve speed anomaly detection (instant, fast, normal, slow)
number_format25%Decimal precision in raw answer string
user_agent20%Client library identification (browser vs API client)
accept_headers15%HTTP header patterns (browser vs programmatic)
request_cadence10%Inter-request timing regularity from same IP

Error Codes

CodeMeaning
400Invalid request body, missing fields, or wrong answer type for test
401Invalid or expired JWT token, or invalid/revoked API key
402Out of credits on a keyed request — buy more at /account (challenge stays reusable)
404Challenge or prior verification not found
409Challenge already used
410Challenge expired (5-minute window)
429Free-tier daily limit reached — add an API key with credits

Authentication, Credits & Pricing

Free tier: no API key. Anonymous requests are rate-limited to 25 classifications per IP per day — enough to evaluate the API and run the demo.

Paid tier: create an API key at turingpp.com/account and send it as a Bearer token. Each classification costs 1 credit, charged only on the /verify call that produces a verdict (the one carrying prior_verification_id). Issuing challenges and the first-leg verify are free; a 402 leaves the challenge reusable so you can top up and retry.

Authenticated /verify
curl -X POST https://turingpp.com/api/v1/verify \
  -H "Authorization: Bearer sk_tpp_your_key" \
  -H "Content-Type: application/json" \
  -d '{"challenge_id":"...","answer":"45.25000000000000","prior_verification_id":"..."}'

Credit packs — pay by card via Stripe

PackPriceCredits (= classifications)
Starter$202,000
Growth$7510,000
Scale$30050,000

When an SOI is classified as AI, the verify response also includes a signed JWT — cryptographic proof of the classification that any third party can validate via /status without contacting the SOI again.

Token Details

  • Algorithm: HMAC-SHA256 (HS256)
  • Expires: 1 hour after issuance
  • Payload: challenge_id, classification, iat, exp
  • Validation: GET /api/v1/status?token=...