# AI-Now Image and Video Generation API Documentation

## Introduction

This API provides access to various AI models for generating music, images, and videos based on text prompts. It supports multiple models with different capabilities and token costs.

## Authentication

Authentication is required for all API requests. Use Bearer token authentication by including an API key in the Authorization header:

```
Authorization: Bearer YOUR_API_KEY
```

To obtain an API key, contact [email protected].

## API Endpoints

### Ping

Endpoint: `GET /api/ping`

Use this endpoint to check if the API is operational.

**Response:**
```
pong
```

### Generate

Endpoint: `POST /api/generate`

This endpoint generates music, images, or videos based on the specified model and prompt.

**Request Body:**

```json
{
  "model": "string",
  "prompt": "string",
  "style": "string" (optional)
}
```

- `model`: The AI model to use (e.g., "suno", "luma", "pika", "run")
- `prompt`: The text prompt for generation
- `style`: Optional style parameter for some models

**Response:**

The response is a server-sent event stream. Events include:

- Processing updates
- Error messages
- Final result with generated content URL

## Models

1. **Suno** (Music Generation)
   - Token Cost: 10
   - Generation Time: 1-3 minutes

2. **Luma** (Video Generation)
   - Token Cost: 30
   - Generation Time: Variable, may fail during peak hours

3. **Pika** (Video Generation)
   - Token Cost: 10
   - Generation Time: 1-3 minutes

4. **Run** (Video Generation)
   - Token Cost: 30
   - Generation Time: 1-3 minutes

## Styles

### Pika API Styles

- Anime (value: '1')
- Moody (value: '2')
- 3D (value: '3')
- Watercolor (value: '4')
- Natural (value: '5')
- Claymation (value: '6')
- Black & White (value: '7')

### Run API Styles

- Abandoned (value: 'abandoned')
- Abstract Sculpture (value: 'abstract_sculpture')
- Anime (value: 'anime')
- Cartoon (value: 'cartoon')
- Cine Lens (value: 'cine_lens')
- Claymation (value: 'claymation')
- Concept Art (value: 'concept_art')
- Digital Art (value: 'digital_art')
- Forestpunk (value: 'forestpunk')
- Frost (value: 'frost')
- Graphic Novel (value: 'graphic_novel')
- Graphite (value: 'graphite')
- Isometric 3D (value: 'isometric_3d')
- Low Poly 3D (value: 'low_poly_3d')
- Marker Drawing (value: 'marker_drawing')
- Moody Film (value: 'moody_film')
- Pixel Art (value: 'pixel_art')
- Retro (value: 'retro')
- Sci-fi Art (value: 'sci_fi_art')
- Stickers (value: 'stickers')
- Storyboard (value: 'storyboard')
- Thriller (value: 'thriller')
- 3D Cartoon (value: '3d_cartoon')
- 3D Render (value: '3d_render')
- 80s Vaporwave (value: '80s_vaporwave')

## Error Handling

The API returns appropriate HTTP status codes and error messages:

- 401: Unauthorized (missing or invalid API key)
- 418: Insufficient tokens
- 500: Internal Server Error

Error responses are in JSON format:

```json
{
  "status": "Error",
  "message": "Error description"
}
```

## Rate Limiting and Tokens

Each API key has a token balance. Tokens are deducted for each generation request based on the model used. Ensure your account has sufficient tokens before making requests.

## Examples

### Generate a song using Suno

**Request:**

```bash
curl -X POST https://api.ai-now.space/api/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno",
    "prompt": "A upbeat pop song about summer"
  }'
```

**Response:**

The response is a server-sent event stream. Here's an example of the events you might receive:

```
data: {"status": "Processing started"}

data: {"status": "Processing"}

data: {"status": "Cookie generated"}

data: {"status": "Processing"}

data: {"status": "Completed", "url": "https://dl.ai-now.space/summer_pop_song_12345.mp3"}
```

### Generate a video using Pika with a specific style

**Request:**

```bash
curl -X POST https://api.ai-now.space/api/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "pika",
    "prompt": "A serene lake surrounded by mountains",
    "style": "4"
  }'
```

**Response:**

```
data: {"status": "Processing started"}

data: {"status": "Processing"}

data: {"status": "Cookie generated"}

data: {"status": "Processing"}

data: {"status": "Processing"}

data: {"status": "Completed", "url": "https://dl.ai-now.space/serene_lake_mountains_67890.mp4"}
```

In these examples, the final event contains a `url` field with the download link for the generated content. The URL structure is:

```
https://dl.ai-now.space/<generated_file_name>.<extension>
```

Where:
- `<generated_file_name>` is a unique identifier for the generated content
- `<extension>` is the appropriate file extension for the content type (e.g., ".mp3" for audio, ".mp4" for video)

Note that the actual file names and identifiers will vary with each generation.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9