E
EMO APIs
/Documentation
v1.0 — Early Access

EMO APIs Documentation

EMO APIs are AI-powered business intelligence endpoints for forecasting, website audits, offer analysis, and creative performance. They return structured JSON designed to plug directly into apps, automations, and AI workflows.

Base URL

https://ericmoore.online/api

Format

REST · JSON · UTF-8

Auth

Bearer Token (API Key)

Response time

< 2s median

Authentication

All API requests require a Bearer token passed in the Authorization header. Your API key is generated when you request access and can be found in your dashboard.

Never expose your API key in client-side code. Use server-side functions, environment variables, or Supabase Edge Functions.

curl -X #f87171">POST https://ericmoore.online/api/oracle/forecast \
  -H #86efac">"Authorization: Bearer emo_live_sk_••••••••••••••••" \
  -H #86efac">"Content-Type: application/json" \
  -d '{#86efac">"url": "https://example.com", "goal": "conversion"}'

Base URL & Versioning

All endpoints are rooted at the base URL below. API versioning is handled via path prefix.

# Production
https:#71717a">//ericmoore.online/api

# All endpoints follow the pattern:
#f87171">POST https://ericmoore.online/api/{endpoint}

# Examples:
#f87171">POST https://ericmoore.online/api/oracle/forecast
#f87171">POST https://ericmoore.online/api/website/audit
#f87171">POST https://ericmoore.online/api/offer/analyze
#f87171">POST https://ericmoore.online/api/creative/analyze

Error Codes

All errors return a consistent JSON envelope with a machine-readable code, human message, and HTTP status.

#71717a">// All errors return a consistent JSON structure
{
  #86efac">"error": {
    #86efac">"code": "INVALID_API_KEY",        // machine-readable code
    #86efac">"message": "API key is invalid",  // human-readable message
    #86efac">"status": 401                     // HTTP status
  }
}

#71717a">// Error codes:
#71717a">// 400  INVALID_REQUEST    - Missing or malformed params
#71717a">// 401  INVALID_API_KEY    - Key not recognized
#71717a">// 402  INSUFFICIENT_CREDITS - Out of API credits
#71717a">// 422  UNPROCESSABLE_URL  - URL returned no content
#71717a">// 429  RATE_LIMIT_EXCEEDED - Slow down
#71717a">// 500  SERVER_ERROR       - Something broke on our end

Rate Limits

Rate limits are applied per API key per minute. Exceeding limits returns a 429 response.

PlanReq / minMonthly creditsBurst
Sandbox5250No
Growth305,000Yes (60 rpm)
Pro12025,000Yes (240 rpm)
EnterpriseCustomCustomYes
POST/api/oracle/forecast1 credit

Oracle Forecast API

Runs probability-based forecasting on any URL, copy, or content using multi-agent simulation. Returns a structured confidence score, top risks, opportunities, and a recommended next move.

Request Body

urlstringrequired

Full URL of the target website or landing page to analyze.

goalstringrequired

What you want to predict. E.g. 'conversion rate', 'campaign success', 'pricing viability'.

contextstring

Optional context about your business, audience, or constraints. Improves forecast accuracy.

Response Schema

{
  #86efac">"success_probability": 64,
  #86efac">"confidence": "medium",
  #86efac">"top_risks": [
    #86efac">"weak trust positioning",
    #86efac">"unclear CTA"
  ],
  #86efac">"top_opportunities": [
    #86efac">"improve pricing anchor",
    #86efac">"add testimonials"
  ],
  #86efac">"recommended_next_move": "restructure hero and trust sequence",
  #86efac">"signal_breakdown": {
    #86efac">"trust": 42,
    #86efac">"conversion": 61,
    #86efac">"clarity": 57,
    #86efac">"urgency": 38
  },
  #86efac">"credits_used": 1
}
curl -X #f87171">POST https://ericmoore.online/api/oracle/forecast \
  -H #86efac">"Authorization: Bearer YOUR_API_KEY" \
  -H #86efac">"Content-Type: application/json" \
  -d '{
    #86efac">"url": "https://example.com",
    #86efac">"goal": "predict conversion performance"
  }'
POST/api/website/audit1 credit

Website Audit API

Deep-scans a website URL for conversion friction, trust gaps, CTA weaknesses, and UX issues. Returns scored insights and prioritized fixes.

