API Code Examples

Get started quickly with code examples in popular programming languages.

JavaScript / Node.js

Installation

npm install @hirecharacter/api-client

Basic Usage

const HireCharacter = require('@hirecharacter/api-client');

// Initialize the client
const client = new HireCharacter({
  apiKey: 'YOUR_API_KEY'
});

// Get user list
async function getUsers() {
  try {
    const users = await client.users.list({
      page: 1,
      per_page: 20
    });
    console.log(users);
  } catch (error) {
    console.error('Error:', error);
  }
}

// Create an assessment
async function createAssessment(candidateId) {
  try {
    const assessment = await client.assessments.create({
      candidate_id: candidateId,
      assessment_type: 'full_character',
      include_signals: true
    });
    console.log('Assessment created:', assessment.assessment_id);
  } catch (error) {
    console.error('Error:', error);
  }
}

// Search for signals
async function searchSignals(name) {
  try {
    const signals = await client.signals.search({
      q: name,
      type: 'social_media',
      limit: 10
    });
    console.log('Found signals:', signals);
  } catch (error) {
    console.error('Error:', error);
  }
}

Webhook Handler

const express = require('express');
const app = express();

app.post('/webhook', express.json(), (req, res) => {
  const { event, data } = req.body;

  switch(event) {
    case 'assessment.completed':
      console.log('Assessment completed:', data.assessment_id);
      // Handle completed assessment
      break;
    case 'signal.new':
      console.log('New signal:', data.signal_id);
      // Handle new signal
      break;
    default:
      console.log('Unknown event:', event);
  }

  res.status(200).send('OK');
});

Python

Installation

pip install hirecharacter

Basic Usage

import hirecharacter
from hirecharacter.exceptions import APIError

# Initialize the client
client = hirecharacter.Client(api_key='YOUR_API_KEY')

# Get user list
def get_users():
    try:
        users = client.users.list(page=1, per_page=20)
        for user in users['data']:
            print(f"User: {user['name']} ({user['email']})")
    except APIError as e:
        print(f"Error: {e}")

# Create an assessment
def create_assessment(candidate_id):
    try:
        assessment = client.assessments.create(
            candidate_id=candidate_id,
            assessment_type='full_character',
            include_signals=True
        )
        print(f"Assessment created: {assessment['assessment_id']}")
        return assessment
    except APIError as e:
        print(f"Error: {e}")

# Generate a report
def generate_report(candidate_id):
    try:
        report = client.reports.generate(
            candidate_id=candidate_id,
            report_type='comprehensive',
            format='pdf'
        )
        print(f"Report URL: {report['download_url']}")
        return report
    except APIError as e:
        print(f"Error: {e}")

# Search for signals
def search_signals(name):
    try:
        signals = client.signals.search(
            q=name,
            type='social_media',
            limit=10
        )
        for signal in signals['data']:
            print(f"Signal: {signal['content'][:100]}...")
    except APIError as e:
        print(f"Error: {e}")

Async Example

import asyncio
import aiohttp

async def fetch_assessment(session, assessment_id):
    headers = {'Authorization': f'Bearer {API_KEY}'}
    url = f'https://api.hirecharacter.ai/v1/assessments/{assessment_id}'

    async with session.get(url, headers=headers) as response:
        return await response.json()

async def batch_assessments(assessment_ids):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch_assessment(session, aid) for aid in assessment_ids]
        results = await asyncio.gather(*tasks)
        return results

PHP

Installation

composer require hirecharacter/api-client

Basic Usage

<?php
require 'vendor/autoload.php';

use HireCharacter\Client;
use HireCharacter\Exception\APIException;

// Initialize the client
$client = new Client('YOUR_API_KEY');

// Get user list
try {
    $users = $client->users->list([
        'page' => 1,
        'per_page' => 20
    ]);

    foreach ($users['data'] as $user) {
        echo "User: {$user['name']} ({$user['email']})\n";
    }
} catch (APIException $e) {
    echo "Error: " . $e->getMessage();
}

// Create an assessment
function createAssessment($client, $candidateId) {
    try {
        $assessment = $client->assessments->create([
            'candidate_id' => $candidateId,
            'assessment_type' => 'full_character',
            'include_signals' => true
        ]);

        echo "Assessment created: {$assessment['assessment_id']}\n";
        return $assessment;
    } catch (APIException $e) {
        echo "Error: " . $e->getMessage();
    }
}

// Submit a signal
function submitSignal($client, $signalData) {
    try {
        $signal = $client->signals->create([
            'name' => $signalData['name'],
            'signal_type' => 'social_media',
            'content' => $signalData['content'],
            'source_url' => $signalData['url'],
            'confidence' => 'high'
        ]);

        echo "Signal submitted: {$signal['signal_id']}\n";
        return $signal;
    } catch (APIException $e) {
        echo "Error: " . $e->getMessage();
    }
}

