OpenAPI Specification
Generated from the actual GigPilot AI codebase. Only discovered endpoints are included.
openapi: 3.0.3info: title: GigPilot AI API description: | AI-powered freelancer toolkit API. Provides gig generation, proposal writing, keyword research, pricing optimization, social media management, and more. version: 1.0.0 contact: name: GigPilot AI Support url: https://github.com/anomalyco/gigpilotai/issues
servers: - url: http://localhost:3000 description: Development - url: https://api.gigpilot.ai description: Production
components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT
schemas: SuccessResponse: type: object properties: success: type: boolean example: true message: type: string data: type: object
ErrorResponse: type: object properties: success: type: boolean example: false message: type: string error: type: object
LoginRequest: type: object required: [email] properties: email: type: string format: email fullName: type: string password: type: string minLength: 6
MagicLinkRequest: type: object required: [email] properties: email: type: string format: email
ProposalGenerateRequest: type: object required: [jobDescription, myService] properties: jobDescription: type: string minLength: 10 myService: type: string minLength: 3 tone: type: string provider: type: string
GigGenerateRequest: type: object required: [service] properties: service: type: string minLength: 3 category: type: string provider: type: string
KeywordsFindRequest: type: object required: [service] properties: service: type: string minLength: 2 provider: type: string
PricingOptimizeRequest: type: object required: [experience, category, country, competition, deliveryTimeDays] properties: experience: type: string category: type: string country: type: string competition: type: string enum: [Low, Medium, High] deliveryTimeDays: type: number provider: type: string
GigHealthCheckRequest: type: object required: [title, description] properties: title: type: string minLength: 5 description: type: string minLength: 20 faqs: type: string packages: type: string tags: type: string provider: type: string
PortfolioGenerateRequest: type: object required: [role, skills] properties: role: type: string minLength: 3 skills: type: array items: type: string minItems: 1 provider: type: string
ClientMessageReplyRequest: type: object required: [clientMessage, type] properties: clientMessage: type: string minLength: 5 type: type: string provider: type: string
ReviewAnalyzeRequest: type: object required: [reviewsText] properties: reviewsText: type: string minLength: 10 provider: type: string
SeoAuditRequest: type: object required: [title, description, keywords] properties: title: type: string minLength: 5 description: type: string minLength: 20 keywords: type: array items: type: string minItems: 1 provider: type: string
UpgradeRequest: type: object required: [plan] properties: plan: type: string enum: [Free, Pro, Agency] razorpayPaymentId: type: string coupon: type: string
ConnectSocialRequest: type: object required: [provider, code] properties: provider: type: string code: type: string redirectUri: type: string format: uri
PostCrudRequest: type: object required: [content] properties: id: type: string title: type: string content: type: string minLength: 1 hashtags: type: string mentions: type: string link: type: string mediaUrls: type: array items: type: string status: type: string
PostPublishRequest: type: object required: [accountIds] properties: postId: type: string title: type: string content: type: string url: type: string mediaUrls: type: array items: type: string accountIds: type: array items: type: string minItems: 1
PostScheduleRequest: type: object required: [content, scheduledTime, accountIds] properties: title: type: string content: type: string minLength: 1 url: type: string mediaUrls: type: array items: type: string scheduledTime: type: string format: date-time timezone: type: string accountIds: type: array items: type: string minItems: 1
StorageUploadRequest: type: object required: [filename, data] properties: filename: type: string contentType: type: string default: image/jpeg data: type: string description: Base64-encoded file content
SocialAiGenerateRequest: type: object required: [action] properties: action: type: string enum: [generate, rewrite, suggest] prompt: type: string content: type: string platform: type: string tone: type: string length: type: string
paths: /api/health: get: summary: Health check tags: [Health] responses: '200': description: Server is online content: application/json: schema: type: object properties: status: type: string system: type: string timestamp: type: string
/api/auth/login: post: summary: Login and sync profile tags: [Auth] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LoginRequest' responses: '200': description: Login successful '400': description: Validation failed
/api/auth/magic-link: post: summary: Generate magic link tags: [Auth] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MagicLinkRequest' responses: '200': description: Magic link generated
/api/auth/me: get: summary: Get current user profile tags: [Auth] security: - bearerAuth: [] responses: '200': description: Profile loaded '401': description: Unauthorized
/api/history: get: summary: Get AI history tags: [AI] security: - bearerAuth: [] responses: '200': description: History list delete: summary: Clear all history tags: [AI] security: - bearerAuth: [] responses: '200': description: History cleared
/api/history/{id}: delete: summary: Delete history record tags: [AI] security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string responses: '200': description: Record deleted
/api/favorites/toggle: post: summary: Toggle favorite tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: type: object required: [id] properties: id: type: string responses: '200': description: Favorite toggled
/api/proposal/generate: post: summary: Generate proposal tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProposalGenerateRequest' responses: '200': description: Proposal generated '400': description: Validation failed
/api/gig/generate: post: summary: Generate gig tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GigGenerateRequest' responses: '200': description: Gig generated
/api/keywords/find: post: summary: Find keywords tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/KeywordsFindRequest' responses: '200': description: Keywords found
/api/pricing/optimize: post: summary: Optimize pricing tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PricingOptimizeRequest' responses: '200': description: Pricing optimized
/api/gig/health: post: summary: Check gig health tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GigHealthCheckRequest' responses: '200': description: Health checked
/api/portfolio/generate: post: summary: Generate portfolio tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PortfolioGenerateRequest' responses: '200': description: Portfolio generated
/api/messages/reply: post: summary: Generate client reply tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientMessageReplyRequest' responses: '200': description: Reply generated
/api/reviews/analyze: post: summary: Analyze reviews tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReviewAnalyzeRequest' responses: '200': description: Reviews analyzed
/api/seo/audit: post: summary: Run SEO audit tags: [AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SeoAuditRequest' responses: '200': description: SEO audited
/api/social/accounts: get: summary: List connected accounts tags: [Social] security: - bearerAuth: [] responses: '200': description: Accounts list
/api/social/connect: post: summary: Connect social account tags: [Social] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConnectSocialRequest' responses: '200': description: Account connected
/api/social/posts: get: summary: List posts tags: [Social] security: - bearerAuth: [] responses: '200': description: Posts list post: summary: Create/update post tags: [Social] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostCrudRequest' responses: '200': description: Post saved
/api/social/posts/{id}: delete: summary: Delete post tags: [Social] security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string responses: '200': description: Post deleted
/api/social/publish: post: summary: Publish immediately tags: [Social] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostPublishRequest' responses: '200': description: Post published
/api/social/schedule: post: summary: Schedule post tags: [Social] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostScheduleRequest' responses: '200': description: Post scheduled
/api/social/scheduler/run: post: summary: Run scheduler tags: [Scheduler] responses: '200': description: Scheduler executed
/api/social/analytics: get: summary: Get social analytics tags: [Social] security: - bearerAuth: [] responses: '200': description: Analytics data
/api/social/campaigns: get: summary: List campaigns tags: [Social] security: - bearerAuth: [] responses: '200': description: Campaigns list post: summary: Create/update campaign tags: [Social] security: - bearerAuth: [] responses: '200': description: Campaign saved
/api/social/campaigns/{id}: delete: summary: Delete campaign tags: [Social] security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string responses: '200': description: Campaign deleted
/api/social/media: get: summary: List media tags: [Social] security: - bearerAuth: [] responses: '200': description: Media list post: summary: Add media tags: [Social] security: - bearerAuth: [] responses: '200': description: Media added
/api/social/media/{id}: delete: summary: Delete media tags: [Social] security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string responses: '200': description: Media deleted
/api/social/settings: get: summary: Get social settings tags: [Social] security: - bearerAuth: [] responses: '200': description: Settings put: summary: Update social settings tags: [Social] security: - bearerAuth: [] responses: '200': description: Settings updated
/api/social/ai/generate: post: summary: AI content generation tags: [Social, AI] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SocialAiGenerateRequest' responses: '200': description: Content generated
/api/analytics: get: summary: Get dashboard analytics tags: [Analytics] security: - bearerAuth: [] responses: '200': description: Dashboard data
/api/notifications: get: summary: List notifications tags: [Notifications] security: - bearerAuth: [] responses: '200': description: Notifications list
/api/notifications/unread: get: summary: Get unread count tags: [Notifications] security: - bearerAuth: [] responses: '200': description: Unread count
/api/notifications/read-all: post: summary: Mark all as read tags: [Notifications] security: - bearerAuth: [] responses: '200': description: All marked read
/api/notifications/{id}: delete: summary: Delete notification tags: [Notifications] security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string responses: '200': description: Notification deleted
/api/billing: get: summary: Get billing details tags: [Billing] security: - bearerAuth: [] responses: '200': description: Billing details
/api/billing/upgrade: post: summary: Upgrade plan tags: [Billing] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpgradeRequest' responses: '200': description: Plan upgraded
/api/settings: get: summary: Get settings tags: [Settings] security: - bearerAuth: [] responses: '200': description: Settings put: summary: Update settings tags: [Settings] security: - bearerAuth: [] responses: '200': description: Settings updated
/api/storage/upload: post: summary: Upload file tags: [Storage] security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StorageUploadRequest' responses: '200': description: File uploaded '400': description: Invalid file
