|  | openapi: 3.0.3 | 
					
						
						|  | info: | 
					
						
						|  | title: BackgroundFX Pro API | 
					
						
						|  | description: | | 
					
						
						|  | AI-powered background removal and replacement API. | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | All API requests require authentication using Bearer tokens. | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | - Free tier: 100 requests/hour | 
					
						
						|  | - Pro tier: 1000 requests/hour | 
					
						
						|  | - Enterprise: Unlimited | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | - Images: 50MB max | 
					
						
						|  | - Videos: 500MB max | 
					
						
						|  | - Batch: 100 files max | 
					
						
						|  | version: 1.0.0 | 
					
						
						|  | contact: | 
					
						
						|  | email: api@backgroundfx.pro | 
					
						
						|  | url: https://backgroundfx.pro | 
					
						
						|  | license: | 
					
						
						|  | name: MIT | 
					
						
						|  | url: https://opensource.org/licenses/MIT | 
					
						
						|  |  | 
					
						
						|  | servers: | 
					
						
						|  | - url: https://api.backgroundfx.pro/v1 | 
					
						
						|  | description: Production server | 
					
						
						|  | - url: https://staging-api.backgroundfx.pro/v1 | 
					
						
						|  | description: Staging server | 
					
						
						|  | - url: http://localhost:8000/v1 | 
					
						
						|  | description: Local development | 
					
						
						|  |  | 
					
						
						|  | security: | 
					
						
						|  | - BearerAuth: [] | 
					
						
						|  |  | 
					
						
						|  | tags: | 
					
						
						|  | - name: Authentication | 
					
						
						|  | description: User authentication and authorization | 
					
						
						|  | - name: Processing | 
					
						
						|  | description: Image and video processing operations | 
					
						
						|  | - name: Projects | 
					
						
						|  | description: Project management | 
					
						
						|  | - name: Backgrounds | 
					
						
						|  | description: Background library and generation | 
					
						
						|  | - name: Users | 
					
						
						|  | description: User profile and settings | 
					
						
						|  | - name: Webhooks | 
					
						
						|  | description: Webhook management | 
					
						
						|  |  | 
					
						
						|  | paths: | 
					
						
						|  | /auth/login: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Authentication] | 
					
						
						|  | summary: User login | 
					
						
						|  | security: [] | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [email, password] | 
					
						
						|  | properties: | 
					
						
						|  | email: | 
					
						
						|  | type: string | 
					
						
						|  | format: email | 
					
						
						|  | password: | 
					
						
						|  | type: string | 
					
						
						|  | minLength: 8 | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: Successful login | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/AuthResponse' | 
					
						
						|  | 401: | 
					
						
						|  | $ref: '#/components/responses/Unauthorized' | 
					
						
						|  |  | 
					
						
						|  | /auth/register: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Authentication] | 
					
						
						|  | summary: Register new user | 
					
						
						|  | security: [] | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [email, password, name] | 
					
						
						|  | properties: | 
					
						
						|  | email: | 
					
						
						|  | type: string | 
					
						
						|  | format: email | 
					
						
						|  | password: | 
					
						
						|  | type: string | 
					
						
						|  | minLength: 8 | 
					
						
						|  | name: | 
					
						
						|  | type: string | 
					
						
						|  | minLength: 2 | 
					
						
						|  | responses: | 
					
						
						|  | 201: | 
					
						
						|  | description: User created successfully | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/AuthResponse' | 
					
						
						|  | 400: | 
					
						
						|  | $ref: '#/components/responses/BadRequest' | 
					
						
						|  |  | 
					
						
						|  | /process/remove-background: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Processing] | 
					
						
						|  | summary: Remove background from image | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | multipart/form-data: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [file] | 
					
						
						|  | properties: | 
					
						
						|  | file: | 
					
						
						|  | type: string | 
					
						
						|  | format: binary | 
					
						
						|  | description: Image file (PNG, JPG, WebP) | 
					
						
						|  | model: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [rembg, u2net, deeplab, custom] | 
					
						
						|  | default: rembg | 
					
						
						|  | quality: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [low, medium, high, ultra] | 
					
						
						|  | default: high | 
					
						
						|  | return_mask: | 
					
						
						|  | type: boolean | 
					
						
						|  | default: false | 
					
						
						|  | edge_refinement: | 
					
						
						|  | type: number | 
					
						
						|  | minimum: 0 | 
					
						
						|  | maximum: 100 | 
					
						
						|  | default: 50 | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: Background removed successfully | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/ProcessingResult' | 
					
						
						|  | 400: | 
					
						
						|  | $ref: '#/components/responses/BadRequest' | 
					
						
						|  | 413: | 
					
						
						|  | $ref: '#/components/responses/PayloadTooLarge' | 
					
						
						|  |  | 
					
						
						|  | /process/batch: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Processing] | 
					
						
						|  | summary: Process multiple files | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | multipart/form-data: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [files] | 
					
						
						|  | properties: | 
					
						
						|  | files: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | type: string | 
					
						
						|  | format: binary | 
					
						
						|  | maxItems: 100 | 
					
						
						|  | options: | 
					
						
						|  | type: string | 
					
						
						|  | description: JSON string of processing options | 
					
						
						|  | responses: | 
					
						
						|  | 202: | 
					
						
						|  | description: Batch job created | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/BatchJob' | 
					
						
						|  |  | 
					
						
						|  | /process/jobs/{jobId}: | 
					
						
						|  | get: | 
					
						
						|  | tags: [Processing] | 
					
						
						|  | summary: Get batch job status | 
					
						
						|  | parameters: | 
					
						
						|  | - name: jobId | 
					
						
						|  | in: path | 
					
						
						|  | required: true | 
					
						
						|  | schema: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: Job status retrieved | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/BatchJob' | 
					
						
						|  | 404: | 
					
						
						|  | $ref: '#/components/responses/NotFound' | 
					
						
						|  |  | 
					
						
						|  | /process/replace-background: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Processing] | 
					
						
						|  | summary: Replace image background | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [image_id, background_id] | 
					
						
						|  | properties: | 
					
						
						|  | image_id: | 
					
						
						|  | type: string | 
					
						
						|  | background_id: | 
					
						
						|  | type: string | 
					
						
						|  | blend_mode: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [normal, multiply, screen, overlay] | 
					
						
						|  | default: normal | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: Background replaced successfully | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/ProcessingResult' | 
					
						
						|  |  | 
					
						
						|  | /backgrounds: | 
					
						
						|  | get: | 
					
						
						|  | tags: [Backgrounds] | 
					
						
						|  | summary: List available backgrounds | 
					
						
						|  | parameters: | 
					
						
						|  | - name: category | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [solid, gradient, pattern, nature, abstract, custom] | 
					
						
						|  | - name: page | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 1 | 
					
						
						|  | - name: limit | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 20 | 
					
						
						|  | maximum: 100 | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: List of backgrounds | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | items: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | $ref: '#/components/schemas/Background' | 
					
						
						|  | total: | 
					
						
						|  | type: integer | 
					
						
						|  | page: | 
					
						
						|  | type: integer | 
					
						
						|  | pages: | 
					
						
						|  | type: integer | 
					
						
						|  |  | 
					
						
						|  | /backgrounds/generate: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Backgrounds] | 
					
						
						|  | summary: Generate AI background | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [prompt] | 
					
						
						|  | properties: | 
					
						
						|  | prompt: | 
					
						
						|  | type: string | 
					
						
						|  | minLength: 3 | 
					
						
						|  | maxLength: 500 | 
					
						
						|  | style: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [realistic, artistic, abstract, gradient] | 
					
						
						|  | default: realistic | 
					
						
						|  | width: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 1920 | 
					
						
						|  | height: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 1080 | 
					
						
						|  | responses: | 
					
						
						|  | 201: | 
					
						
						|  | description: Background generated | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Background' | 
					
						
						|  |  | 
					
						
						|  | /projects: | 
					
						
						|  | get: | 
					
						
						|  | tags: [Projects] | 
					
						
						|  | summary: List user projects | 
					
						
						|  | parameters: | 
					
						
						|  | - $ref: '#/components/parameters/PageParam' | 
					
						
						|  | - $ref: '#/components/parameters/LimitParam' | 
					
						
						|  | - name: search | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: string | 
					
						
						|  | responses: | 
					
						
						|  | 200: | 
					
						
						|  | description: List of projects | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | items: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | $ref: '#/components/schemas/Project' | 
					
						
						|  | total: | 
					
						
						|  | type: integer | 
					
						
						|  |  | 
					
						
						|  | post: | 
					
						
						|  | tags: [Projects] | 
					
						
						|  | summary: Create new project | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [name, type] | 
					
						
						|  | properties: | 
					
						
						|  | name: | 
					
						
						|  | type: string | 
					
						
						|  | type: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [image, video, batch] | 
					
						
						|  | description: | 
					
						
						|  | type: string | 
					
						
						|  | responses: | 
					
						
						|  | 201: | 
					
						
						|  | description: Project created | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Project' | 
					
						
						|  |  | 
					
						
						|  | /webhooks: | 
					
						
						|  | post: | 
					
						
						|  | tags: [Webhooks] | 
					
						
						|  | summary: Register webhook | 
					
						
						|  | requestBody: | 
					
						
						|  | required: true | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | type: object | 
					
						
						|  | required: [url, events] | 
					
						
						|  | properties: | 
					
						
						|  | url: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | events: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [job.completed, job.failed, project.created] | 
					
						
						|  | secret: | 
					
						
						|  | type: string | 
					
						
						|  | responses: | 
					
						
						|  | 201: | 
					
						
						|  | description: Webhook registered | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Webhook' | 
					
						
						|  |  | 
					
						
						|  | components: | 
					
						
						|  | securitySchemes: | 
					
						
						|  | BearerAuth: | 
					
						
						|  | type: http | 
					
						
						|  | scheme: bearer | 
					
						
						|  | bearerFormat: JWT | 
					
						
						|  |  | 
					
						
						|  | parameters: | 
					
						
						|  | PageParam: | 
					
						
						|  | name: page | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 1 | 
					
						
						|  | minimum: 1 | 
					
						
						|  |  | 
					
						
						|  | LimitParam: | 
					
						
						|  | name: limit | 
					
						
						|  | in: query | 
					
						
						|  | schema: | 
					
						
						|  | type: integer | 
					
						
						|  | default: 20 | 
					
						
						|  | minimum: 1 | 
					
						
						|  | maximum: 100 | 
					
						
						|  |  | 
					
						
						|  | schemas: | 
					
						
						|  | AuthResponse: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | token: | 
					
						
						|  | type: string | 
					
						
						|  | refresh_token: | 
					
						
						|  | type: string | 
					
						
						|  | user: | 
					
						
						|  | $ref: '#/components/schemas/User' | 
					
						
						|  |  | 
					
						
						|  | User: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | email: | 
					
						
						|  | type: string | 
					
						
						|  | format: email | 
					
						
						|  | name: | 
					
						
						|  | type: string | 
					
						
						|  | plan: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [free, pro, enterprise] | 
					
						
						|  | created_at: | 
					
						
						|  | type: string | 
					
						
						|  | format: date-time | 
					
						
						|  |  | 
					
						
						|  | ProcessingResult: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | image: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | mask: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | metadata: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | width: | 
					
						
						|  | type: integer | 
					
						
						|  | height: | 
					
						
						|  | type: integer | 
					
						
						|  | format: | 
					
						
						|  | type: string | 
					
						
						|  | processing_time: | 
					
						
						|  | type: number | 
					
						
						|  |  | 
					
						
						|  | BatchJob: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | status: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [pending, processing, completed, failed] | 
					
						
						|  | progress: | 
					
						
						|  | type: number | 
					
						
						|  | minimum: 0 | 
					
						
						|  | maximum: 100 | 
					
						
						|  | total_files: | 
					
						
						|  | type: integer | 
					
						
						|  | processed_files: | 
					
						
						|  | type: integer | 
					
						
						|  | results: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | $ref: '#/components/schemas/ProcessingResult' | 
					
						
						|  | created_at: | 
					
						
						|  | type: string | 
					
						
						|  | format: date-time | 
					
						
						|  |  | 
					
						
						|  | Background: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | url: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | thumbnail: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | category: | 
					
						
						|  | type: string | 
					
						
						|  | tags: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | type: string | 
					
						
						|  |  | 
					
						
						|  | Project: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | name: | 
					
						
						|  | type: string | 
					
						
						|  | type: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [image, video, batch] | 
					
						
						|  | status: | 
					
						
						|  | type: string | 
					
						
						|  | enum: [draft, processing, completed] | 
					
						
						|  | files_count: | 
					
						
						|  | type: integer | 
					
						
						|  | created_at: | 
					
						
						|  | type: string | 
					
						
						|  | format: date-time | 
					
						
						|  |  | 
					
						
						|  | Webhook: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | id: | 
					
						
						|  | type: string | 
					
						
						|  | format: uuid | 
					
						
						|  | url: | 
					
						
						|  | type: string | 
					
						
						|  | format: uri | 
					
						
						|  | events: | 
					
						
						|  | type: array | 
					
						
						|  | items: | 
					
						
						|  | type: string | 
					
						
						|  | active: | 
					
						
						|  | type: boolean | 
					
						
						|  | created_at: | 
					
						
						|  | type: string | 
					
						
						|  | format: date-time | 
					
						
						|  |  | 
					
						
						|  | Error: | 
					
						
						|  | type: object | 
					
						
						|  | properties: | 
					
						
						|  | error: | 
					
						
						|  | type: string | 
					
						
						|  | message: | 
					
						
						|  | type: string | 
					
						
						|  | details: | 
					
						
						|  | type: object | 
					
						
						|  |  | 
					
						
						|  | responses: | 
					
						
						|  | BadRequest: | 
					
						
						|  | description: Bad request | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Error' | 
					
						
						|  |  | 
					
						
						|  | Unauthorized: | 
					
						
						|  | description: Unauthorized | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Error' | 
					
						
						|  |  | 
					
						
						|  | NotFound: | 
					
						
						|  | description: Resource not found | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Error' | 
					
						
						|  |  | 
					
						
						|  | PayloadTooLarge: | 
					
						
						|  | description: File too large | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Error' | 
					
						
						|  |  | 
					
						
						|  | RateLimitExceeded: | 
					
						
						|  | description: Rate limit exceeded | 
					
						
						|  | content: | 
					
						
						|  | application/json: | 
					
						
						|  | schema: | 
					
						
						|  | $ref: '#/components/schemas/Error' |