Request Body

urlstringrequired

Full URL of the website to audit.

depthstring

'shallow' (homepage only) or 'deep' (multi-page scan). Default: 'shallow'.

Response Schema

{
  #86efac">"overall_score": 58,
  #86efac">"conversion_issues": [
    #86efac">"Hero CTA is below fold on mobile",
    #86efac">"No social proof visible above fold"
  ],
  #86efac">"trust_gaps": [
    #86efac">"Missing SSL indicators",
    #86efac">"No testimonials or reviews"
  ],
  #86efac">"ux_friction": [
    #86efac">"Form has 8 fields (reduce to 3)",
    #86efac">"Page load > 4.2s"
  ],
  #86efac">"quick_wins": [
    #86efac">"Add one testimonial to hero",
    #86efac">"Move primary CTA above fold"
  ],
  #86efac">"scores": {
    #86efac">"trust": 44,
    #86efac">"ux": 61,
    #86efac">"conversion": 52,
    #86efac">"mobile": 70,
    #86efac">"seo": 65
  },
  #86efac">"credits_used": 1
}
curl -X #f87171">POST https://ericmoore.online/api/website/audit \
  -H #86efac">"Authorization: Bearer YOUR_API_KEY" \
  -H #86efac">"Content-Type: application/json" \
  -d '{#86efac">"url": "https://yoursite.com"}'
POST/api/offer/analyze1 credit

Offer Strength API

Evaluates copy, messaging, and offers for clarity, perceived value, and objection risk before you launch.

Request Body

copystringrequired

The sales copy, headline, or offer description to analyze.

typestring

'landing_page', 'email', 'ad_copy', or 'product_description'. Improves scoring context.

pricenumber

Optional. The price point being offered. Helps evaluate price-to-value alignment.

Response Schema

{
  #86efac">"value_score": 72,
  #86efac">"clarity_score": 68,
  #86efac">"objection_risks": [
    #86efac">"Price not anchored to outcome",
    #86efac">"No urgency or deadline signal"
  ],
  #86efac">"messaging_improvements": [
    #86efac">"Lead with the transformation, not the feature",
    #86efac">"Add a specific result (e.g. '2x revenue in 90 days')"
  ],
  #86efac">"strongest_element": "Clear problem statement",
  #86efac">"weakest_element": "Missing proof or social validation",
  #86efac">"credits_used": 1
}
curl -X #f87171">POST https://ericmoore.online/api/offer/analyze \
  -H #86efac">"Authorization: Bearer YOUR_API_KEY" \
  -H #86efac">"Content-Type: application/json" \
  -d '{
    #86efac">"copy": "Get 3 months of coaching for $997...",
    #86efac">"type": "landing_page"
  }'
POST/api/creative/analyze2 credits

Creative Performance API

Analyzes ad copy, social content, and creative assets to estimate engagement rate, hook strength, and scroll-stopping power.

Request Body

typestringrequired

'ad_copy', 'social_post', 'video_script', or 'image_url'.

contentstringrequired

The creative content string to analyze. For images, provide a publicly accessible URL.

platformstring

'instagram', 'facebook', 'tiktok', 'linkedin', or 'youtube'. Tailors scoring to platform norms.

Response Schema

{
  #86efac">"hook_strength": 81,
  #86efac">"engagement_probability": 74,
  #86efac">"scroll_stop_score": 78,
  #86efac">"emotional_triggers": [
    #86efac">"fear of missing out",
    #86efac">"curiosity gap",
    #86efac">"social proof signal"
  ],
  #86efac">"improvement_suggestions": [
    #86efac">"Introduce a pattern interrupt in line 1",
    #86efac">"Add a concrete number or stat",
    #86efac">"Close with a direct CTA"
  ],
  #86efac">"platform_fit": {
    #86efac">"instagram": 79,
    #86efac">"tiktok": 85,
    #86efac">"linkedin": 52
  },
  #86efac">"credits_used": 2
}
curl -X #f87171">POST https://ericmoore.online/api/creative/analyze \
  -H #86efac">"Authorization: Bearer YOUR_API_KEY" \
  -H #86efac">"Content-Type: application/json" \
  -d '{
    #86efac">"type": "ad_copy",
    #86efac">"content": "Stop scrolling. Your competitor already uses AI...",
    #86efac">"platform": "instagram"
  }'

