Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/KingPsychopath/oooc-fete-finder/llms.txt

Use this file to discover all available pages before exploring further.

The event submission endpoint allows hosts to propose events for inclusion in the OOOC Fête Finder calendar. All submissions are subject to review and spam detection.

POST /api/event-submissions

Submits a new event proposal for review. Submissions are checked against multiple rate limits and spam signals before being accepted into the review queue.

Headers

Content-Type
string
required
Must be application/json

Request body

eventName
string
required
Event name (2-180 characters)
date
string
required
Event date (max 40 characters)
startTime
string
required
Event start time (max 40 characters)
location
string
required
Event location or venue (2-240 characters)
hostEmail
string
required
Host contact email (valid email, max 254 characters)
HTTP(S) URL proving the event exists (max 2000 characters)Examples: event website, Facebook event, Eventbrite page, venue announcement
endTime
string
Event end time (max 40 characters)
genre
string
Event genre or category (max 120 characters)
price
string
Price information (max 80 characters)
age
string
Age restrictions (max 80 characters)
indoorOutdoor
string
Venue setting: indoor, outdoor, or mixed (max 80 characters)
notes
string
Additional notes or details (max 3000 characters)
arrondissement
string
Paris arrondissement (max 32 characters)
formStartedAt
string
ISO 8601 timestamp when user began filling the form (used for spam detection)
honeypot
string
Honeypot field - should always be empty (used for spam detection)

Response

success
boolean
required
Indicates if the submission was accepted
message
string
Success message: "Thanks, your event submission has been received for review."
error
string
Error message (returned on failure)
issues
array
Detailed validation errors (when validation fails)

Rate limits

Submissions are protected by multiple rate limits:
  • IP-based: 20 requests per 10 minutes per IP
  • Email+IP-based: 5 requests per hour per email/IP combination
  • Fingerprint-based: 1 submission per 24 hours for identical event details
When rate limited, the response includes a Retry-After header indicating seconds to wait.

Spam detection

Submissions are automatically evaluated for spam signals:
  • Honeypot field filled: If the honeypot field contains any value, the submission is automatically declined
  • Completed too fast: If formStartedAt indicates form completion in less than 4 seconds, the submission is flagged
Submissions with spam signals are automatically declined but still return a success response to avoid revealing detection methods.

Service availability

The endpoint checks if event submissions are enabled in the system settings. When disabled, it returns:
{
  "success": false,
  "error": "Event submissions are temporarily closed."
}
Status code: 503 Service Unavailable

Examples

const response = await fetch('/api/event-submissions', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    eventName: 'Jazz Night at Le Sunset',
    date: '2026-03-15',
    startTime: '20:00',
    endTime: '23:30',
    location: 'Le Sunset, 60 Rue des Lombards, 75001 Paris',
    hostEmail: 'contact@lesunset.com',
    proofLink: 'https://www.lesunset.com/events/jazz-night-march',
    genre: 'Jazz',
    price: '15€',
    age: '18+',
    indoorOutdoor: 'indoor',
    arrondissement: '1st',
    notes: 'Featuring local and international artists',
    formStartedAt: new Date(Date.now() - 30000).toISOString(),
    honeypot: ''
  })
});

const data = await response.json();
// {
//   "success": true,
//   "message": "Thanks, your event submission has been received for review."
// }