API Reference

Technical documentation for integrating with the STANDARD platform.

API Access

Public API access is currently in private beta. Contact support@iowire.com for access.

Overview

Base URL

https://standard.iowire.com/api

Authentication

All API requests require authentication via session cookie. API key authentication is also available.

Response Format

All responses are JSON with the following structure:

{
  "success": true,
  "data": { ... },
  "error": null
}

Error responses:

{
  "success": false,
  "data": null,
  "error": "Error message here"
}

Authentication Endpoints

POST /api/auth/login

Authenticate a user and create a session.

{
  "email": "user@example.com",
  "password": "password123"
}

Response:

{
  "success": true,
  "data": {
    "user": {
      "id": 1,
      "email": "user@example.com",
      "display_name": "Artist Name",
      "role": "artist"
    }
  }
}

POST /api/auth/logout

End the current session.

GET /api/auth/me

Get the current authenticated user.

Song Endpoints

POST /api/songs/add

Submit a song for review.

Content-Type: multipart/form-data

title: "My Song"
artist_name: "Artist Name"
song_url: "https://open.spotify.com/track/..."
genre: "pop"
notes: "Looking for feedback on the mix"

Response:

{
  "success": true,
  "data": {
    "song_id": 123,
    "title": "My Song"
  }
}

GET /api/songs

Get all songs for the authenticated user.

Query Parameters:

  • limit - Number of results (default: 20, max: 100)
  • offset - Pagination offset
  • status - Filter by status (pending, reviewed)

Submission Endpoints

POST /api/submissions/create

Create a submission to a reviewer's queue.

{
  "song_id": 123,
  "reviewer_id": 456,
  "session_id": 789,
  "review_type": "standard"
}

GET /api/submissions/{id}

Get details of a specific submission.

GET /api/submissions

Get all submissions for the authenticated user.

Reviewer Endpoints

GET /api/reviewers

Get list of all active reviewers.

Query Parameters:

  • genre - Filter by genre specialty
  • live_only - Only return currently live reviewers

GET /api/reviewers/{slug}

Get reviewer details by room slug.

GET /api/reviewers/{slug}/queue

Get the current queue for a reviewer (if live).

Session Endpoints (Reviewer Only)

POST /api/sessions/create

Create a new review session.

{
  "room_type": "comprehensive",
  "genre_focus": "pop"
}

POST /api/sessions/{id}/live

Set a session to live status.

POST /api/sessions/{id}/end

End a live session.

Feedback Endpoints

POST /api/feedback/reviewer

Submit feedback/rating for a reviewer (as an artist).

{
  "reviewer_id": 456,
  "submission_id": 789,
  "rating": 5,
  "feedback_text": "Great, detailed feedback!"
}

POST /api/feedback/mark-viewed

Mark feedback as viewed (as a reviewer).

Upload Endpoints

POST /api/upload/audio

Upload an audio file directly.

Content-Type: multipart/form-data

file: (binary audio data)
filename: "my-song.mp3"

Supported formats: MP3, WAV, FLAC, M4A

Max file size: 50MB

Error Codes

Code Meaning
400 Bad Request - Invalid parameters
401 Unauthorized - Authentication required
403 Forbidden - Insufficient permissions
404 Not Found - Resource doesn't exist
429 Too Many Requests - Rate limit exceeded
500 Server Error - Something went wrong

Rate Limiting

API requests are rate limited:

  • Standard users: 100 requests/minute
  • Authenticated users: 300 requests/minute

Rate limit headers are included in responses:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1640000000

SDKs & Libraries

Official SDKs are in development:

  • JavaScript/TypeScript (npm)
  • Python (pip)

Contact support@iowire.com for early access.