Skip to main content
Try prompt optimization for free with our free tier. Perfect for experimentation and learning before committing to paid usage.

How It Works

  1. Add free_tier = true to your training config
  2. Set proposer_effort to LOW or MEDIUM (required for free tier)
  3. Your job runs using cost-effective models automatically selected by the backend
  4. Usage counts against your organization’s free tier limits
  5. When limits are reached, simply remove free_tier = true to run as paid

Eligible Proposer Effort Levels

Free tier jobs must use one of the following proposer_effort levels:
LevelDescription
LOW_CONTEXTFastest and cheapest. Uses minimal context for proposals.
LOWGood balance of speed and quality. Default for free tier.
MEDIUMHigher quality proposals with moderate cost.
proposer_effort = "HIGH" is not available on free tier. If you need higher quality proposals, remove free_tier = true to run as a paid job.

Rate Limits (Per Organization)

ResourceDaily LimitMonthly Limit
Jobs550
Rollouts2,00020,000
Proposals4004,000
Spend$20$100
These limits are per organization, not per user. All users in your organization share the same free tier quota.

Usage

Basic Example (GEPA)

Add free_tier = true to your training config:
[prompt_learning]
algorithm = "gepa"
container_url = "https://your-container.example.com"
free_tier = true  # Enable free tier

[prompt_learning.gepa]
env_name = "your-task"
proposer_effort = "LOW"  # Required: LOW_CONTEXT, LOW, or MEDIUM

[prompt_learning.gepa.rollout]
budget = 500

[prompt_learning.gepa.evaluation]
seeds = { start = 0, end = 100 }

# ... rest of your config

Running with CLI

synth train --config my-config.toml
The CLI will automatically detect free_tier = true and validate your configuration.

What Happens When Limits Are Exceeded

When you exceed your free tier limits, new jobs are rejected with a clear error message:
{
  "error": "free_tier_limit_exceeded",
  "message": "Monthly free tier job limit (50) exceeded.",
  "usage": {
    "jobs_this_month": 50,
    "rollouts_this_month": 15000,
    "spend_this_month_usd": 45.00
  },
  "hint": "Remove 'free_tier = true' from your config to run as a paid job with no limits."
}
To continue:
  1. Wait for limits to reset (daily limits reset at midnight UTC, monthly limits roll over 31 days)
  2. Remove free_tier = true from your config to run as a paid job

Upgrading to Paid

Simply remove free_tier = true from your config:
[prompt_learning]
algorithm = "gepa"
# free_tier = true  # Remove or comment out this line

[prompt_learning.policy]
model = "gpt-4o"  # Use any model you want
provider = "openai"

[prompt_learning.gepa]
proposer_effort = "HIGH"  # Unlock best proposer models
Paid jobs have:
  • No rate limits
  • Access to all proposer effort levels including HIGH
  • Priority scheduling

FAQ

No! Free tier is available to all signed-in users. You only need payment info when you want to run paid jobs.
Free tier supports LOW_CONTEXT, LOW, and MEDIUM proposer effort levels. If you set proposer_effort = "HIGH" with free_tier = true, your job will be rejected. Either use a lower effort level or remove free_tier = true to run as paid.
Jobs are not interrupted mid-execution. Limits are checked at job start time. If your job exceeds spend limits during execution, it will complete but count against your limits.
Contact us at support@synth.com to discuss custom limits for your organization.