Try it live

INTERACTIVE

Run a live Oracle Forecast call directly from the browser. Enter any URL below — the API will crawl it, extract behavioral signals, and return a structured forecast. No API key required for the playground.

POST /api/oracle/forecast — Playground
Sandbox Mode · No key required
url

Automation Workflows

Wire the Oracle Forecast API into your automation stack in minutes. Pick your platform for step-by-step setup and copy-ready configs.

Import the workflow JSON directly into n8n to wire Oracle Forecast into any automation.

01

Create API Key credential

In n8n → Credentials, add a new "Header Auth" credential. Set name to Authorization and value to Bearer YOUR_KEY.

02

Add HTTP Request node

Drag an HTTP Request node onto the canvas. Set method to POST and URL to https://ericmoore.online/api/oracle/forecast.

03

Configure the body

Set body type to JSON. Map your input field (e.g. website_url from a form trigger) into the url parameter.

04

Process the response

Add a Code or Set node to extract success_probability, recommended_next_move, and signal_breakdown for downstream routing.

{
  #86efac">"name": "EMO Oracle Forecast",
  #86efac">"nodes": [
    {
      #86efac">"name": "Trigger",
      #86efac">"type": "n8n-nodes-base.manualTrigger",
      #86efac">"position": [240, 300]
    },
    {
      #86efac">"name": "EMO Oracle Forecast",
      #86efac">"type": "n8n-nodes-base.httpRequest",
      #86efac">"position": [460, 300],
      #86efac">"parameters": {
        #86efac">"method": "POST",
        #86efac">"url": "https://ericmoore.online/api/oracle/forecast",
        #86efac">"sendHeaders": true,
        #86efac">"headerParameters": {
          #86efac">"parameters": [
            {
              #86efac">"name": "Authorization",
              #86efac">"value": "Bearer {{ $env.EMO_API_KEY }}"
            },
            {
              #86efac">"name": "Content-Type",
              #86efac">"value": "application/json"
            }
          ]
        },
        #86efac">"sendBody": true,
        #86efac">"bodyContentType": "json",
        #86efac">"jsonBody": {
          #86efac">"url": "={{ $json.website_url }}",
          #86efac">"goal": "predict conversion performance"
        }
      }
    },
    {
      #86efac">"name": "Process Results",
      #86efac">"type": "n8n-nodes-base.set",
      #86efac">"position": [680, 300],
      #86efac">"parameters": {
        #86efac">"values": {
          #86efac">"number": [
            {
              #86efac">"name": "probability",
              #86efac">"value": "={{ $json.success_probability }}"
            }
          ],
          #86efac">"string": [
            {
              #86efac">"name": "next_move",
              #86efac">"value": "={{ $json.recommended_next_move }}"
            }
          ]
        }
      }
    }
  ],
  #86efac">"connections": {
    #86efac">"Trigger": { "main": [[{ "node": "EMO Oracle Forecast" }]] },
    #86efac">"EMO Oracle Forecast": { "main": [[{ "node": "Process Results" }]] }
  }
}

Pro tip: Use webhooks for async flows

Pass a webhook_url in your request body (Growth/Pro plans) to receive results via POST callback instead of waiting inline — perfect for long-running automation chains.

Webhooks

Growth and Pro plans support webhook callbacks for async analysis. Pass a webhook_url in any request body to receive the result via POST when processing completes.

const res = await fetch('https:#71717a">//ericmoore.online/api/oracle/forecast', {
  method: '#f87171">POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https:#71717a">//example.com',
    goal: 'conversion',
    webhook_url: 'https:#71717a">//yourdomain.com/webhooks/emo', // async callback
  }),
});

#71717a">// Immediate response: { "job_id": "job_abc123", "status": "queued" }
#71717a">// Webhook fires when complete with full result payload

Credits & Usage

Every API call consumes credits based on the endpoint and analysis depth. Credits are returned in every response under credits_used.

EndpointCreditsNotes
/api/oracle/forecast1Standard forecast
/api/website/audit12 for deep scan
/api/offer/analyze1Standard analysis
/api/creative/analyze2Image analysis: 3 credits

Ready to build?

Request API access and get your key within 24 hours.