Documentation

Developer Docs

Everything you need to integrate QuizNap into your applications. REST API, SDKs, and embed tools.

REST API

The QuizNap REST API lets you programmatically create quizzes, manage sessions, and retrieve responses.

Endpoints
GET /v1/public/apps/:slug Get a public quiz by slug
POST /v1/apps/:appId/sessions Start a new quiz session
POST /v1/apps/:appId/sessions/:id/next Submit answer and get next question
POST /v1/apps/:appId/sessions/:id/complete Complete a quiz session
POST /v1/apps/:appId/sessions/:id/identity Set respondent identity
GET /v1/apps/:appId/sessions/:id Get session details and answers

@quiznap/js-sdk

Zero-dependency vanilla JavaScript SDK for interacting with the QuizNap API.

Example @quiznap/js-sdk
import { QuizNapClient } from '@quiznap/js-sdk';

const client = new QuizNapClient({
  baseUrl: 'https://app.quiznap.com/v1',
});

// Get quiz info
const app = await client.apps.getBySlug('my-quiz');

// Start session
const session = await client.sessions.create(app.id);

// Submit answers
await client.sessions.submitNext(app.id, session.id, {
  questionId: 'q1',
  value: 'Answer text',
});

// Complete
await client.sessions.complete(app.id, session.id);

@quiznap/embed

Lightweight embed script for adding quizzes to any website via iframe with auto-resize and event handling.

Example @quiznap/embed
import { QuizNapEmbed } from '@quiznap/embed';

const quiz = QuizNapEmbed.init({
  slug: 'my-quiz',
  container: '#quiz-container',
  onReady: () => console.log('Quiz loaded'),
  onComplete: (data) => {
    console.log('Completed!', data.sessionId);
  },
  onResize: (data) => {
    console.log('Height:', data.height);
  },
});

// Later: quiz.destroy();

@quiznap/react

React hooks for headless quiz integration. Full control over UI with useSession, useQuizNap, and useQuizEvents.

Example @quiznap/react
import { QuizNapProvider } from '@quiznap/react';
import { useSession } from '@quiznap/react';

function App() {
  return (
    <QuizNapProvider baseUrl="https://app.quiznap.com">
      <MyQuiz />
    </QuizNapProvider>
  );
}

function MyQuiz() {
  const {
    status, currentQuestion, progress,
    submitAnswer, complete, start,
  } = useSession('my-quiz', { autoStart: true });

  if (status === 'loading') return <p>Loading...</p>;
  // Render your own UI with full quiz data
}

@quiznap/react-ui

Pre-built React components: Quiz, QuizModal, and QuizPopup. Drop-in components with theme support.

Example @quiznap/react-ui
import { QuizNapProvider } from '@quiznap/react';
import { Quiz, QuizModal } from '@quiznap/react-ui';

function App() {
  return (
    <QuizNapProvider baseUrl="https://app.quiznap.com">
      {/* Inline quiz */}
      <Quiz slug="my-quiz" onComplete={handleComplete} />

      {/* Modal quiz */}
      <QuizModal
        slug="feedback-form"
        open={isOpen}
        onClose={() => setIsOpen(false)}
      />
    </QuizNapProvider>
  );
}

Need Help Integrating?

Our team is here to help you get set up. Reach out for integration support or feature requests.

Contact Developer Support