# Ruby SDK Quickstart

> Install the Copyleaks Ruby SDK, authenticate, and submit your first scan in under 5 minutes with this step-by-step guide.

This guide will walk you through installing the official Ruby SDK and running your first scan. In just a few minutes, you'll be able to check content for plagiarism, AI-generated text, and more directly from your Ruby application.

Before you start, ensure you have the following:
- An active Copyleaks account. If you don't have one, **[sign up for free](https://api.copyleaks.com/signup)**.
- You can find your API key on the **[API Dashboard](https://api.copyleaks.com/dashboard)**.
## Get Started

<Steps>
  <Step title="Installation">
      First, install the official `plagiarism-checker` gem from RubyGems into your project.

      ```bash
      gem install plagiarism-checker
      ```
  </Step>

  <Step title="Quick Example: Scan Text">
      <Warning>
      Remember to replace the placeholder credentials and webhook URL with your actual values.
      </Warning>

      ```ruby title="scan.rb"
      require 'copyleaks'
      require 'base64'

      # --- Your Credentials ---
      USER_EMAIL = 'YOUR_EMAIL_ADDRESS'
      USER_API_KEY = 'YOUR_API_KEY'
      WEBHOOK_URL = 'https://your-server.com/webhook/{STATUS}'
      # --------------------

      begin
        # Log in to the Copyleaks API
        puts "Authenticating..."
        copyleaks = Copyleaks::API.new
        auth_token = copyleaks.login(USER_EMAIL, USER_API_KEY)
        puts " Logged in successfully!"

        # Prepare your content for scanning
        puts "Submitting text for scanning..."
        scan_id = Time.now.to_i.to_s
        text_to_scan = 'Hello world, this is a test.'
        base64_content = Base64.strict_encode64(text_to_scan)

        # Configure the scan
        webhooks = Copyleaks::SubmissionWebhooks.new(WEBHOOK_URL)
        properties = Copyleaks::SubmissionProperties.new(webhooks)
        properties.sandbox = true # Turn on sandbox mode for testing

        submission = Copyleaks::CopyleaksFileSubmissionModel.new(
          base64_content,
          'test.txt',
          properties
        )
        
        # Submit the scan to Copyleaks
        copyleaks.submit_file(auth_token, scan_id, submission)
        puts " Scan submitted successfully! Scan ID: #{scan_id}"
        puts "You will be notified via your webhook when the scan is complete."

      rescue StandardError => e
        puts " An error occurred: #{e.message}"
      end
      ```
  </Step>

  <Step title="Understanding the Code">
      The example code performs four main actions to submit a scan:

      1.  **Login:** It authenticates with your email and API key to get a secure login token, which is required for all subsequent requests.
      2.  **Prepare Content:** It takes a simple string of text and encodes it into Base64 format.
      3.  **Configure Scan:** It creates a `SubmissionProperties` object containing `SubmissionWebhooks` to define the scan's behavior. We enable `sandbox` mode for safe testing and provide the webhook URL.
      4.  **Submit for Scanning:** It creates a `CopyleaksFileSubmissionModel` with the content and properties, then sends it to the Copyleaks API. The process is asynchronous; Copyleaks will notify your webhook URL once the scan is complete.
  </Step>
</Steps>

## Next Steps

<CardGroup cols={2}>
  <Card title="GitHub Repository" icon="github" href="https://github.com/Copyleaks/Ruby-Plagiarism-Checker">Check the official SDK repository on GitHub for more examples and details.</Card>
  <Card title="RubyGems Package" icon="gem" href="https://rubygems.org/gems/plagiarism-checker">View the official package on RubyGems.org to see all available versions.</Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Check for Plagiarism" icon="magnifying-glass" href="/guides/authenticity/detect-plagiarism-text">
    Detect plagiarism in text documents using the Copyleaks API. Search billions of sources to find unoriginal content.
  </Card>
  <Card title="Detect AI-Generated Content" icon="robot" href="/guides/ai-detector/ai-text-detection">
    Detect AI-generated text via sync or async API calls. This guide covers sync detection, see the Authenticity API Guide for async.
  </Card>
  <Card title="Assess Grammar and Writing Quality" icon="spell-check" href="/guides/writing/check-grammar">
    Get writing and grammar suggestions via API. Authenticate, submit text, and access full details in the docs.
  </Card>
  <Card title="Moderate Text" icon="shield-halved" href="/guides/moderation/moderate-text">
    Scan and moderate text content for unsafe or policy-relevant material across 10+ categories.
  </Card>
</CardGroup>