Webhook Handler

<?php
$payload = json_decode(file_get_contents('php://input'), true);

if ($payload) {
    switch($payload['event']) {
        case 'assessment.completed':
            handleAssessmentCompleted($payload['data']);
            break;
        case 'signal.new':
            handleNewSignal($payload['data']);
            break;
    }

    http_response_code(200);
    echo "OK";
}

Ruby

Installation

gem install hirecharacter

Basic Usage

require 'hirecharacter'

# Initialize the client
client = HireCharacter::Client.new(api_key: 'YOUR_API_KEY')

# Get user list
begin
  users = client.users.list(page: 1, per_page: 20)
  users['data'].each do |user|
    puts "User: #{user['name']} (#{user['email']})"
  end
rescue HireCharacter::APIError => e
  puts "Error: #{e.message}"
end

# Create an assessment
def create_assessment(client, candidate_id)
  begin
    assessment = client.assessments.create(
      candidate_id: candidate_id,
      assessment_type: 'full_character',
      include_signals: true
    )
    puts "Assessment created: #{assessment['assessment_id']}"
    assessment
  rescue HireCharacter::APIError => e
    puts "Error: #{e.message}"
  end
end

# Search signals
def search_signals(client, name)
  begin
    signals = client.signals.search(
      q: name,
      type: 'social_media',
      limit: 10
    )
    signals['data'].each do |signal|
      puts "Signal: #{signal['content'][0..100]}..."
    end
  rescue HireCharacter::APIError => e
    puts "Error: #{e.message}"
  end
end

Java

Maven Dependency

<dependency>
    <groupId>ai.hirecharacter</groupId>
    <artifactId>api-client</artifactId>
    <version>1.0.0</version>
</dependency>

Basic Usage

import ai.hirecharacter.Client;
import ai.hirecharacter.models.*;
import ai.hirecharacter.exceptions.APIException;

public class HireCharacterExample {
    public static void main(String[] args) {
        // Initialize the client
        Client client = new Client("YOUR_API_KEY");

        // Get user list
        try {
            UserList users = client.users().list(1, 20);
            for (User user : users.getData()) {
                System.out.println("User: " + user.getName() +
                                 " (" + user.getEmail() + ")");
            }
        } catch (APIException e) {
            System.err.println("Error: " + e.getMessage());
        }
    }

    // Create an assessment
    public Assessment createAssessment(Client client, String candidateId) {
        try {
            AssessmentRequest request = new AssessmentRequest()
                .setCandidateId(candidateId)
                .setAssessmentType("full_character")
                .setIncludeSignals(true);

            Assessment assessment = client.assessments().create(request);
            System.out.println("Assessment created: " +
                             assessment.getAssessmentId());
            return assessment;
        } catch (APIException e) {
            System.err.println("Error: " + e.getMessage());
            return null;
        }
    }

    // Generate a report
    public Report generateReport(Client client, String candidateId) {
        try {
            ReportRequest request = new ReportRequest()
                .setCandidateId(candidateId)
                .setReportType("comprehensive")
                .setFormat("pdf");

            Report report = client.reports().generate(request);
            System.out.println("Report URL: " + report.getDownloadUrl());
            return report;
        } catch (APIException e) {
            System.err.println("Error: " + e.getMessage());
            return null;
        }
    }
}

cURL

Get Users

curl -X GET "https://api.hirecharacter.ai/v1/users?page=1&per_page=20" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Create Assessment

curl -X POST "https://api.hirecharacter.ai/v1/assessments" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "candidate_id": "cnd_abc123",
    "assessment_type": "full_character",
    "include_signals": true
  }'

Search Signals

curl -X GET "https://api.hirecharacter.ai/v1/signals/search?q=John%20Doe&type=social_media" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Generate Report

curl -X POST "https://api.hirecharacter.ai/v1/reports/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "candidate_id": "cnd_abc123",
    "report_type": "comprehensive",
    "include_signals": true,
    "format": "pdf"
  }'

Register Webhook

curl -X POST "https://api.hirecharacter.ai/v1/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yourapp.com/webhook",
    "events": ["assessment.completed", "signal.new"],
    "secret": "your_webhook_secret"
  }'
Pro Tips
  • Always handle rate limiting by implementing exponential backoff
  • Cache assessment results to reduce API calls
  • Use webhooks for real-time updates instead of polling
  • Batch requests when possible to improve performance
  • Store API responses for audit trails and debugging
Need More Examples?

Check out our GitHub repository for complete sample applications in each language.

Contact Support